HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
global.nondepmnemonics.h
Go to the documentation of this file.
1 
11 #include "metric.h"
12 #include "coord.h"
13 
14 
15 
16 
17 
18 // define how to access symmetric matrices with size 4x4 without redundant elements
19 
20 // 1) regexp: gcov\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\] -> gcov[GIND(\1,\2)]
21 // Then revert: gcov\[GIND( *NDIM *, *NDIM *)\] -> gcov[SYMMATRIXNDIM] since otherwise will be 1 larger than required
22 // also need to catch: localgcon gcon gcovinfunc gcovtovks gcovbhks gcovmcoord gcovmid tmpgcov gcovprim tmpgcon glgen ghgen
23 // 2) Then need to replace any multi-D pointer arg type with simple arg type:
24 // FTYPE (**localgcov)[NDIM] -> FTYPE **localgcov
25 // 3) Then need to get all global variables with [NDIM][NDIM]
26 // 4) Also get *gcov type things: (\*gcov)\[NDIM\] -> *gcov
27 // also need to catch: gcon gcovinfunc gcovinfuncprim gcovprim gconprim gcovmcoord gcovptr gconptr
28 // 5) If making assignment TO something using GIND(), then must control loops.
29 // E.g. tetrad.c:tetr_func_frommetric(): newgcov[GIND(jj,kk)] +=
30 // Find some maybe by doing: grep -e "+ \{0,\}=" *.c *.h | grep GIND
31 // Compared new and old codes by doing:
32 // for fil in `ls -d *.c *.h`; do echo $fil; diff -bBdpy -W 600 --suppress-common-lines $fil $1/$fil >>newcodediff.txt ; done ; less newcodediff.txt
33 // Check for name mangling: grep "gcov" newcodediff.txt | grep "gcon" | less
34 
35 // below are non-conditional ways of getting same result as:
36 //#define GCOVI(i,j) (i>=j) ? i : j
37 //#define GCOVJ(i,j) (i>=j) ? j : i
38 #define GCOVI(i,j) (((i)>=(j))*((i)-(j)) + (j))
39 #define GCOVJ(i,j) (((i)>=(j))*((j)-(i)) + (i))
40 #define GIND(i,j) GCOVJ(i,j)*4 + GCOVI(i,j) - MAX(GCOVJ(i,j),0) - MAX(GCOVJ(i,j)-1,0) - MAX(GCOVJ(i,j)-2,0)
41 
42 #define GINDASSIGNFACTOR(i,j) (1.0*((i)>=(j)))
43 //#if(PRODUCTION==0)
44 //#define GINDASSIGNMAC(name,i,j) (i>=j ? name[GIND(i,j)] : SHOULDNOTREACHHEREEVERBUGYOUHAVE())
45 //#else
46 //#define GINDASSIGNMAC(name,i,j) name[GIND(i,j)]
47 //#endif
48 
49 
51 #define USEGSL (USINGGSL)
52 
53 
55 #define NRANC 64
56 
57 
58 
66 #define NUMJETS 2
67 #define INNERJET 0
68 #define OUTERJET 1
69 
70 
71 #define QUASISTRANG 0
72 #define UNSPLIT 1
73 #define PERFECTUNSPLIT 2
74 
75 
77 #define NUMENERREGIONS 8
78 
79 #define NULLENERREGIONS -2 // indicates avoid processes that operate on this region
80 #define ALLENERREGIONS -1 // to indicate not just one region
81 #define GLOBALENERREGION 0 // standard computational grid
82 
83 #define OUTSIDEHORIZONENERREGION 1 // "outside" horizon: i>ihorizon
84 
85 
86 #define TRUEGLOBALENERREGION 2 // max(0,ihorizon-nbnd)
87 #define TRUEGLOBALWITHBNDENERREGION 3 // outside horizon with boundary cells: max(-nbnd,ihorizon-2*nbnd)
88 
89 #define ACTIVEREGION 4 // only active computational cells
90 #define ACTIVEWITHBNDREGION 5 // ACTIVEREGION+required boundary cells
91 
92 #define INNERJETREGION 6 // lower-\theta jet region
93 #define OUTERJETREGION 7 // upper-\theta jet region
94 
95 
97 #define VERYLOCALVCHAR 0
98 #define LOCALVCHAR 1
99 #define GLOBALVCHAR 2
100 
103 #define MINDTSET(dt1,dt2,dt3) (1.0/(1.0/(dt1) + 1.0/(dt2) + 1.0/(dt3)))
104 
105 //#define MINDTSET(dt1,dt2,dt3) (MIN(MIN((dt1),(dt2)),(dt3)))
106 
107 // relativistically inspired (based upon RADBEAMFLAT)
108 // This is more strict in that it presumes that if one direction is relativistic one should really limit things because full (here) 2D effects really imply the general 2D characteristic (not just the i or j char) is probably v~c. That is, it's bad to assume that just because exactly along y it's v~c/2 and exactly along x it's v~c that this represents a *smooth* ~linear version for any other direction. E.g., at other angles, it should be still v~c despite beaming effects. In that sense, looking at exactly y-direction is degenerate and highly non-representative.
109 // Note that NR1997 Eq19.3.11 suggests dt<delta/(\sqrt{N} |v|) for N dimensions and absolute magnitude of velocity v. This is much higher dt than required for stability of many problems, perhaps related to non-linear multi-D coupling in relativistic case.
110 //#define MINDTSET(dt1,dt2,dt3) (MIN(MIN((dt1),(dt2)),(dt3))/(FTYPE)(N1NOT1+N2NOT1+N3NOT1))
111 
112 
115 #define NUMOTHERSTATERESULTS 2
116 #define OTHERGAMMA 0
117 #define OTHERQSQ 1
118 
119 
120 #define ERRORCODEBELOWCLEANFINISH 1000
121 
123 #define MAXFILENAME 200
124 
125 #define MAXFILENAMELONG 2000
126 
128 #define FILENOTFOUND 2490834
129 
134 #define VEL4 0
135 #define VEL3 1
136 #define VELREL4 2
137 
139 #define WITHGDET 0
140 #define WITHNOGDET 1
141 #define WITHSINSQ 2
142 
145 #define NOGDETRHO 0
146 #define NOGDETU0 0
147 #define NOGDETU1 1 // U1 and U2 are only reasonable choices in SPC
148 #define NOGDETU2 1
149 #define NOGDETU3 0
150 #define NOGDETB1 0
151 #define NOGDETB2 0
152 #define NOGDETB3 0
153 #define NOGDETURAD0 0
154 #define NOGDETURAD1 1 // URAD1 and URAD2 are only reasonable choices in SPC
155 #define NOGDETURAD2 1
156 #define NOGDETURAD3 0
157 #define NOGDETENTROPY 0
158 #define NOGDETYFL1 0
159 #define NOGDETYFL2 0
160 #define NOGDETYFL3 0
161 #define NOGDETYFL4 0
162 #define NOGDETYFL5 0
163 #define NOGDETYL 0
164 #define NOGDETYNU 0
165 
166 
167 
168 
170 #define GENMAXWELL 0
171 #define PRIMMAXWELL 1
172 
173 
175 #define RELEOM 0
176 #define NONRELEOM 1 // NOT FINISHED // NOT RIGHT // NOT NEEDED
177 
178 
188  // do nothing in Utoprimgen() assuming already effectively or actually did the inversion.
189 #define EOMDIDFFDE -6
190 #define EOMDIDFFDE2 -5
191 #define EOMDIDCOLDGRMHD -4
192 #define EOMDIDENTROPYGRMHD -3
193 #define EOMDIDGRMHD -2
194 #define EOMDONOTHING(eomtype) (eomtype<=EOMDIDGRMHD)
195 #define EOMDEFAULT -1 // choose to do default behavior without any forced EOM
196 #define NUMEOMTYPES 5
197 #define EOMFFDE 0
198 #define EOMFFDE2 1
199 #define EOMCOLDGRMHD 2
200 #define EOMENTROPYGRMHD 3
201 #define EOMGRMHD 4
202 
204 #define MODEDEFAULT -1
205 #define MODEENERGY 0
206 #define MODEENTROPY 1
207 #define MODESWITCH 2
208 #define MODEPICKREVERT 3
209 #define MODEPICKBEST 4
210 #define MODEPICKBESTSIMPLE 5
211 #define MODEPICKBESTSIMPLE2 6
212 #define MODEENERGYRAMESH 7
213 
215 #define CAPTYPEBASIC 0
216 #define CAPTYPEFIX1 1
217 #define CAPTYPEFIX2 2
218 
220 #define ENTROPYFIXGUESS 1
221 
222 
223 
225 #define ORIGINALFLUXCALC 0
226 #define NEWFLUXCALC 1
227 
228 
229 
235 #define NOCOOLING 0
236 #define COOLGAMMIETHINDISK 1
237 #define COOLEOSGENERAL 2
238 #define COOLREBECCATHINDISK 3
239 #define COOLUSER 10 // user-defined cooling function
240 #define KORAL 101
241 
242 
248 #define NUMEOSS 5 // number of EOS types
249 
250 #define COLDEOS 0
251 #define IDEALGAS 1
252 #define MIGNONE 2
253 #define GRBPWF99 3
254 #define KAZFULL 4
255 
256 
257 
260 #define DONOENTROPY 0
261 #define DOEVOLVEENTROPY 1 // generic activation of entropy variable in conservation laws, etc.
262 
263 #define DONOYFL 0
264 #define DOEVOLVEYFL 1
265 
266 #define DONOYL 0
267 #define DOEVOLVEYL 1
268 
269 #define DONOYNU 0
270 #define DOEVOLVEYNU 1
271 
272 
274 #define EVOLVENOENTROPY 0
275 #define EVOLVESIMPLEENTROPY 1 // should be used with DOENTROPY==DOEVOLVECOMPAREENTOPY
276 #define EVOLVEFULLENTROPY 2 // should only be used with DOENTROPY==DOEVOLVEDIRECTENTROPY or DOENTROPY==DOEVOLVECOMPAREENTOPY
277 
278 
279 
281 #define EVOLVEUTOPRIM 0
282 #define OTHERUTOPRIM 1
283 
284 
286 #define UEVOLVE 0
287 #define UDIAG 1
288 #define UNOTHING 2
289 #define UENTROPY 3 // implicit UNOTHING but cons UU is overwritten by cons entropy (see primtoflux() in phys.c as used by utoprim() in utoprim.c)
290 
291 
292 
293 
299 #define LIMITERFIXED 0
300 #define LIMITERBSQORHO 1
301 #define LIMITERBSQOU 2
302 #define LIMITERBSQORHOANDU 3
303 
305 #define FLUXFIXED 0 // (see get_bsqflags() in fixup.c)
306 #define FLUXBSQORHO 1
307 #define FLUXBSQOU 2
308 #define FLUXBSQORHOANDU 3
309 
310 
312 #define UTOPRIMRETURNNOTADJUSTED 0
313 #define UTOPRIMRETURNADJUSTED 1
314 
315 
316 
320 #define UTOPRIMSTATIC 0
321 #define UTOPRIMAVG 1
322 
323 
325 #define LINEARTYPE 0
326 #define LOGTYPE 1
327 #define QUADRATICTYPE 2 // includes limiters to ovoid overshoots and new extremums within 3 point domain
328 
329 
331 #define MODIFYEMF 0
332 #define MODIFYVPOT 1
333 
340 #define NUMENOINTERPTYPES 12
341 
342 #define NONENOINTERPTYPE 0
343 #define ENOINTERPTYPE 1 // ce2
344 #define ENOINTERPTYPE4EMF 2 // f2corn
345 #define ENOFLUXRECONTYPE 3
346 #define ENOFLUXRECONTYPEGHOSTACTIVE 4 // used at t=0 where *construct* Uavg in ghost+active region and for dofluxreconevolvepointfield==0 for EMFs
347 #define ENOFLUXSPLITTYPE 5
348 #define ENOAVG2CENTTYPE 6
349 #define ENOCENT2AVGTYPE 7
350 #define ENOFLUXAVG1TYPE 8
351 #define ENOFLUXAVG2TYPE 9
352 #define ENOFLUXAVG3TYPE 10
353 #define ENOQUASIFIELDFLUXRECONTYPE 11
354 
355 
357 #define ENOSOURCETERM 0
358 #define ENOCONSERVED 1
359 #define ENOPRIMITIVE 2
360 #define ENOFLUX 3
361 #define ENOMAFLUX 4
362 #define ENOSMOOTHFLUX 5
363 #define ENOSMOOTHCONSERVED 6
364 
365 
371 #define NOENOFLUX 0
372 #define ENOFLUXRECON 1
373 #define ENOFLUXSPLIT 2
374 #define ENOFINITEVOLUME 3
375 
380 #define NUMDFS 5
381 #define DFONESIDED 0
382 #define DFCENT 1
383 #define DFMONO 2
384 #define DF2OFMONO 3
385 #define DF2OFONESIDED 4
386 #define DFCENT2APART 5
387 
388 #define NUMMONOINDICATORS 3
389 
390 #define MONOINDTYPE 0 // -1,0,1 for rough, ambiguous, monotonic
391 #define MONOLEFTSET 1 // whether left interface (or central for a2c/c2a) was set to MONO value
392 #define MONORIGHTSET 2 // whether right interface was set to MONO value
393 
394 
395 
400 #define WEIGHT_CALC 1
401 #define RECON_CALC 2
402 #define ALL_CALC (WEIGHT_CALC | RECON_CALC) //compute everything
403 
404 
406 #define CVT_A2C 0
407 #define CVT_C2A 1
408 #define CVT_C2L 2
409 #define CVT_C2R 3
410 #define CVT_C2DER1 4
411 #define CVT_C2DER2 5
412 #define CVT_C2DER3 6
413 #define CVT_C2DER4 7
414 
415 
416 
417 #define CVT_C2E CVT_C2L //use the same number as CVT_C2L because does not add a new reconstruction type
418 
421 #define NOSPLITA2C 0
422 #define MINIMIZE_ALL_WEIGHTS 1
423 #define ENERGY_CONTROLS_ALL_WEIGHTS 2 // as below
424 #define ENERGY_IS_ALL_WEIGHTS 3 // means T^i_i for flux and T^t_t for energy
425 #define MASSENERGYMOMENTUM_IS_COUPLED_WEIGHTS 4 // means lock \rho u^i , T^i_i and T^i_t all together to help with relativistic flows to maintain consistency
426 #define MASSENERGYMOMENTUM_IS_COUPLED_WEIGHTS_OLD 5 // means lock \rho u^i , T^i_i and T^i_t all together to help with relativistic flows to maintain consistency
427 #define GENFUN_IS_ALL_WEIGHTS 5
428 #define CONSTANT_ALL_WEIGHTS 6 // forces MONO and equal weights for all
429 
430 
435 #define NOMONOINTERP 0
436 #define JMONOINTERP 1
437 #define SMONOINTERP 2
438 
440 #define ISMAONLY 0
441 #define ISEMONLY 1
442 #define ISMAANDEM 2
443 #define ISRADONLY 3
444 
445 
446 
447 #define DISSSIMPLEINVCO 0
448 #define DISSFULLINVCO 1
449 #define DISSENTROPYCO 2
450 #define DISSSIMPLEINVCONOMAX 3
451 #define DISSFULLINVCONOMAX 4
452 #define DISSENTROPYCONOMAX 5
453 #define DISSSIMPLEINVLAB1 6
454 #define DISSFULLINVLAB1 7
455 #define DISSENTROPYLAB1 8
456 #define DISSSIMPLEINVLAB1NOMAX 9
457 #define DISSFULLINVLAB1NOMAX 10
458 #define DISSENTROPYLAB1NOMAX 11
459 #define DISSSIMPLEINVLAB2 12
460 #define DISSFULLINVLAB2 13
461 #define DISSENTROPYLAB2 14
462 #define DISSSIMPLEINVLAB2NOMAX 15
463 #define DISSFULLINVLAB2NOMAX 16
464 #define DISSENTROPYLAB2NOMAX 17
465 
466 #define DISSFAILUREINV 18
467 
469 #define NUMDISSVERSIONS 18 // for consistent restart output, this number can't change
470 #define NUMDISSFUNPOS (NUMDISSVERSIONS+1) // includes failure indicator
471 
472 
474 #define NUMPOS4EMF 3
475 #define LEFT4EMF 0 // left or -
476 #define RIGHT4EMF 1 // right or +
477 #define CENT4EMF 2 // centered position
478 #define START4EMF LEFT4EMF // which is 0
479 #define END4EMF CENT4EMF // which is last value
480 
481 
483 #define NUMFLUXLOOPNUMBERS 10
484 #define FIDEL 0
485 #define FJDEL 1
486 #define FKDEL 2
487 #define FFACE 3
488 #define FIS 4
489 #define FIE 5
490 #define FJS 6
491 #define FJE 7
492 #define FKS 8
493 #define FKE 9
494 
495 
496 #define CHECKONINVERSIONDEFAULT (-1)
497 
500 #define NUMINVPROPERTY 13
501 
506 #define CURRENTCALC0 0
507 #define CURRENTCALC1 1
508 #define CURRENTCALC2 2
509 
510 
511 
512 #define CURRENTPRECALCTYPES 5
513 
514 #define CURTYPET 0
515 #define CURTYPEX 1
516 #define CURTYPEY 2
517 #define CURTYPEZ 3
518 #define CURTYPEFARADAY 4
519 
520 
522 #define FIXUP1ZONE 0
523 #define FIXUPALLZONES 1
524 #define FIXUPNOZONES 2
525 
526 
527 
531 #define LAXFFLUX 0
532 #define HLLFLUX 1
533 #define FORCEFLUX 2
534 #define MUSTAFLUX 3 // not yet working
535 #define HLLLAXF1FLUX 4
536 
537 
539 #define FLUXCTHLL 0
540 #define FLUXCTTOTH 1
541 #define FLUXCD 2
542 #define ATHENA1 3
543 #define ATHENA2 4
544 #define FLUXCTSTAG 5
545 /* these are different ways of calculating the EMFs */
553 
556 #define UTOPRIM5D1 0
557 
558 #define UTOPRIMLDZ 1
559 
560 #define UTOPRIM2D 2
561 
562 #define UTOPRIM1D 3
563 
564 #define UTOPRIM1DOPT 4
565 
566 #define UTOPRIM1DFINAL 5
567 
568 #define UTOPRIM2DFINAL 6
569 
570 #define UTOPRIM5D2 7
571 
572 #define UTOPRIMJONNONRELCOMPAT 8
573 
574 #define UTOPRIMCOLDGRMHD 20
575 
576 #define UTOPRIMFFDE 21
577 
578 #define UTOPRIMCOMPARE 100
579 
580 
581 // mnemonics for slope limiter
582 
584 #define NLIM -1 // no limiter
585 #define NLIMCENT -2 // no limiter
586 #define NLIMUP -3 // no limiter
587 #define NLIMDOWN -4 // no limiter
588 #define NUMNEGINTERPS 4
589 
592 
593 #define DONOR 0
594 
596 #define VANL 1
597 #define MINM 2
598 #define MC 3
599 #define PARA 4
600 #define PARAFLAT 5
601 #define MCSTEEP 6 // uses 3-point limiter, but other features of PARAFLAT
602 #define CSSLOPE 7 // not tested/compared against others
603 #define MP5 8
604 #define EPPM 9
605 
607 #define WENO3 20
608 #define WENO4 21
609 #define WENO5 22
610 #define WENO6 23
611 #define WENO7 24
612 #define WENO8 25
613 #define WENO9 26
614 #define ENO3 27
615 #define ENO5 28
616 #define WENO5FLAT 29
617 #define WENO5BND 30
618 #define WENO5BNDPLUSMIN 31
619 
620 #define PARALINE 40
621 
622 #define FIRSTWENO WENO3
623 #define LASTWENO WENO5BNDPLUSMIN
624 
625 #define FIRSTINTERPLINE WENO3
626 #define LASTINTERPLINE PARALINE
627 
628 #define NUMPOSINTERPS LASTINTERPLINE // not number, just last, ok if some entries are not any limiter
629 
630 #define NUMINTERPS (1 + NUMPOSINTERPS + NUMNEGINTERPS)
631 
632 
634 #define WENOINTERPTYPE(lim) (lim>=FIRSTWENO && lim<=LASTWENO)
635 
637 #define WENOBNDPINTERPTYPE(lim) (lim==WENO5BND || lim==WENO5BNDPLUSMIN)
638 
640 #define LINEINTERPTYPE(lim) (lim>=FIRSTINTERPLINE && lim<=LASTINTERPLINE)
641 
642 
643 
645 #define MAXSPACEORDER 15 // maximum number of points in stencil
646 //#define MAXSPACESHIFT ((MAXSPACEORDER-1)/2) // center point for symmetric stencil
647 
649 #define STARTTIME 0
650 #define CHECKTIME 1
651 #define SPEEDTIME 2
652 #define STOPTIME 3
653 #define REPORTTIME 4
654 #define DIAGSTARTTIME 5
655 #define DIAGSTOPTIME 6
656 #define INITSTARTTIME 7
657 #define INITSTOPTIME 8
658 
659 
660 #define MAXTIMEORDER 5 // 5 now needed for EOMRADTYPE!=EOMRADNONE, but only affects memory in that case.
661 
662 #define NUMPREDTCUFS (4) // see step_ch.c
663 
664 #define NUMDTCUFS (NUMPREDTCUFS+MAXTIMEORDER) // see step_ch.c
665 
666 //#define TIMEORDER 3
672 
673 
675 #define SOURCEMETHODNONE 0
676 #define SOURCEMETHODEXPLICIT 1
677 #define SOURCEMETHODEXPLICITSUBCYCLE 2
678 #define SOURCEMETHODIMPLICIT 3
679 #define SOURCEMETHODIMPLICITEXPLICITCHECK 4
680 #define SOURCEMETHODEXPLICITREVERSIONFROMIMPLICIT 5
681 #define SOURCEMETHODEXPLICITSUBCYCLEREVERSIONFROMIMPLICIT 6
682 #define SOURCEMETHODEXPLICITCHECKSFROMIMPLICIT 7
683 #define SOURCEMETHODEXPLICITSUBCYCLECHECKSFROMIMPLICIT 8
684 
685 
687 #define METRICTETRAD 0
688 #define NONMETRICTETRIC 1
689 
690 
696 #define PRIMTOINTERP -1
697 #define PRIMTOINTERP_JONRESCALED1 0
698 #define CONSTOINTERP 1
699 #define PRIMTOINTERPLGDEN 2
700 #define PRIMTOINTERP_LGDEN_RHOU 3
701 #define PRIMTOINTERP_RHOU 4
702 #define PRIMTOINTERP_VSQ 5
703 #define PRIMTOINTERP_3VEL_GAMMA 6
704 #define PRIMTOINTERP_RHOV_GAMMA 7
705 #define PRIMTOINTERP_VELREL4SQ 8
706 #define PRIMTOINTERP_3VELREL_GAMMAREL 9
707 #define PRIMTOINTERP_RAMESH1 10
708 #define PRIMTOINTERP_3VELREL_GAMMAREL_DXDXP 11
709 #define PRIMTOINTERP_GDETFULLVERSION 12
710 #define PRIMTOINTERP_GDETFULLVERSION_WALD 13
711 
712 #define NOFIELDRESCALE -1
713 #define NOSPECIALFIELD 0
714 #define PULSARFIELD 1
715 #define PULSARFIELD2 2
716 #define PULSARFIELD3 3
717 #define GDETVERSION 4
718 #define GDETFULLVERSION 5
719 
720 
721 
722 #define WENO_REDUCE_TYPE_DEFAULT 0
723 #define WENO_REDUCE_TYPE_PPM 1
724 
726 #define MINMODB(a,b) ( (fabs(a)<fabs(b)) ? (a) : (b) )
727 #define MINMOD(a,b) ( ((a)*(b)<=0) ? 0.0 : MINMODB(a,b) )
728 //#define MINMOD3( x, y, z ) ( 0.25 * (sign(x) + sign(y)) * (sign(x) + sign(z)) * MIN( MIN(fabs(x), fabs(y)), fabs(z)) )
729 
730 #define MINMODB(a,b) ( (fabs(a)<fabs(b)) ? (a) : (b) )
731 #define MINMODGEN(extremeallow,a,b) ( (!extremeallow && (a)*(b)<=0) ? 0.0 : MINMODB(a,b) )
732 
733 
734 #define REMOVEFROMNPR 0
735 #define RESTORENPR 1
736 
737 
743 #define PARA1 0 // old
744 #define PARA2 1 // works
745 #define PARA3 2 // broken
746 #define PARA4 3 // latest
747 #define PARAJON 4 // Created to do well with high \sigma monopole
748 
749 
750 // GODMARK: wth NUMREC had problems with large run (jetnewnoenv,jetnew on sauron)
751 // GODMARK: NUMREC not working right now after trying to make accurate
752 //#define CONNDERTYPE GAMMIEDERIVATIVE
753 
754 #define DIFFGAMMIE 0 // use infinitesimal differences of analytical metric
755 #define DIFFNUMREC 1 // use advanced (but presently broken) uniformly accurate Numerical Recipies numerical derivatives
756 #define DIFFFINITE 2 // use previously defined gridded values of metric to compute finite differences (fastest)
757 
758 
759 #define INTERPPOINTTYPE 0
760 #define INTERPLINETYPE 1
761 
762 
763 #define TIMEIMPLICIT 0
764 #define TIMEEXPLICIT 1
765 
766 
772 #define NUMBOUNDTYPES 9
773 //
774 #define BOUNDPRIMTYPE 0
775 #define BOUNDPRIMSIMPLETYPE 1
776 #define BOUNDPSTAGTYPE 2
777 #define BOUNDPSTAGSIMPLETYPE 3
778 #define BOUNDINTTYPE 4 // always simple
779 #define BOUNDFLUXTYPE 5
780 #define BOUNDFLUXSIMPLETYPE 6
781 #define BOUNDVPOTTYPE 7
782 #define BOUNDVPOTSIMPLETYPE 8
783 
784 
786 #define BOUNDPRIMLOC 0
787 #define BOUNDPSTAGLOC 1
788 
789 
798 #define X1UP 0
799 #define X1DN 1
800 #define X2UP 2
801 #define X2DN 3
802 #define X3UP 4
803 #define X3DN 5
804 
805 #define NUMUPDOWN 2
806 #define POINTUP 0
807 #define POINTDOWN 1
808 
809 #define NUMLEFTRIGHT 2
810 #define ISLEFT 0
811 #define ISRIGHT 1
812 #define ISMIDDLE 2 // just macro, not used to access memory space and so why NUMLEFTRIGHT is still 2
813 
815 #define FLUXNOTONGRID -100
816 
817 
819 #define DIRSIGN(dir) (1-2*((dir)%2 ))
820 
821 #define DIMEN(dir) (1+(dir)/2)
822 
823 #define DIRFROMDIMEN(dimen,dirsign) (( (dirsign==-1) + (dimen - 1) * 2))
824 
826 #define POINTFROMDIR(dir) (DIRSIGN(dir)==-1 ? POINTDOWN : POINTUP)
827 
829 # define M_El 2.7182818284590452353602874713526625L /* e */
830 # define M_LOG2El 1.4426950408889634073599246810018922L /* log_2 e */
831 # define M_LOG10El 0.4342944819032518276511289189166051L /* log_10 e */
832 # define M_LN2l 0.6931471805599453094172321214581766L /* log_e 2 */
833 # define M_LN10l 2.3025850929940456840179914546843642L /* log_e 10 */
834 
835 # define M_PIl 3.1415926535897932384626433832795029L /* pi */
836 # define M_PI_2l 1.5707963267948966192313216916397514L /* pi/2 */
837 # define M_PI_4l 0.7853981633974483096156608458198757L /* pi/4 */
838 # define M_1_PIl 0.3183098861837906715377675267450287L /* 1/pi */
839 # define M_2_PIl 0.6366197723675813430755350534900574L /* 2/pi */
840 # define M_2_SQRTPIl 1.1283791670955125738961589031215452L /* 2/sqrt(pi) */
841 # define M_SQRT2l 1.4142135623730950488016887242096981L /* sqrt(2) */
842 # define M_SQRT1_2l 0.7071067811865475244008443621048490L /* 1/sqrt(2) */
843 # define SIXTH 0.1666666666666666666666666666666666L /* 1/6 */
844 # define FOURTHIRD 1.3333333333333333333333333333333333L /* 4/3 */
845 # define THIRD 0.3333333333333333333333333333333333L /* 1/3 */
846 # define ONE 1.0000000000000000000000000000000000L
847 # define PTFIVE 0.5L
848 # define TWO 2.0L
849 # define ONEPT25 1.25L
850 # define THREE 3.0L
851 # define SIX 6.0L
852 # define EIGHT 8.0L
853 
854 #ifdef WIN32
855 # define M_PI 3.1415926535897932384626433832795029L /* pi */
856 #endif
857 
858 
859 
860 #define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )
861 #define MIN(a,b) ( ((a) < (b)) ? (a) : (b) )
862 #define SIGNSINGLE(a) ( ((a) <0.) ? -1. : 1. )
863 
864 #define ROUND2INT(x) ((int)((x)>0.0 ? (x)+0.5 : (x)-0.5))
865 #define ROUND2LONGLONGINT(x) ((long long int)((x)>0.0 ? (x)+0.5 : (x)-0.5))
866 
867 
871 #define DONOTACCESSMEMORY 0
872 
873 
874 #define PROGRADERISCO 0
875 #define RETROGRADERISCO 1
876 
877 #define NUMTSCALES 4
878 
879 #define ALLTS 0 // full cumulative
880 #define ENERTS 1 // cumulative each dump_ener (over all grid)
881 #define IMAGETS 2 // cumulative each image dump (full grid)
882 #define DEBUGTS 3 // debug dump time scale (full grid)
883 
884 
885 
888 #define NEGDENSITY_NEVERFIXUP -1
889 #define NEGDENSITY_ALWAYSFIXUP 0
890 #define NEGDENSITY_FIXONFULLSTEP 1
891 
892 
893 
894 
896 #define COUNTNOTHING -2
897 #define COUNTONESTEP -1 // used as control label, not counted
898 #define COUNTREALSTART 0 // marks when real counters begin
899 #define NUMFAILFLOORFLAGS 38
900 
901 #define COUNTUTOPRIMFAILCONV 0 // if failed to converge
902 #define COUNTFLOORACT 1 // if floor activated
903 #define COUNTLIMITGAMMAACT 2 // if Gamma limiter activated
904 #define COUNTINFLOWACT 3 // if inflow check activated
905 #define COUNTUTOPRIMFAILRHONEG 4
906 #define COUNTUTOPRIMFAILUNEG 5
907 #define COUNTUTOPRIMFAILRHOUNEG 6
908 #define COUNTGAMMAPERC 7 // see fixup_checksolution()
909 #define COUNTUPERC 8 // see fixup_checksolution()
910 #define COUNTFFDE 9 // if originally MHD or ENTROPY, this is always referring to EOMFFDE2 or whatever set in utoprimgen.c
911 #define COUNTCOLD 10
912 #define COUNTENTROPY 11
913 #define COUNTHOT 12
914 #define COUNTEOSLOOKUPFAIL 13
915 #define COUNTBOUND1 14 // see bounds.tools.c (used when boundary code actually affects active zone values)
916 #define COUNTBOUND2 15
917 #define COUNTUCONSFIXUP 16
918 
919 // IMPLICITs count normal and issues separately from utoprim failure because not a normal 1-step inversion
920 #define COUNTIMPLICITITERS 17
921 #define COUNTIMPLICITMHDSTEPS 18
922 #define COUNTIMPLICITERRORS0 19
923 #define COUNTIMPLICITERRORS1 20
924 #define COUNTIMPLICITNORMAL 21
925 #define COUNTEXPLICITNORMAL 22
926 #define COUNTIMPLICITBAD 23
927 #define COUNTEXPLICITBAD 24
928 #define COUNTIMPLICITENERGY 25
929 #define COUNTIMPLICITENTROPY 26
930 #define COUNTIMPLICITCOLDMHD 27
931 #define COUNTIMPLICITFAILED 28
932 #define COUNTIMPLICITPMHD 29
933 #define COUNTIMPLICITUMHD 30
934 #define COUNTIMPLICITPRAD 31
935 #define COUNTIMPLICITURAD 32
936 #define COUNTIMPLICITENTROPYUMHD 33
937 #define COUNTIMPLICITENTROPYPMHD 34
938 #define COUNTIMPLICITMODENORMAL 35
939 #define COUNTIMPLICITMODESTAGES 36
940 #define COUNTIMPLICITMODECOLD 37
941 
942 
944 #define AVOIDI -100
945 #define AVOIDJ -100
946 #define AVOIDK -100
947 
950 #define NANPFLAG -100 // bad pflag
951 #define UTOPRIMFAILFIXEDBOUND2 (-6)
952 #define UTOPRIMFAILFIXEDBOUND1 (-5)
953 #define UTOPRIMFAILFIXEDENTROPY (-4)
954 #define UTOPRIMFAILFIXEDCOLD (-3)
955 #define UTOPRIMFAILFIXEDFFDE (-2)
956 #define UTOPRIMFAILFIXEDUTOPRIM -1
957 #define UTOPRIMNOFAIL 0
958 #define UTOPRIMFAILGENERIC 1 // just >UTOPRIMNOFAIL
959 #define UTOPRIMFAILCONV 1
960 #define UTOPRIMFAILCONVW 2
961 #define UTOPRIMFAILCONVUTSQ 3
962 #define UTOPRIMFAILCONVGUESSUTSQ 4
963 #define UTOPRIMFAILCONVUTSQVERYBAD 5
964 #define UTOPRIMFAILCONVBADINVERTCOMPARE 6
965 #define UTOPRIMFAILNANGUESS 7
966 #define UTOPRIMFAILNANRESULT 8
967 #define UTOPRIMFAILRHONEG 9
968 #define UTOPRIMFAILUNEG 10
969 #define UTOPRIMFAILRHOUNEG 11
970 #define UTOPRIMFAILGAMMAPERC 12
971 #define UTOPRIMFAILUPERC 13
972 #define UTOPRIMFAILU2AVG1 14
973 #define UTOPRIMFAILU2AVG2 15
974 #define UTOPRIMFAILU2AVG1FROMCOLD 16
975 #define UTOPRIMFAILU2AVG2FROMCOLD 17
976 #define UTOPRIMFAILURHO2AVG1FROMFFDE 18
977 #define UTOPRIMFAILFAKEVALUE 19
978 #define UTOPRIMFAILCONVRET 50
979 
980 
981 #define IFUTOPRIMFAILSOFTRHORELATED(pflag) (pflag==UTOPRIMFAILRHONEG || pflag==UTOPRIMFAILRHOUNEG)
982 
983 #define IFUTOPRIMFAILSOFTNOTRHORELATED(pflag) (pflag==UTOPRIMFAILUNEG || pflag==UTOPRIMFAILGAMMAPERC || pflag==UTOPRIMFAILUPERC || pflag==UTOPRIMFAILU2AVG1 || pflag==UTOPRIMFAILU2AVG2 || pflag==UTOPRIMFAILU2AVG1FROMCOLD || pflag==UTOPRIMFAILU2AVG2FROMCOLD || pflag==UTOPRIMFAILURHO2AVG1FROMFFDE)
984 
985 #define IFUTOPRIMFAILSOFT(pflag) (IFUTOPRIMFAILSOFTRHORELATED(pflag)||IFUTOPRIMFAILSOFTNOTRHORELATED(pflag))
986 
987 #define IFUTOPRIMFAILFIXED(pflag) (pflag==UTOPRIMFAILFIXEDFFDE || pflag==UTOPRIMFAILFIXEDCOLD || pflag==UTOPRIMFAILFIXEDENTROPY || pflag==UTOPRIMFAILFIXEDUTOPRIM)
988 
989 #define IFUTOPRIMNOFAILORFIXED(pflag) (pflag==UTOPRIMFAILFIXEDFFDE || pflag==UTOPRIMFAILFIXEDCOLD || pflag==UTOPRIMFAILFIXEDENTROPY || pflag==UTOPRIMFAILFIXEDUTOPRIM || pflag==UTOPRIMNOFAIL)
990 
991 #define IFUTOPRIMNOFAIL(pflag) (pflag==UTOPRIMNOFAIL)
992 
993 #define IFUTOPRIMFAIL(pflag) (pflag>UTOPRIMNOFAIL)
994 
995 #define ENTROPYANYFAIL(pflag) (pflag>0)
996 
997 #define HOTANYFAIL(pflag) (pflag>0)
998 
999 #define COLDANYFAIL(pflag) (pflag>0 && pflag!=UTOPRIMFAILU2AVG1FROMCOLD && pflag!=UTOPRIMFAILU2AVG2FROMCOLD)
1000 
1001 #define FFDEANYFAIL(pflag) (pflag>0 && pflag!=UTOPRIMFAILURHO2AVG1FROMFFDE)
1002 
1003 
1004 #define UTOPRIMRADFAILFIXEDUTOPRIMRAD -1
1005 #define UTOPRIMRADNOFAIL 0 // no radiation inversion failure
1006 
1007 
1008 #define UTOPRIMRADFAILCASE1A 1 //
1009 #define UTOPRIMRADFAILCASE1B 2 //
1010 #define UTOPRIMRADFAILCASE2A 3 //
1011 #define UTOPRIMRADFAILCASE2B 4 //
1012 #define UTOPRIMRADFAILCASE3A 5 //
1013 #define UTOPRIMRADFAILCASE3B 6 //
1014 #define UTOPRIMRADFAILERFNEG 7
1015 
1016 #define UTOPRIMRADFAILBAD1 8 // not used yet
1017 #define UTOPRIMRADFAILGAMMAHIGH 9
1018 
1020 #define COUNTRADNOTHING -1
1021 #define NUMRADFAILFLOORFLAGS 2 // no array for storage yet (or maybe ever)
1022 #define COUNTRADLOCAL 0
1023 #define COUNTRADNONLOCAL 1
1024 
1025 #define IFUTOPRIMRADHARDFAIL(pflagrad) (pflagrad>UTOPRIMRADNOFAIL && pflagrad!=UTOPRIMRADFAILGAMMAHIGH && pflagrad!=UTOPRIMRADFAILERFNEG)
1026 #define IFUTOPRIMRADSOFTFAIL(pflagrad) (pflagrad>UTOPRIMRADNOFAIL && (pflagrad==UTOPRIMRADFAILGAMMAHIGH || pflagrad==UTOPRIMRADFAILERFNEG))
1027 #define IFUTOPRIMRADFAIL(pflagrad) (pflagrad>UTOPRIMRADNOFAIL)
1028 
1029 #define IFUTOPRIMRADFAILFIXED(pflagrad) (pflagrad==UTOPRIMRADFAILFIXEDUTOPRIMRAD)
1030 #define IFUTOPRIMRADNOFAIL(pflagrad) (pflagrad==UTOPRIMRADNOFAIL)
1031 
1032 #define IFUTOPRIMRADNOFAILORFIXED(pflagrad) (pflagrad==UTOPRIMRADFAILFIXEDUTOPRIMRAD || pflagrad==UTOPRIMRADNOFAIL)
1033 
1034 #define RADINVBAD(radinvmod) (radinvmod==UTOPRIMRADFAILERFNEG || radinvmod==UTOPRIMRADFAILBAD1 || radinvmod==UTOPRIMRADFAILGAMMAHIGH)
1035 #define RADINVOK(radinvmod) (RADINVBAD(radinvmod)==0)
1036 
1037 
1038 
1039 /* failure modes */
1040 #define FAIL_UTOPRIM_NEG 1
1041 #define FAILSTR01 "UTOPRIM_NEG"
1042 #define FAIL_UTOPRIM_TEST 2
1043 #define FAILSTR02 "UTOPRIM_TEST"
1044 #define FAIL_VCHAR_DISCR 3
1045 #define FAILSTR03 "VCHAR_DISCR"
1046 #define FAIL_COEFF_NEG 4
1047 #define FAILSTR04 "COEFF_NEG"
1048 #define FAIL_COEFF_SUP 5
1049 #define FAILSTR05 "COEFF_SUP"
1050 #define FAIL_UTCALC_DISCR 6
1051 #define FAILSTR06 "UTCALC_DISCR"
1052 #define FAIL_LDZ 7
1053 #define FAILSTR07 "FAIL_LDZ"
1054 #define FAIL_BCFIX 8
1055 #define FAILSTR08 "FAIL_BCFIX"
1056 #define FAIL_VSQ_NEG 9
1057 #define FAILSTR09 "FAIL_VSQ_NEG"
1058 
1059 /* mnemonics for primitive vars; conserved vars */
1060 #define VARNOTDEFINED -100
1061 #define RHO 0
1062 #define UU 1
1063 #define U1 2
1064 #define U2 3
1065 #define U3 4
1066 #define B1 5
1067 #define B2 6
1068 #define B3 7
1069 
1070 
1071 
1073 #define CENTEREDPRIM 0
1074 #define STAGGEREDPRIM 1
1075 
1076 
1077 #define NDIM 4 /* number of total dimensions. Never changes */
1078 #define SYMMATRIXNDIM 10 // total number of independent elements of a symmetric matrix
1079 
1081 #define NUMPFLAGS (6)
1082 #define NUMFAILPFLAGS (2)
1083 
1085 
1088 #define FLAGUTOPRIMFAIL 0 // changes behavior of fixup() on MHD quantities
1089 #define FLAGUTOPRIMRADFAIL 1 // changes behavior of fixup() on radiation quantities
1090 
1093 #define FLAGREALLIM 2 // value of limiter to be used
1094 #define FLAGBSQORHO 3 // set when B^2/RHO > BSQORHOLIMIT ; currently changes behavior of slope_lim
1095 #define FLAGBSQOU 4 // set when B^2/u > BSQOULIMIT
1096 #define FLAGREALFLUX 5 // type of flux to use
1097 
1098 
1099 
1100 
1101 #define NUMSOURCES 3
1102 
1103 
1104 #define GEOMSOURCE 0 // SHOULD ALWAYS BE 0 !
1105 #define RADSOURCE 1
1106 #define RADSOURCE2 2
1107 
1108 
1109 
1110 
1111 
1113 #define NUMFLUXTERMS (7)
1114 
1115 
1121 #define ORDERDEBUG 3
1122 
1133 #define NUMENODEBUGS 6
1134 
1135 
1138 #define MAXITERDTSTAGES 2
1139 
1140 
1141 
1144 //#define NUMDTDS 11
1145 //#define DTDUMP 0
1146 //#define DTAVG 1
1147 //#define DTENER 2
1148 //#define DTIMAGE 3
1149 //#define DTDEBUG 4
1150 //#define DTDISS 5
1151 //#define DTFIELDLINE 6
1152 //#define DTFLUX 7
1153 //#define DTOTHER 8
1154 //#define DTEOS 9
1155 //#define DTVPOT 10
1156 
1157 
1158 
1159 
1160 
1162 #define TT 0
1163 #define RR 1
1164 #define TH 2
1165 #define PH 3
1166 
1167 
1171 #define NPG 8
1172 #define NOWHERE -1 // tells a function that not necessarily requesting value at a standard grid location (unusual) -- this stores no memroy, so doesn't increase NPG
1173 #define CENT 0
1174 #define FACE1 1
1175 #define FACE2 2
1176 #define FACE3 3
1177 #define CORN1 4 // corner in 2-3 plane
1178 #define CORN2 5 // corner in 1-3 plane
1179 #define CORN3 6 // corner in 1-2 plane
1180 #define CORNT 7 // true corner: full 3D corner (only required for 3D)
1181 
1183 #define NUMPRIMGRIDPOS 2
1184 #define CENTGRID 0
1185 #define STAGGRID 1
1186 
1188 #define INIT_OUT 0
1189 #define DUMP_OUT 1
1190 #define IMAGE_OUT 1
1191 #define LOG_OUT 1
1192 #define FINAL_OUT 2
1193 #define FUTURE_OUT 3
1194 
1196 #define DOINGFUTUREOUT -100
1197 
1198 
1199 #define SURFACETOTAL 0
1200 #define VOLUMETOTAL 1
1201 
1202 #define CONSTYPE 0
1203 #define SURFACETYPE 1
1204 #define CUMULATIVETYPE 2
1205 #define CONSJETINNERTYPE 3
1206 #define CONSJETOUTERTYPE 4
1207 #define CUMULATIVETYPE2 5
1208 #define CONSTYPE2 6
1209 #define CUMULATIVETYPE3 7
1210 
1211 #define NOTHINGHEAD -1
1212 #define WRITEHEAD 0
1213 #define READHEAD 1
1214 
1215 #define TIMESERIESAREAMAP 0
1216 #define FINALTDUMPAREAMAP 1
1217 
1218 #define WRITEFILE 0
1219 #define READFILE 1
1220 
1221 #define ENERFNAME "ener.out"
1222 #define GENERFNAME "gener.out"
1223 
1224 
1225 
1228 #define NUMDUMPTYPES 22 // number of dump types listed below
1229 
1230 #define RESTARTDUMPTYPE 0
1231 #define RESTARTUPPERPOLEDUMPTYPE 1
1232 #define RESTARTMETRICDUMPTYPE 2
1233 #define IMAGEDUMPTYPE 3
1234 #define MAINDUMPTYPE 4
1235 #define GRIDDUMPTYPE 5
1236 #define AVG1DUMPTYPE 6
1237 #define AVG2DUMPTYPE 7 // used when needing AVG2DUMPTYPE to avoid too large a file size for avgdump
1238 #define DEBUGDUMPTYPE 8
1239 #define FIELDLINEDUMPTYPE 9
1240 #define ENODEBUGDUMPTYPE 10
1241 #define DISSDUMPTYPE 11
1242 #define OTHERDUMPTYPE 12
1243 #define FLUXDUMPTYPE 13
1244 #define EOSDUMPTYPE 14
1245 #define RADDUMPTYPE 15
1246 #define VPOTDUMPTYPE 16
1247 #define FAILFLOORDUDUMPTYPE 17
1248 #define ENERDUMPTYPE 18
1249 #define DISSMEASUREDUMPTYPE 19
1250 #define FLUXSIMPLEDUMPTYPE 20
1251 #define FAKEDUMPTYPE 21
1252 
1253 #define MYDUMPNAMELIST {"RESTARTDUMPTYPE","RESTARTUPPERPOLEDUMPTYPE","RESTARTMETRICDUMPTYPE","IMAGEDUMPTYPE","MAINDUMPTYPE","GRIDDUMPTYPE","AVG1DUMPTYPE","AVG2DUMPTYPE","DEBUGDUMPTYPE","FIELDLINEDUMPTYPE","ENODEBUGDUMPTYPE","DISSDUMPTYPE","OTHERDUMPTYPE","FLUXDUMPTYPE","EOSDUMPTYPE","RADDUMPTYPE","VPOTDUMPTYPE","FAILFLOORDUDUMPTYPE","ENERDUMPTYPE","DISSMEASUREDUMPTYPE","FLUXSIMPLEDUMPTYPE","FAKEDUMPTYPE"}
1254 
1255 
1256 #define NUMIMAGEPARMS 3
1257 
1258 #define ORIGIN 0
1259 #define LMIN 1
1260 #define LMAX 2
1261 
1262 
1263 // for rescale() in rescale_interp.c
1264 #define DORESCALE 1
1265 #define UNRESCALE -1
1266 
1267 // for diag_fixup() in fixup.c
1268 #define DOMODCONS 1
1269 #define NOMODCONS 0
1270 #define DOONESTEPCONS -1
1271 
1272 #include "global.nondepmnemonics.rad.h" // KORAL
1273 
1274 
1275 
1276 
1277 
1278