Go to the documentation of this file.
12 #undef DOGRIDSECTIONING
13 #undef MERGEDC2EA2CMETHODEM
14 #undef MERGEDC2EA2CMETHODMA
15 #undef MERGEDC2EA2CMETHOD
17 #undef ACCURATESOURCEDIAG
20 #undef WENO_REDUCE_A2C_LOOK_OTHER_DIRECTIONS
21 #undef WENO_USE_PRIM_REDUCTION
22 #undef LIMIT_FLUXC2A_PRIM_CHANGE
45 #undef EVOLVEMETRICSUBSTEP
46 #undef LIMITDTWITHSOURCETERM
48 #undef USEGRAVITYDTINDTLIMIT
49 #undef RESTRICTDTSETTINGINSIDEHORIZON
54 #undef ROEAVERAGEDWAVESPEED
56 #undef STOREWAVESPEEDS
57 #undef USESTOREDSPEEDSFORFLUX
59 #undef PRECISEINVERSION
62 #undef REMOVERESTMASSFROMUU
65 #undef UTOPRIMTRYAGAIN
67 #undef CHECKONINVERSION
68 #undef CHECKONINVERSIONRAD
70 #undef WHICHENTROPYEVOLVE
72 #undef FIXUPAFTERRESTART
74 #undef GAMMAPERCDIFFMAX
78 #undef HYDROLIMADJUSTONLY
80 #undef HYDROFLUXADJUSTONLY
83 #undef STEPOVERNEGRHOU
85 #undef UTOPRIMFAILRETURNTYPE
89 #undef DOSTOREPOSITIONDATA
93 #undef FIXGDETSPC_WHEN_1DRADIAL
99 #undef ANALYTICCONNECTION
100 #undef ANALYTICSOURCE
101 #undef OUTFLOWAVOIDBC
102 #undef FLUXDIMENSPLIT
105 #undef BOUNDFLUXRECON
106 #undef DOENOFLUXMEMORY
107 #undef BOUNDARYINTERPADJUST
109 #undef CALCFARADAYANDCURRENTS
110 #undef WHICHCURRENTCALC
117 #undef ZEROOUTFLOWFLUX
122 #undef HORIZONSUPERFAST
124 #undef USEAVGPRIMITIVEFORWENOFLAT
125 #undef USEPRIMITIVEFROMAVGCONSERVED
126 #undef CONTACTINDICATOR
128 #undef SUPERFASTDIVREDUCE
130 #undef SHOCKINDICATOR
161 #define DOYFL 2 // track floors as scalars
163 #define ACCURATESOURCEDIAG 2 // 2 means full component decomposition is accurate as well as sum.
164 #define ACCURATEDIAG 1 // 1 means fluxes are accurate
167 #define MAXWELL PRIMMAXWELL
168 #define TRACKVPOT 1 // now on by default
169 #define EVOLVEWITHVPOT 0 // not on by default
170 #define DOGRIDSECTIONING 0 // not on by default
171 #define MERGEDC2EA2CMETHODEM 0
172 #define MERGEDC2EA2CMETHODMA 0
173 #define MERGEDC2EA2CMETHOD 0
174 #define WENO_REDUCE_A2C_LOOK_OTHER_DIRECTIONS 1
176 #define WENO_USE_PRIM_REDUCTION 1
177 #define LIMIT_FLUXC2A_PRIM_CHANGE 0
182 #define ALLOWMETRICROT 0 // WALD->1
183 #if(ALLOWMETRICROT==1)
185 #define CONNAXISYMM 0 //required to be 0 if really rotating metric
187 #define DOMIXTHETAPHI 1
192 #undef DOPOLEGAMMADEATH
195 #define DOPOLEDEATH 1
197 #define DOPOLESMOOTH 0 // GODMARK: Need to reject outliers
198 #define DOPOLEGAMMADEATH 1
202 #undef IF3DSPCTHENMPITRANSFERATPOLE
203 #define IF3DSPCTHENMPITRANSFERATPOLE 0 // need to reject outliers and use full 3D info before this is used again. Otherwise (more) problems at r>rbr when hyperexpoential grid is used.
207 #define SPLITNPR 0 // TESTING
208 #define FIELDSTAGMEM 1 // testing
209 #define HIGHERORDERMEM 0
210 #define MAXBND 4 // 4 for PARAFLAT, 6 for WENO5BND wo/a2c stuff : 11 for full point-field FLUXRECON method
211 #define PRODUCTION 1 // WALDPROD
215 #define MAILWHENDONE 1
216 #define MAILFROMREMOTE 0
217 #define REMOTEHOST "relativity.cfa.harvard.edu"
218 #define EMAILADDRESS "jmckinney@cfa.harvard.edu"
219 #define EMAILMESSAGE "Done with GRMHD run DEFAULT"
225 #define DO_WENO_DEBUG 0
227 #define DOEVOLVEMETRIC 0
228 #define EVOLVEMETRICSUBSTEP 1 // evolve metric every substep
229 #define LIMITSOURCES 0
230 #define LIMITDTWITHSOURCETERM 0 // causes problems, drops dt too low
231 #define USEGRAVITYDTINDTLIMIT 0
232 #define RESTRICTDTSETTINGINSIDEHORIZON 2
236 #define DOSELFGRAVVSR 0
237 #define DOFIELDLINE 1
238 #define ROEAVERAGEDWAVESPEED 0
242 #if(1 || SPLITNPR==1 || FIELDSTAGMEM==1) // should also be on if FLUXB==FIELDSTAG
243 #define STOREWAVESPEEDS 2 // no choice
245 #define STOREWAVESPEEDS 0 // choice
248 #define USESTOREDSPEEDSFORFLUX (STOREWAVESPEEDS>0) // choice really
249 #define VCHARTYPE VERYLOCALVCHAR
250 #define PRECISEINVERSION 1
251 #define WHICHVEL VELREL4
252 #define WHICHEOM WITHGDET
254 #define REMOVERESTMASSFROMUU 2
255 #define RELTYPE RELEOM
256 #define EOMTYPE EOMGRMHD
258 #define EOMRADTYPE EOMRADM1CLOSURE
261 #define UTOPRIMTRYAGAIN 0
262 #define WHICHEOS IDEALGAS
264 #define CHECKONINVERSION 1 // can slow things down
265 #define CHECKONINVERSIONRAD 1 // can independently check radiation inversion when no corrections
267 #if(DODISS || DOLUMVSR || DODISSVSR)
269 #define DOENTROPY DOEVOLVEENTROPY
270 #define WHICHENTROPYEVOLVE EVOLVEFULLENTROPY
273 #define DOENTROPY DONOENTROPY
274 #define WHICHENTROPYEVOLVE EVOLVESIMPLEENTROPY
279 #define DOENTROPY DOEVOLVEENTROPY
284 #define FIXUPAFTERINIT 1
285 #define FIXUPAFTERRESTART 1
287 #define CHECKSOLUTION 0 // can cause erratic behavior near BH -- when gamma jumps are relatively large this averages causing large heating -- could just use internal energy check
289 #define GAMMAPERCDIFFMAX (2.0)
290 #define UPERCDIFFMAX (1E3) // 10.0 too restrictive
291 #define LIMADJUST LIMITERFIXED
292 #define HYDROLIMADJUSTONLY 0
293 #define FLUXADJUST FLUXFIXED
294 #define HYDROFLUXADJUSTONLY 0
303 #define STEPOVERNEGU NEGDENSITY_ALWAYSFIXUP
304 #define STEPOVERNEGRHO NEGDENSITY_ALWAYSFIXUP
305 #define STEPOVERNEGRHOU NEGDENSITY_ALWAYSFIXUP
307 #define UTOPRIMADJUST UTOPRIMAVG
308 #define UTOPRIMFAILRETURNTYPE UTOPRIMRETURNADJUSTED
309 #define SMOOTHSING 0 // near BH
310 #define COORDSINGFIX (1) // for FLUXB==FLUXCTSTAG
314 #define SINGSMALL (10000*NUMEPSILON) // must be larger than machine precision to work for outer M_PI boundary!
317 #define DOSTOREPOSITIONDATA 1 // DEBUG
318 #define CONNDERTYPE DIFFGAMMIE // DEBUG
321 #define GDETVOLDIFF 0 // doesn't help much
322 #define FIXGDETSPC_WHEN_1DRADIAL 1
325 #define JONCHECKS 1 //SASMARK - do I need this?
326 #define JONCHECKS2 1 //SASMARK - do I need this?
328 #define ANALYTICGCON 0
329 #define ANALYTICCONNECTION 0 //SASMARK - Don't I need this?
330 #define ANALYTICSOURCE 0
331 #define OUTFLOWAVOIDBC 0
332 #define FLUXDIMENSPLIT PERFECTUNSPLIT
333 #define A2CDIMENSPLIT PERFECTUNSPLIT
335 #define BOUNDFLUXRECON 0 // can set this to 1 if want to bound fluxes instead for FLUXRECON method (may be useful near poles)
336 #define DOENOFLUXMEMORY 0
337 #define BOUNDARYINTERPADJUST 0 //should be set to zero always
338 #define COMPUTEFRDOT 0
339 #define CALCFARADAYANDCURRENTS 0 // WALD->1
340 #define WHICHCURRENTCALC CURRENTCALC1
345 #define EVOLVECHECKS 1
346 #define FIXUPZONES FIXUP1ZONE
347 #define HLLBOUNDARY 0
349 #define ZEROOUTFLOWFLUX 0
350 #define ZEROPOLEFLUX 0
353 #define HORIZONSUPERFAST 0
356 #define VARTOINTERP PRIMTOINTERP_GDETFULLVERSION
361 #undef VARTOINTERPFIELD
363 #define VARTOINTERPFIELD NOFIELDRESCALE
364 #define RESCALEINTERP 1
365 #undef RESCALEINTERPFLUXCTSTAG
366 #define RESCALEINTERPFLUXCTSTAG 1 // WALD: 0->1
367 #define DOEXTRAINTERP 0
369 #define USEAVGPRIMITIVEFORWENOFLAT 1
370 #define USEPRIMITIVEFROMAVGCONSERVED 0
371 #define CONTACTINDICATOR 0
372 #define COMPUTEDRHODP 1
373 #define SUPERFASTDIVREDUCE 0
374 #define MINPREFORDER 3
375 #define SHOCKINDICATOR 1
376 #define WHICHPARA PARA4
378 #undef DO_VORTICITY_IMAGE
379 #define DO_VORTICITY_IMAGE 0
381 #define HOT2ENTROPY 1
383 #define ENTROPY2COLD 1
385 #define ACCURATESINCOS 1
388 #define FLIPGDETAXIS 1
394 #undef NOFLUXCTONX1DN
395 #define NOFLUXCTONX1DN 0
397 #undef NUMPANALYTICOTHER
401 #define DODUMPOTHER 0
406 #undef OUTERRADIALSUPERFAST
407 #define OUTERRADIALSUPERFAST 0 // can be better, but can also be much worse.
416 #undef USERRESETREGION
417 #define USERRESETREGION 0
428 #undef DODISSMEASUREDUMP
429 #define DODISSMEASUREDUMP 0
432 #undef DODEBUGDUMP // very large, only for speed debug
433 #define DODEBUGDUMP 0
439 #undef DOFLOORDUMP // for accounting for energy from floor and controls if radial fluxes are dumped
440 #define DOFLOORDUMP 0
452 #define DOIMAGEDUMP 0
476 #define RADBEAM2D (1) // beam of light in SPC
477 #define RADTUBE (6) // radiative shock tubes as in Farris et al 09 - assumes Edd.approximation which is currently not handled
478 #define RADBONDI (7) // like in Fragile's paper (called BONDI in koral)
479 #define RADPULSE (10) // radiative blob spreading around
480 #define RADSHADOW (11) // radiative shadow
481 #define RADATM (12) // atmosphere enlighted
482 #define RADPULSEPLANAR (1000) // like RADPULSE but with scattering
483 #define RADWAVE (15) // 1d linear rad wave with periodic BC
484 #define RADPULSE3D (16) // radiative blob spreading around
485 #define RADDBLSHADOW (17) // radiative shadow with two beams inclined
486 #define ATMSTATIC (18) // simple hydrostatic atmosphere in SPC
487 #define RADBEAM2DKS (19) // like RADBEAM2D, just chooses MCOORD KSCOORDS
488 #define RADBEAMFLAT (24) // beam of light in Cartesian
489 #define RADDONUT (25) // 2d radiative Polish donut in KS (called RDONUT in koral. Similar setup to RADNT.)
490 #define RADBEAM2DKSVERT (26) // 2d radiative beam in r,theta plane (does more than KS)
491 #define FLATNESS (27) // flat (koral: but with non-zero four-force)
492 #define RADWALL (29) // flat with wall
493 #define RADNT (30) // emission from midplane
494 #define RADFLATDISK (31) // emission from flat disk (called FLATDISK in koral. Very similar to RADNT.)
495 #define RADCYLBEAM (32) // beam towards the axis in cylindrical (called CYLBEAM in koral. Somewhat similar to RADFLATDISK but in CYL coords.)
496 #define RADDOT (33) // radiating dot (Olek changes this while I was testing)
497 #define RADCYLBEAMCART (40) // similar to RADCYLBEAM but in cartesian
508 #define RADDOTFLAT (41) // similar to RADDOT but in cartesian (well, RADDOT was similar, but still different after Olek changes)
509 #define RVDONUT (42) // radiative and viscous
510 #define RVDONUTIN (43) // radiative and viscous dougnut inflowing
511 #define RADNTCYL (44) // emission from midplane in cylindrical
514 #define RADINFALL (2) // RADBEAM2D with FLATBACKGROUND=0 is like this
515 #define DONUT (3) // initboundcode
619 #define MPERSUN (6.77255E-1)
632 #if(WHICHPROBLEM==FLATNESS)
634 #undef WHICHRADSOURCEMETHOD
637 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
643 #define MCOORD CARTMINKMETRIC2
650 #if(WHICHPROBLEM==RADPULSE || WHICHPROBLEM==RADPULSEPLANAR)
653 #define RADSHOCKFLAT 1
656 #define FORCESOLVEL 0 // for testing against koral
664 #if(WHICHPROBLEM==RADPULSE3D)
673 #if(WHICHPROBLEM==RADPULSE || WHICHPROBLEM==RADPULSEPLANAR || WHICHPROBLEM==RADPULSE3D)
675 #undef WHICHRADSOURCEMETHOD
678 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
682 #define MCOORD CARTMINKMETRIC2
691 #if(WHICHPROBLEM==RADBEAMFLAT)
694 #define FORCESOLVEL 0 // to compare against koral
697 #define RADSHOCKFLAT 1
699 #undef WHICHRADSOURCEMETHOD
702 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
709 #define N1 31 // making like problem24 in koral code
710 #define N2 31 // making like problem24 in koral code
713 #define MCOORD CARTMINKMETRIC2
722 #if(WHICHPROBLEM==RADTUBE)
726 #define EOMRADTYPE EOMRADM1CLOSURE
728 #undef WHICHRADSOURCEMETHOD
732 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
739 #define MCOORD CARTMINKMETRIC2
750 #if(WHICHPROBLEM==RADSHADOW)
754 #define EOMRADTYPE EOMRADM1CLOSURE
756 #undef WHICHRADSOURCEMETHOD
760 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
767 #define MCOORD CARTMINKMETRIC2
778 #if(WHICHPROBLEM==RADDBLSHADOW)
782 #define EOMRADTYPE EOMRADM1CLOSURE
784 #undef WHICHRADSOURCEMETHOD
788 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
792 #define N1 100 // paper
794 #define N2 50 // paper
797 #define MCOORD CARTMINKMETRIC2
807 #if(WHICHPROBLEM==RADBEAM2D || WHICHPROBLEM==RADBEAM2DKS)
810 #define FORCESOLVEL 0 // doesn't seem to help avoid failures for this test.
814 #define RADSHOCKFLAT 1
816 #undef WHICHRADSOURCEMETHOD
819 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
826 #define N3 60 // so like koral paper.
829 #if(WHICHPROBLEM==RADBEAM2D)
831 #define MCOORD BLCOORDS // default koral is a=0 BLCOORDS
832 #elif(WHICHPROBLEM==RADBEAM2DKS)
833 #define MCOORD KSCOORDS
842 #if(WHICHPROBLEM==RADBEAM2DKSVERT)
845 #undef FORCEGDETPOSITIVE
846 #define FORCEGDETPOSITIVE 1
849 #define RADSHOCKFLAT 1
851 #undef WHICHRADSOURCEMETHOD
854 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
862 #define MCOORD KSCOORDS
871 #if(WHICHPROBLEM==ATMSTATIC)
873 #undef ANALYTICMEMORY
874 #define ANALYTICMEMORY 1
883 #undef WHICHRADSOURCEMETHOD
886 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
896 #define MCOORD BLCOORDS
904 #if(WHICHPROBLEM==RADATM)
906 #undef WHICHRADSOURCEMETHOD
909 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
918 #define MCOORD BLCOORDS
921 #define MPERSUN (1.0) // So mass=1 as in koral for gTILDE=1.0
929 #if(WHICHPROBLEM==RADWALL)
931 #undef WHICHRADSOURCEMETHOD
934 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
941 #define MCOORD CARTMINKMETRIC2
948 #if(WHICHPROBLEM==RADWAVE)
950 #undef WHICHRADSOURCEMETHOD
953 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
960 #define MCOORD CARTMINKMETRIC2
968 #if(WHICHPROBLEM==RADBONDI)
971 #define MPERSUN (3.0)
974 #define RADSHOCKFLAT 1
976 #undef WHICHRADSOURCEMETHOD
979 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
983 #define N1 512 // KORALTODO: 512 in paper
989 #define MCOORD KSCOORDS
998 #if(WHICHPROBLEM==RADDOT)
1004 #define RADSHOCKFLAT 1
1006 #undef WHICHRADSOURCEMETHOD
1009 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
1018 #define MCOORD CARTMINKMETRIC2
1026 #if(WHICHPROBLEM==RADNT || WHICHPROBLEM==RADFLATDISK || WHICHPROBLEM==RADDONUT || WHICHPROBLEM==RADCYLBEAM || WHICHPROBLEM==RADCYLBEAMCART)
1029 #define OUTERDEATH 1 // do it
1031 #undef OUTERDEATHRADIUS
1032 #define OUTERDEATHRADIUS (3E3)
1033 #undef OUTERDEATHGAMMAMAX
1034 #define OUTERDEATHGAMMAMAX (6.0)
1035 #undef OUTERDEATHGAMMAMAXRAD
1036 #define OUTERDEATHGAMMAMAXRAD (GAMMAMAXRAD)
1039 #define MPERSUN (10.0)
1042 #define RADSHOCKFLAT 1
1044 #undef WHICHRADSOURCEMETHOD
1047 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
1050 #undef ANALYTICMEMORY
1051 #define ANALYTICMEMORY 1 // set disk BC using analytical result (at least partially so don't duplicate code.)
1054 #if(WHICHPROBLEM==RADNT)
1063 #define MCOORD KSCOORDS
1065 #elif(WHICHPROBLEM==RADDONUT)
1068 #define DOCOMPTON 1 // enable thermal Comptonization
1071 #define ENSURECONS 1
1074 #define DOPERF 1 // enable performance enhancements
1076 #undef BORROWENTROPY
1077 #define BORROWENTROPY 1
1079 #undef ENFORCEMHDCONS2RADCONS
1080 #define ENFORCEMHDCONS2RADCONS 1 // assumes not true that pmhd>>prad beyond machine precision
1082 #undef WHICHRADSOURCEMETHOD
1086 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
1104 #define MCOORD KSCOORDS
1107 #define cTILDA (1.0) // like koral
1110 #define gTILDA (1.0)
1113 #define MPERSUN (10.0*gTILDA) // due to koral fixing MSUNCM, have to do this.
1115 #undef RADIUSMOREDEATH
1116 #define RADIUSMOREDEATH (300.0)
1120 #elif(WHICHPROBLEM==RADFLATDISK)
1123 #define N1 40 // new koral
1132 #define MCOORD SPCMINKMETRIC // i.e. RADFLATDISK
1135 #define cTILDA (1.0) // like koral
1137 #define gTILDA (1E-10) // like koral (no longer)
1141 #define MPERSUN (10.0*gTILDA) // due to koral fixing MSUNCM, have to do this.
1149 #define ARAD (ARAD0) // stupid koral issue with units
1151 #elif(WHICHPROBLEM==RADCYLBEAM)
1153 #define N1 50 // R // 120 for defcoord=UNIFORMCOORDS
1155 #define N3 30 // \phi
1157 #define MCOORD CYLMINKMETRIC
1159 #elif(WHICHPROBLEM==RADCYLBEAMCART)
1165 #define MCOORD CARTMINKMETRIC2
1180 #if(WHICHPROBLEM==KOMIPROBLEM)
1182 #define MCOORD CARTMINKMETRIC2
1191 #undef WHICHRADSOURCEMETHOD
1194 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
1228 #elif(WHICHKOMI>=101 && WHICHKOMI<=109)
1229 #define N1 200 // all use 200, see McKinney (2006) FFDE code paper
1233 #define EOMTYPE EOMFFDE // what these problems really are for
1242 #if(WHICHPROBLEM==RADCYLJET)
1244 #undef CONNMACHINEBODY
1245 #define CONNMACHINEBODY 1
1251 #define ADJUSTFLUX 1
1258 #define OUTERDEATH 0 // don't do it
1259 #undef OUTERDEATHRADIUS
1260 #define OUTERDEATHRADIUS (1E3)
1261 #undef OUTERDEATHGAMMAMAX
1262 #define OUTERDEATHGAMMAMAX (6.0)
1263 #undef OUTERDEATHGAMMAMAXRAD
1264 #define OUTERDEATHGAMMAMAXRAD (GAMMAMAXRAD)
1267 #define MPERSUN (10.0)
1270 #define RADSHOCKFLAT 1
1272 #undef WHICHRADSOURCEMETHOD
1275 #define WHICHRADSOURCEMETHOD SOURCEMETHODIMPLICIT
1292 #define N1 64 // R // 120 for defcoord=UNIFORMCOORDS
1294 #define N3 1 // \phi
1296 #define MCOORD CYLMINKMETRIC
1309 #define WHICHEOM WITHNOGDET
1311 #undef CONNMACHINEBODY
1312 #define CONNMACHINEBODY 0
1314 #undef DOSTOREPOSITIONDATA
1315 #define DOSTOREPOSITIONDATA 0
1317 #undef STOREFLUXSTATE
1318 #define STOREFLUXSTATE 0
1320 #undef STORESHOCKINDICATOR
1321 #define STORESHOCKINDICATOR 0
1324 #define VARTOINTERP PRIMTOINTERP
1328 #define RADSHOCKFLAT 0