HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
definit.h
Go to the documentation of this file.
1 
8 
9 
10 
11 #define ORDERSTORAGE 5
12 
14 #define NEWMETRICSTORAGE 1
15 
17 #define ASYMDIAGCHECK 0
18 
20 #define ACCURATEDIAG 1
21 #define FLUXDIAGPARTS 0 // whether to compute parts of fluxes
22 
26 // 0 : not accurate
27 // 1 : cumulative source accurate
28 // 2 : each component accurate
29 #define ACCURATESOURCEDIAG 1
30 #define DIAGSOURCECOMPSTEP 4 // how many fullsteps to wait to compute diag_source_comp() that is somewhat expensive but just diagnostics and not incredibly needed compared to diag_source_all()
31 
32 
35 #define ACCURATESINCOS 1
36 
38 #define HOT2ENTROPY 1
39 
40 #define HOT2COLD 1
41 
42 #define HOT2FFDE 1
43 
45 #define ENTROPY2COLD 1
46 
47 #define ENTROPY2HOT 1
48 
49 #define ENTROPY2FFDE 1
50 
51 
52 
53 
54 #define BADENERGYMAC(ugenergy,ugentropy) ((ugenergy) < 0.5*(ugentropy))
55 #define BADENERGY2MAC(ugenergy,ugentropy) ((ugenergy) < (ugentropy))
56 
58 #define DIVMETHODPREFLUX 0
59 #define DIVMETHODPOSTFLUX 1
60 
61 #define DIVERGENCEMETHOD 1 // choose, but normally 1 for best results.
62 
63 
68 #define COMPDIM 3
69 
74 #define GETGEOMUSEPOINTER 0
75 
77 #define SPLITNPR 0
78 
80 #define ANALYTICMEMORY 1
81 
83 #define WENOMEMORY 0
84 
86 #define HIGHERORDERMEM 1
87 
92 #define SPLITMAEMMEM (0) // CHANGINGMARK
93 
96 #define DOMONOINTERP SMONOINTERP
97 
100 #define SPLITPRESSURETERMINFLUXMA 0 // CHANGINGMARK
101 
102 #define SPLITPRESSURETERMINFLUXEM 0 // CHANGINGMARK
103 
104 
107 #define MERGEDC2EA2CMETHODMA 0
108 #define MERGEDC2EA2CMETHODEM 0
109 #define MERGEDC2EA2CMETHOD (MERGEDC2EA2CMETHODMA || MERGEDC2EA2CMETHODEM)
110 
111 
112 #define HIGHERORDERROUGH 0
113 #define HIGHERORDERSMOOTH 1
114 #define HIGHERORDERVERYSMOOTH 2
115 
121 #define HIGHERORDERTYPE HIGHERORDERROUGH // original method
122 
123 
124 
125 
126 #if(HIGHERORDERTYPE==HIGHERORDERROUGH)// non-smooth version:
127 
128 
129 
130 
131 
132 #define DO_SPLITC2E NOSPLITA2C
133 #define DO_SPLITA2C ENERGY_CONTROLS_ALL_WEIGHTS // c2a and a2c for conserved quants
134 #define DO_SPLITA2CSMOOTH DO_SPLITA2C
135 #define DO_SPLITA2C4FLUX DO_SPLITA2C // more generally
136 #define DO_SPLITA2C4MAFLUX MASSENERGYMOMENTUM_IS_COUPLED_WEIGHTS // couples weights together
137 #define DO_SPLITA2C4SMOOTHFLUX DO_SPLITA2C
138 #define DO_SPLITSOURCE NOSPLITA2C // c2a for ENOSOURCETERM
139 
140 #define EMFLUXFIELDTERMTYPE ENOFLUX
141 #define FIELDTERMTYPE ENOFLUX
142 #define FIELDFVTYPE ENOCONSERVED
143 
144 
145 
146 #elif(HIGHERORDERTYPE==HIGHERORDERSMOOTH) // smooth version
147 
148 
151 
152 #define DO_SPLITC2E NOSPLITA2C
153 #define DO_SPLITA2C ENERGY_CONTROLS_ALL_WEIGHTS // c2a and a2c for conserved quants
154 #define DO_SPLITA2CSMOOTH CONSTANT_ALL_WEIGHTS
155 
156 
157 
158 
159 
160 
161 #define DO_SPLITA2C4FLUX MASSENERGYMOMENTUM_IS_COUPLED_WEIGHTS
162 #define DO_SPLITA2C4MAFLUX DO_SPLITA2C4FLUX
163 
164 #define DO_SPLITA2C4SMOOTHFLUX CONSTANT_ALL_WEIGHTS
165 #define DO_SPLITSOURCE NOSPLITA2C // c2a for ENOSOURCETERM
166 
167 #define EMFLUXFIELDTERMTYPE ENOSMOOTHFLUX
168 #define FIELDTERMTYPE ENOSMOOTHFLUX
169 #define FIELDFVTYPE ENOSMOOTHCONSERVED
170 
171 
172 
173 #elif(HIGHERORDERTYPE==HIGHERORDERVERYSMOOTH) // supersmooth version
174 
175 
176 
177 
178 #define DO_SPLITC2E NOSPLITA2C
179 #define DO_SPLITA2C CONSTANT_ALL_WEIGHTS
180 #define DO_SPLITA2CSMOOTH CONSTANT_ALL_WEIGHTS
181 #define DO_SPLITA2C4FLUX CONSTANT_ALL_WEIGHTS
182 #define DO_SPLITA2C4MAFLUX CONSTANT_ALL_WEIGHTS
183 #define DO_SPLITA2C4SMOOTHFLUX CONSTANT_ALL_WEIGHTS
184 #define DO_SPLITSOURCE NOSPLITA2C
185 
186 #define EMFLUXFIELDTERMTYPE ENOSMOOTHFLUX
187 #define FIELDTERMTYPE ENOSMOOTHFLUX
188 #define FIELDFVTYPE ENOSMOOTHCONSERVED
189 
190 #endif
191 
192 
193 
194 
195 
199 #define VELTERMSMINIMIZE(pl) (pl==RHO || pl==UU || pl==UU+dir)
200 #define ORTHOVEL1TERMSMINIMIZE(pl) (pl==UU+odir1)
201 #define ORTHOVEL2TERMSMINIMIZE(pl) (pl==UU+odir2)
202 #define PRESSUREMINIMIZE(pl) (pl==FLUXSPLITPMA(dir)) // pressure term when splitmaem==1 and doing MA term
203 #define EMFTERMS(pl) (pl>=B1 && pl<=B3) // only used if splitmaem==0
204 
208 #define ALLOTHERSMINIMIZE(pl) (! (VELTERMSMINIMIZE(pl) || ORTHOVEL1TERMSMINIMIZE(pl) || ORTHOVEL2TERMSMINIMIZE(pl) || PRESSUREMINIMIZE(pl) || ((emffixedstencil==1)&&EMFTERMS(pl)) ) )
209 
210 
211 
212 
214 #define FIELDSTAGMEM 1
215 
217 #define STOREFLUXSTATE 1
218 
220 #define STORESHOCKINDICATOR 1
221 
224 #define FIELDTOTHMEM 1 // CHANGINGMARK
225 
226 
228 #define TRACKVPOT 0
229 
233 #define EVOLVEWITHVPOT TRACKVPOT // choice
234 
236 #define MODIFYEMFORVPOT MODIFYVPOT
237 
240 #define CORNGDETVERSION 1
241 
242 
243 
247 
248 #define N1 64 // number of zones in 1-direction
249 #define N2 64 // number of zones in 2-direction
250 #define N3 1 // number of zones in 3-direction
251 
253 #define MAXBND 5
254 
255 
256 
257 
258 
260 #define MCOORD KSCOORDS
261 
262 
268 #define MAXWELL PRIMMAXWELL
269 
270 
272 #define UD0PLUS1FIX 1
273 
274 
275 #define DO_VORTICITY_IMAGE 0
276 
277 
278 #define PRODUCTION 0
279 
280 
281 
282 
283 
284 
288 
290 #define FULLOUTPUT 0
291 
292 
293 #define MAILWHENDONE 1
294 #define MAILFROMREMOTE 0
295 #define REMOTEHOST "ki-rh42.slac.stanford.edu"
296 #define REMOTEUSER "jon"
297 #define EMAILADDRESS "jmckinne@stanford.edu"
298 #define EMAILMESSAGE "Done with GRMHD run DEFAULT"
299 
300 
301 
303 #define SUPERLONGDOUBLE 0
304 
305 
306 #define PERFTEST 0
307 
308 
309 
310 #define DOAVG 0
311 #define DOAVGDUMP (DOAVG)
312 
313 
314 
317 #define DOJETDIAG 1
318 
319 
320 
321 #define DOAVG2 0 // only make 1 if DOAVG 1 above
322 
323 
324 
325 
326 #define DOGDUMP 1
327 
328 
329 
330 #define DORDUMP 1
331 
332 
333 
334 #define DOMAINDUMP 1
335 #define DOMAINDUMPDIAG (DOMAINDUMP)
336 
337 
338 
339 #define DODEBUGDUMP 1
340 
341 
342 
343 #define DODEBUG 1
344 
345 
346 
347 #define DOFLOORDUMP 1
348 #define DOFLOORDIAG (DOFLOORDUMP)
349 
350 
351 
352 #define DODISSMEASUREDUMP 0
353 #define DODISSMEASUREDIAG (DODISSMEASUREDUMP)
354 
355 
356 
357 #define DOEOSDUMP 1
358 #define DOEOSDIAG (DOEOSDUMP)
359 
360 
361 
362 #define DORADDUMP 1
363 #define DORADDIAG (DORADDUMP)
364 
365 
366 
367 
369 #define DOVPOTDUMP (1 && TRACKVPOT)
370 
371 #define DOIMAGEDUMP (1)
372 
373 #define DOAREAMAPDUMP (1)
374 
375 
376 #define DOENODEBUG 0
377 
378 
379 
380 
381 
382 #define DOGRIDSECTIONING 0
383 
384 
385 
386 
387 
388 #define WENO_USE_PRIM_REDUCTION 1
389 
390 
391 
392 
393 
394 #define WENO_EXTRA_A2C_MINIMIZATION 0 // CHANGINGMARK
395 
396 #define WENO_REDUCE_A2C_LOOK_OTHER_DIRECTIONS 1
397 
398 
399 
400 
401 #define LIMIT_FLUXC2A_PRIM_CHANGE 0
402 
403 
404 
405 #define DO_WENO_DEBUG 0
406 
407 
408 #define DOSUPERDEBUG 0
409 
410 
411 
415 #define ALLOWMETRICROT 0
416 
417 
418 
419 
420 
422 #if(ALLOWMETRICROT)
423 #define DOMIXTHETAPHI 1 // for g_{\theta\phi} // no choice
424 #else
425 #define DOMIXTHETAPHI 0 // choice
426 #endif
427 
428 
429 
430 
431 
433 #define DOEVOLVEMETRIC 0
434 
438 #define EVOLVEMETRICSUBSTEP 0
439 
441 #define LIMITDTWITHSOURCETERM 0
442 
444 #define LIMITSOURCES 0
445 
446 
448 #define USEGRAVITYDTINDTLIMIT 0
449 
450 
454 #define RESTRICTDTSETTINGINSIDEHORIZON 1
455 
456 
457 #define DODISS 0
458 
459 #define DODISSMEASURE 0
460 
461 
462 
464 #define DOLUMVSR 0
465 
467 #define DODISSVSR 0
468 
470 #define WHICHENTROPYEVOLVE EVOLVESIMPLEENTROPY
471 
472 
473 
475 #define DOSELFGRAVVSR 0
476 
477 #define DOFIELDLINE 1
478 
479 
480 
482 #define ROEAVERAGEDWAVESPEED 0
483 
484 #define ATHENAROE 0
485 
489 #define STOREWAVESPEEDS 0
490 
492 #define PERCELLDT 1
493 
496 #define USESTOREDSPEEDSFORFLUX (STOREWAVESPEEDS) // choice really independent of STOREWAVESPEEDS, but generall normally want to couple them
497 
498 #define VCHARTYPE VERYLOCALVCHAR
499 
502 #define TRUEFAST 0
503 
506 #define FORCESOLVEL 0
507 
508 #define FORCESOLVELFLUX 0
509 
510 
513 #define CHECKONINVERSION 1
514 #define CHECKONINVERSIONRAD 0 // check on radiation inversion. Default 0 because generally limiters on |v| mean not the same, so only use for debugging.
515 
516 #define PRECISEINVERSION 1
517 
518 
519 #define WHICHVEL VELREL4
520 
521 
522 
529 #define REMOVERESTMASSFROMUU 1
530 
531 #define RELTYPE RELEOM
532 
533 #define EOMTYPE EOMGRMHD
534 
535 
536 #define EOMRADTYPE EOMRADNONE // EOMRADM1CLOSURE
537 #define EVOLVENRAD 0 // whether to evolve number density of radiation
538 
539 #define WHICHRADSOURCEMETHOD SOURCEMETHODNONE
540 
541 
542 
543 
547 #define UTOPRIMTRYAGAIN 0
548 
549 
551 #define WHICHEOS IDEALGAS
552 
553 
554 
555 
556 
557 
559 #define DOENTROPY DONOENTROPY // normal total energy equation
560 
562 #define FIXUPAFTERINIT 1
563 
565 #define FIXUPAFTERRESTART 1
566 
571 #define CHECKSOLUTION 0
572 
573 
574 
576 #define GAMMAPERCDIFFMAX 2.0
577 #define UPERCDIFFMAX 10.0
578 
579 
581 #define DOEXTRAINTERP 0
582 
583 
585 #define DOYFL 0
586 
587 #define DOYL 0
588 
589 #define DOYNU DOYL
590 
591 
593 #define LIMADJUST LIMITERFIXED
594 
595 
597 #define HYDROLIMADJUSTONLY 1
598 
600 #define FLUXADJUST FLUXFIXED
601 
602 
604 #define HYDROFLUXADJUSTONLY 1
605 
608 #define STEPOVERNEGU NEGDENSITY_FIXONFULLSTEP
609 
610 
611 #define STEPOVERNEGRHO NEGDENSITY_FIXONFULLSTEP
612 
613 #define STEPOVERNEGURHO NEGDENSITY_FIXONFULLSTEP
614 
615 
616 
617 
619 #define UTOPRIMADJUST UTOPRIMAVG
620 
621 #define UTOPRIMFIXMPICONSISTENT 1
622 
625 #define UTOPRIMFAILRETURNTYPE UTOPRIMRETURNADJUSTED
626 
628 #define SMOOTHSING 1
629 
630 #define COORDSINGFIXCYL 0 //whether perform the same fix for CYLMINKMETRIC's z axis
631 
632 #define COORDSINGFIX 1
633 
634 
635 
636 
640 #define SINGSMALL (1000*NUMEPSILON) // must be larger than machine precision to work for outer M_PI boundary!. 1E-14 works, but need some insurance so use 1E-13
641 
643 
644 #define VOLUMEDIFF 0
645 
646 
647 #define DOSTOREPOSITIONDATA 1
648 
649 
651 #define STORETLAB2ORTHO 0
652 
655 #define CONNDERTYPE DIFFNUMREC // improved now and much more accurate then DIFFGAMMIE in general. However this is too slow to be used when time-dependent metric is cycling near substeps.
656 
660 #define CONNMACHINEBODY 1
661 
665 #define CONNAXISYMM 1
666 
667 
669 #define WHICHEOM WITHGDET
670 
671 
672 
674 #define GDETVOLDIFF 0
675 
677 #define FIXGDETSPC_WHEN_1DRADIAL 1
678 
680 #define FORCEGDETPOSITIVE 0
681 
682 #define MINDT 1.e-20 // minimum dt
683 
684 #define JONCHECKS 1 // for vel=3 extra checks (standard things)
685 #define JONCHECKS2 1 // check_pr() crazy thing for vel3 (crazy u^t check and fix -- 2D only)
686 
687 
688 #define FLOORDIAGS 1 // whether to compute floor diagnostics
689 
691 #define ANALYTICGCON 0
692 
693 #define ANALYTICCONNECTION 0 // whether to use analytic connection
694 
695 
696 #define ANALYTICSOURCE 0 // whether to use analytic source function
697 
698 
699 
701 #define OUTFLOWAVOIDBC 0
702 
703 #define FLUXDIMENSPLIT PERFECTUNSPLIT
704 #define A2CDIMENSPLIT PERFECTUNSPLIT
705 
707 #define BOUNDFLUXRECON 0
708 
710 #define BOUNDUNEW 0
711 
713 #define DODQMEMORY 1
714 
718 #define BOUNDARYINTERPADJUST 0
719 
722 #define COMPUTEFRDOT 0
723 
725 #define CALCFARADAYANDCURRENTS 0 // FUCK: Some memory leak maybe because Kraken crashes if this is 1. Didn't crash before, so unsure what's wrong. core dump gives some info, but not much.
726 
727 #define WHICHCURRENTCALC CURRENTCALC1
728 
729 
731 #define FARADAYT0 1
732 
734 #define CURRENTST0 1
735 
736 
737 #define BOUNDPLPR 0
738 #define NOFLUXCTONX1DN 0
739 
740 
743 #define OUTFLOW 0
744 #define SYMM 1
745 #define ASYMM 2
746 #define FIXED 3
747 #define POLARAXIS 4
748 #define FIXEDOUTFLOW 5 // means fixed inflow but allows outflow -- basically outflow if no inflow, but if inflow then set values to fixed quantities
749 #define NSSURFACE 6 // whatever in bounds.c for NS surface
750 #define PERIODIC 7 // periodic boundary conditions
751 #define OUTFLOWNOINFLOW 8 //copy if velocity directed outward; force velocity to zero and copy if directed inward (into the grid from the boundary)
752 #define RAMESHOUTFLOW 9 //OUTFLOW quantities according the Ramesh's power-law solution
753 #define HORIZONOUTFLOW 10
754 
755 #define BCEXTRAP 100 //atch: extrapolation into the boundary with high order (can be specified)
756 #define CYLAXIS 101 //atch: cylindrical axis BC
757 #define BCEXTRAP_VEL3 102 //atch: the same as BCEXTRAP but extrapolates 3-velocity rather than 4-velocity; important for Hubble flow
758 #define JETINJECTION 103 //Fixed boundary condition for jet injection surrounded by an outflow condition
759 #define BCU1EXTRAPOTHERFIXED 104
760 #define BCEXTRAPCONSTRAINED 105
761 #define RESCALEOUTFLOW 106
762 #define RESCALEFIXEDALLOUTFLOWU1 107
763 #define FIXED_RESCALEOUTFLOWU1 108
764 #define BONDIMDOTOUTFLOW 109
765 #define BONDIINTOUTFLOW 110
766 #define DISKSURFACE 111
767 #define FREEOUTFLOW 112
768 #define R0SING 113
769 #define FIXEDUSEPANALYTIC 200
770 
771 
772 #define EVOLVECHECKS 0
773 
774 
776 #define FIXUPZONES FIXUP1ZONE
777 
780 #define HLLBOUNDARY 0
781 
782 
783 
784 #define FIXUPFLUX 0
785 
786 
787 
788 
789 
790 #define ZEROOUTFLOWFLUX 0
791 
792 
793 
794 
797 
798 
799 
800 
801 
803 #define ZEROPOLEFLUX 0
804 
805 
806 
807 
810 
812 
813 
816 #define FLIPGDETAXIS 1
817 
821 #if(0)
822 #define FLIPU3AXIS 1
823 #define FLIPB3AXIS 1
824 
825 #define FLIPU2AXIS 1
826 #define FLIPB2AXIS 1
827 
828 #define FLIPU1AXIS 0
829 #define FLIPB1AXIS 0
830 
831 #else
832 
833 #define FLIPU3AXIS 0
834 #define FLIPB3AXIS 0
835 #define FLIPU2AXIS 0
836 #define FLIPB2AXIS 0
837 #define FLIPU1AXIS 0
838 #define FLIPB1AXIS 0
839 #endif
840 
842 #define DOPOLEDEATH 0
843 #define DOPOLESMOOTH 0 // can choose 1, but probably not necessary and generally won't treat flow correctly near pole even if possibly more robust.
844 #define DOPOLEGAMMADEATH 0
845 
846 
847 
849 #define IF3DSPCTHENMPITRANSFERATPOLE 1 // working fine now that wavespeed bug in fluxctstag.c was fixed, extrapfunc B1,B2 bug fixed, and extrap gdet B3 instead of Bd3 that exaggerates extrapolation near poles and inconsistent with interpolation. Also using VARTOINTERPFIELD GDETVERSION.
850 
851 
852 
853 
855 #define RESCALEINTERP 0
856 
857 
858 
859 #define RESCALEINTERPFLUXCTSTAG 0
860 
861 
862 
863 #define BDIRCONT 1
864 
865 
866 
868 #define HYPERHLL 0
869 
870 
872 #define HORIZONSUPERFAST 0
873 
874 
875 
881 
882 
884 #define VARTOINTERP PRIMTOINTERP
885 
887 #define VARTOINTERPFIELD GDETVERSION // most consistent with fluxctstag.c and standard extrapfunc in bounds.tools.c
888 
889 
890 
896 
898 #define VLINEWITHGDETRHO 1
899 
901 #define PLINEWITHFIELD 1
902 
904 #define PARALINEUSESMONO 0
905 
906 
909 #define USEAVGPRIMITIVEFORWENOFLAT 1
910 
911 
915 #define USEPRIMITIVEFROMAVGCONSERVED 0
916 
917 
919 #define CONTACTINDICATOR 0
920 
922 #define COMPUTEDRHODP 1
923 
924 
926 #define SUPERFASTDIVREDUCE 0 //atch
927 
929 #define MINPREFORDER 3
930 
932 #define SHOCKINDICATOR 1
933 
935 #define WHICHPARA PARA4
936 
937 
938 #define BONDI_BOUNDARY_SET_PL_PR 0 //do not analytically set p_l & p_r at the outer boundary for the Bondi problem
939 
940 
941 
942 
943 #define NUMPANALYTICOTHER 0
944 #define DODUMPOTHER 0 // whether to dump other stuff
945 
951 #define FLUXDUMP 0
952 
954 #define NUMPOTHER 0
955 
956 
957 
958 
959 
967 
969 
970 #if((REALTYPE==DOUBLETYPE)||(REALTYPE==FLOATTYPE))
971 
972 #define CONNDELTA (MY1EM5) // default -- seems to work pretty good generally to reduce max error
973 
974 
975 #elif(REALTYPE==LONGDOUBLETYPE)
976 
977 #define CONNDELTA (MY1EM5) // based on min of error for specific case
978 
979 #endif
980 
981 
982 
984 #define USERERSETREGION 0
985 
986 
988 #define BCSIGMACONSTATPOLE 0
989 
992 #define DOONESTEPDUACCOUNTING 1
993 
994 #define FIELDLINEGDETB 0
995 
996 #define DO_ASSERTS 0
997 
998 
999 
1000 
1001 
1002 
1003 
1004 
1005 
1006 
1012 #define ADJUSTFLUXCT 0 // whether to adjust fluxCT
1013 
1014 #define ADJUSTFLUX 0 // whether to adjust normal flux
1015 
1017 
1018 #define DEBUGINOUTLOOPS 0
1019 
1020 #define OUTEREXTRAP 3
1021 
1022 
1023 
1024 
1025 
1027 #define HORIZONEXTRAP 3
1028 
1029 
1030 
1032 #define NUMITERVPHI 5
1033 
1034 
1041 #define POLEDEATH (MIN(DOPOLEDEATH,N2BND)) // with expansion by 1 point if detects jumps in densities or Lorentz factor (see poldeath())
1042 
1043 #define MAXPOLEDEATH (MIN(DOPOLEDEATH+1,N2BND)) // can't be larger than N2BND
1044 #define DEATHEXPANDAMOUNT 0
1045 
1046 #define POLEINTERPTYPE 3 // 0=set uu2=bu2=0, 1=linearly interpolate uu2,bu2 2=interpolate B_\phi into pole 3 =linearly for uu2 unless sucking on pole
1047 
1048 
1049 
1050 
1051 
1056 #define POLEGAMMADEATH (MIN(DOPOLEGAMMADEATH,N2BND))
1057 
1058 
1059 
1060 #define GAMMAPOLEOUTGOING 1.1 // keep low
1061 #define GAMMAPOLEINGOINGOUT 1.3 // keep low
1062 #define GAMMAPOLEOUTGOINGPOWER 0.1 // keep low unless know will grow alot
1063 #define GAMMAPOLEOUTGOINGRADIUS 6.0 // very model dependent
1064 #define GAMMAPOLEOUTGOINGRADIUSIN 4.0 // very model dependent
1065 #define GAMMAPOLEOUTGOINGMAX (5.0)
1066 #define GAMMAPOLEINGOING GAMMAMAX
1067 
1068 #define GAMMARADPOLEOUTGOING 1.3 // keep low
1069 #define GAMMARADPOLEINGOINGOUT 1.7 // keep low
1070 #define GAMMARADPOLEOUTGOINGPOWER 0.5
1071 #define GAMMARADPOLEOUTGOINGRADIUS 6.0 // very model dependent
1072 #define GAMMARADPOLEOUTGOINGRADIUSIN 4.0 // very model dependent
1073 #define GAMMARADPOLEOUTGOINGMAX (3.0)
1074 #define GAMMARADPOLEINGOING GAMMAMAXRAD
1075 
1077 #define POLEDENSITYDROPFACTOR 5.0
1078 #define POLEGAMMAJUMPFACTOR 2.0
1079 
1080 #define RADIUSMOREDEATH (300.0)
1081 
1084 #define AVERAGEINRADIUS 0 // not correct across MPI boundaries since have to shift near boundary yet need that last cell to be consistent with as if no MPI boundary // OPENNPMARK: Also not correct for OpenMP
1085 #define RADIUSTOSTARTAVERAGING 7 // should be beyond horizon so doesn't diffuse across horizon
1086 #define RADIUSTOAVOIDRADIALSUCK (2.0*Rhor)
1087 
1088 
1094 #define IFLIMITPOLEDEATH 0
1095 
1096 // whether to limit poledeath to inside horizon and inside death region
1097 #define LIMITEDPOLEDEATHINRADIUS 1
1098 
1099 
1101 #define RADIUSLIMITPOLEDEATHIN (3.0) // choose r=3M since always close to BH but always slightly outside horizon to help control stability.
1102 
1104 #define IFLIMITPOLEDEATHIOUT (-100)
1105 
1106 
1107 
1110 #define POLESMOOTH (MIN(DOPOLESMOOTH,N2BND))
1111 
1112 // defaults for bounds.tools.c
1113 #define OUTERDEATH 0
1114 #define OUTERDEATHRADIUS (1E3)
1115 #define OUTERDEATHGAMMAMAX (6.0)
1116 #define OUTERDEATHGAMMAMAXRAD (GAMMAMAXRAD)
1117 
1118 // whether to use old non-continuous method for Bi along i interpolation in staggered field method
1119 #define OLDNONCONT 0
1120 
1122 #define OUTERRADIALSUPERFAST 0
1123 
1125 #define DOCOMPTON 0
1126 // whether to (during utoprimgen()) to do mhd inversion, recompute umhd, use energy conservation to get urad, and then invert that urad->prad. Doesn't work if mhd>>rad when non-QTYPMHD methods used.
1127 #define ENFORCEMHDCONS2RADCONS 0
1128 #define DOPERF 0 // whether to enable performance opts, including enforcing only QTYPMHD method.
1129 #define ENSURECONS 0 // when done with full step, whether to ensure energy conservation by modifying rad result if possible
1130 #define BORROWENTROPY 0 // whether to try borrowing energy/entropy from radiation to get total energy conservation with entropy method