HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
global.depmnemonics.h
Go to the documentation of this file.
1 
10 
11 
12 #include "global.stepch.h"
13 
14 
16 #define STORE_GAMMA_PRIM_REDUCTION_FRACTION (WENO_USE_PRIM_REDUCTION && (VARTOINTERP == PRIMTOINTERP_3VEL_GAMMA || VARTOINTERP == PRIMTOINTERP_RHOV_GAMMA || VARTOINTERP == PRIMTOINTERP_3VELREL_GAMMAREL || VARTOINTERP == PRIMTOINTERP_3VELREL_GAMMAREL_DXDXP) )
17 
18 #if( WENO_USE_PRIM_REDUCTION )
19 //#error WENO_USE_PRIM_REDUCTION is broken. A variable is not defined -- need to correct. ** BROKEN **
20 #endif
21 
22 
23 
24 #if( MERGEDC2EA2CMETHOD )
25 #define NUM_CVT_TYPES 8 //4 usual recon types + 4 derivatives
26 #else
27 #define NUM_CVT_TYPES 4
28 #endif
29 
30 
31 #if(EOMTYPE==EOMGRMHD||EOMTYPE==EOMCOLDGRMHD||EOMTYPE==EOMENTROPYGRMHD)
32 #define DOEVOLVERHO 1
33 #else
34 #define DOEVOLVERHO 0
35 #endif
36 
37 #if(EOMTYPE==EOMGRMHD||EOMTYPE==EOMENTROPYGRMHD)
38 #define DOEVOLVEUU 1
39 #else
40 #define DOEVOLVEUU 0
41 #endif
42 
43 
45 #if( DOEVOLVERHO||DOEVOLVEUU)
46 #define CHECKRHONEGZERORESTART 1
47 #else
48 #define CHECKRHONEGZERORESTART 0
49 #endif
50 
51 
53 #if(EOMRADTYPE!=EOMRADNONE)
54 #define NUMTRUEEOMSETS (2)
55 //#define NUMEOMSETS (NUMTRUEEOMSETS) // MHD+RAD
56 #define NUMEOMSETS (NUMTRUEEOMSETS+1) // MHD+RADforflux + RADfordt
57 #else
58 #define NUMTRUEEOMSETS (1) // MHD
59 #define NUMEOMSETS (NUMTRUEEOMSETS)
60 #endif
61 
62 #define EOMSETMHD 0
63 #define EOMSETRAD 1
64 #define EOMSETRADFORDT 2
65 
66 #if(DIVERGENCEMETHOD==DIVMETHODPREFLUX)
67 #define NUMCOND 2
68 #else
69 #define NUMCOND 1
70 #endif
71 
73 #define NUMSHOCKPLS (3*(NUMTRUEEOMSETS*NUMCOND))
74 #define SHOCKPLDIR1 (0)
75 #define SHOCKPLDIR2 (SHOCKPLDIR1+1)
76 #define SHOCKPLDIR3 (SHOCKPLDIR2+1)
77 #define SHOCKRADPLDIR1 (SHOCKPLDIR3+1)
78 #define SHOCKRADPLDIR2 (SHOCKRADPLDIR1+1)
79 #define SHOCKRADPLDIR3 (SHOCKRADPLDIR2+1)
80 
81 #define DIVPLDIR1 (SHOCKRADPLDIR3+1)
82 #define DIVPLDIR2 (DIVPLDIR1+1)
83 #define DIVPLDIR3 (DIVPLDIR2+1)
84 #define DIVRADPLDIR1 (DIVPLDIR3+1)
85 #define DIVRADPLDIR2 (DIVRADPLDIR1+1)
86 #define DIVRADPLDIR3 (DIVRADPLDIR2+1)
87 
90 #define SHOCKPLSTOREPTOT (0)
91 #define SHOCKPLSTOREVEL1 (1)
92 #define SHOCKPLSTOREVEL2 (SHOCKPLSTOREVEL1+1)
93 #define SHOCKPLSTOREVEL3 (SHOCKPLSTOREVEL2+1)
94 #define SHOCKRADPLSTOREPTOT (SHOCKPLSTOREVEL3+1)
95 #define SHOCKRADPLSTOREVEL1 (SHOCKRADPLSTOREPTOT+1)
96 #define SHOCKRADPLSTOREVEL2 (SHOCKRADPLSTOREVEL1+1)
97 #define SHOCKRADPLSTOREVEL3 (SHOCKRADPLSTOREVEL2+1)
98 
99 #if(DIVERGENCEMETHOD==DIVMETHODPOSTFLUX)
100 #define NSPECIAL 6
101 
102 #define SPECIALPL1 RHO
103 #define SPECIALPL2 UU
104 #define SPECIALPL3 B1
105 #define SPECIALPL4 B2
106 #define SPECIALPL5 B3
107 #define SPECIALPL6 URAD0
108 #else
109 #define NSPECIAL 0
110 #define SPECIALPL1 RHO // dummy, not used.
111 #define SPECIALPL2 UU // dummy, not used.
112 #define SPECIALPL3 B1
113 #define SPECIALPL4 B2
114 #define SPECIALPL5 B3
115 #define SPECIALPL6 URAD0
116 #endif
117 
118 #define DOALLPL 0
119 #define DOBPL 1
120 #define DONONBPL 2
121 #define DOSPECIALPL 3
122 
123 #define BPL(pl) (pl==B1 || pl==B2 || pl==B3)
124 
125 // YFL for: rho,T10,T13,R10,R13
126 #define NUMYFL (1 + 2 + 2*(EOMRADTYPE!=EOMRADNONE))
127 #define YFLPL(pl) (pl==YFL1 || pl==YFL2 || pl==YFL3 || pl==YFL4 || pl==YFL5)
128 #define POSPL(pl) (pl==RHO || pl==UU || pl==URAD0 || YFLPL(pl) || pl==YL || pl==YNU)
129 
130 #define SCALARPL(pl) (YFLPL(pl) || pl==YL || pl==YNU)
131 
132 #define DENSITYPL(pl) (pl==RHO || pl==UU || pl==URAD0 || SCALARPL(pl))
133 
134 #define RADPL(pl) (pl==PRAD0 || pl==PRAD1 || pl==PRAD2 || pl==PRAD3)
135 #define RADFULLPL(pl) (pl==PRAD0 || pl==PRAD1 || pl==PRAD2 || pl==PRAD3 || pl==YFL4 || pl==YFL5)
136 
137 #define NONRADFULLPL(pl) (!RADFULLPL(pl))
138 
139 
140 
141 #if((WHICHCURRENTCALC==CURRENTCALC0)||(WHICHCURRENTCALC==CURRENTCALC2))
142 #define NUMCURRENTSLOTS 5
143 #elif(WHICHCURRENTCALC==CURRENTCALC1)
144 #define NUMCURRENTSLOTS 6
145 #endif
146 
147 #if(SPLITPRESSURETERMINFLUXMA)
148 
149 #define FLUXSPLITPMA(dir) (B1+dir-1) // put in unused magnetic field part
150 #else
151 #define FLUXSPLITPMA(dir) (-100) // so FLUXSPLITPMA(dir)==pl is always 0
152 #endif
153 
154 #if(SPLITPRESSURETERMINFLUXEM)
155 
156 #define FLUXSPLITPEM(dir) (RHO) // put in unused mass advection part
157 #else
158 #define FLUXSPLITPEM(dir) (-100) // so FLUXSPLITPEM(dir)==pl is always 0
159 #endif
160 
161 
162 #if((USESTOREDSPEEDSFORFLUX==0)||(STOREWAVESPEEDS==0))
163 #define USEGLOBALWAVE 0
164 #else
165 #define USEGLOBALWAVE 1
166 #endif
167 
168 
170 #define COMPUTE4FIELDforFLUX (MAXWELL==GENMAXWELL || USEGLOBALWAVE==0)
171 
173 #define COMPUTE4FIELDatALL (COMPUTE4FIELDforFLUX || LIMITDTWITHSOURCETERM || ANALYTICSOURCE || PLINEWITHFIELD || VLINEWITHGDETRHO || TRUEFAST==1)
174 
175 
176 
177 
182 #if(WHICHEOM!=WITHGDET)
183 #define EOMFUNCNAME eomfunc // requires special care within code -- only used when doing eomfunc_func()
184 #define EOMFUNCASSIGN(pl) eomfunc[pl] // requires special care within code -- only used when doing eomfunc_func()#define EOMFUNCPTR eomfuncptr // requires special care within code -- only used when doing eomfunc_func()
185 #define EOMFUNCPTR eomfuncptr
186 #define EOMFUNCMAC(pl) eomfunc[pl]
187 #define LOCALEOMFUNCMAC(pl) localeomfunc[pl] // used when did GETLOCALMETRIC
188 #define IEOMFUNCNOSINGMAC(pl) ieomfuncnosing[pl]
189 #else
190 #define EOMFUNCNAME gdet // requires special care within code -- only used when doing eomfunc_func()
191 #define EOMFUNCASSIGN(pl) (*gdet) // requires special care within code -- only used when doing eomfunc_func()
192 #define EOMFUNCPTR &gdet
193 #define EOMFUNCMAC(pl) gdet
194 #define LOCALEOMFUNCMAC(pl) localgdet[0] // used when did GETLOCALMETRIC
195 #define IEOMFUNCNOSINGMAC(pl) igdetnosing
196 #endif
197 
198 
200 #define SIGNFLIPGDET (FLIPGDETAXIS==0 ? 1.0 : -1.0)
201 
203 #define SIGNFLIPU1 (FLIPU1AXIS==0 ? 1.0 : -1.0)
204 #define SIGNFLIPB1 (FLIPB1AXIS==0 ? 1.0 : -1.0)
205 
206 #define SIGNFLIPU2 (FLIPU2AXIS==0 ? 1.0 : -1.0)
207 #define SIGNFLIPB2 (FLIPB2AXIS==0 ? 1.0 : -1.0)
208 
209 #define SIGNFLIPU3 (FLIPU3AXIS==0 ? 1.0 : -1.0)
210 #define SIGNFLIPB3 (FLIPB3AXIS==0 ? 1.0 : -1.0)
211 
212 
213 
218 
219 #if(N1>1)
220 //#define im1 (i-1)
221 #define im1mac(i) (i-1)
222 //#define ip1 (i+1)
223 #define ip1mac(i) (i+1)
224 
225 //#define irefshift (2*N1-i-1)
226 #define irefshiftmac(i) (2*N1-i-1)
227 
228 #else
229 
230 //#define im1 (i)
231 #define im1mac(i) (i)
232 //#define ip1 (i)
233 #define ip1mac(i) (i)
234 
235 //#define irefshift (i)
236 #define irefshiftmac(i) (i)
237 
238 #endif
239 
240 #if(N2>1)
241 //#define jm1 (j-1)
242 #define jm1mac(j) (j-1)
243 //#define jp1 (j+1)
244 #define jp1mac(j) (j+1)
245 //#define jrefshift (2*N2-j-1)
246 #define jrefshiftmac(j) (2*N2-j-1)
247 #else
248 //#define jm1 (j)
249 #define jm1mac(j) (j)
250 //#define jp1 (j)
251 #define jp1mac(j) (j)
252 //#define jrefshift (j)
253 #define jrefshiftmac(j) (j)
254 #endif
255 
256 #if(N3>1)
257 //#define km1 (k-1)
258 #define km1mac(k) (k-1)
259 //#define kp1 (k+1)
260 #define kp1mac(k) (k+1)
261 //#define krefshift (2*N3-k-1)
262 #define krefshiftmac(k) (2*N3-k-1)
263 #else
264 //#define km1 (k)
265 #define km1mac(k) (k)
266 //#define kp1 (k)
267 #define kp1mac(k) (k)
268 //#define krefshift (k)
269 #define krefshiftmac(k) (k)
270 #endif
271 
272 
273 // used to tell if N>1 or not (can just ask directly)
274 #define N1NOT1 ((N1>1) ? 1 : 0)
275 #define N2NOT1 ((N2>1) ? 1 : 0)
276 #define N3NOT1 ((N3>1) ? 1 : 0)
277 
278 // GODMARK: looks like I can set just above and rest are set for me for any case
279 
280 // GODMARK: check these new conditions
281 
282 // restrict loops only over relevant domain in reduced dimension case
283 
284 
285 
286 // 3 maximum boundary zones needed if doing Parabolic interpolation
287 // maximum number of boundary zones needed for all calculations
288 
289 // have to set manually if going to set DOENOFLUX at runtime.
290 
291 
292 
294 #define SHIFT1 N1NOT1
295 #define N1BND MAXBND*N1NOT1
296 
297 #define INFULL1 (-N1BND)
298 #define INFULLP11 (-N1BND+SHIFT1)
299 #define OUTFULL1 (N1-1+N1BND)
300 #define OUTFULLM11 (N1-1+N1BND-SHIFT1)
301 #define OUTFULLP11 (N1-1+N1BND+SHIFT1)
302 
303 #define INHALF1 (-N1BND/2)
304 #define OUTHALF1 (N1-1+N1BND/2)
305 #define INP11 (-N1BND+SHIFT1)
306 #define OUTP11 (N1-1+N1BND-SHIFT1)
307 #define INM1 -SHIFT1
308 #define OUTM1 N1-1+SHIFT1
309 
312 #define INBOUNDLO1 (-N1BND)
313 #define INBOUNDHI1 (-1)
314 
315 #define OUTBOUNDLO1 (N1)
316 #define OUTBOUNDHI1 (N1+N1BND-1)
317 
318 //#define INFACEBOUNDLO1 (-N1BND) // (-N1BND+1) // GODMARK: large domain used for easy checking of fluxes after bound_flux().
319 //#define INFACEBOUNDHI1 (-1+SHIFT1)
320 
323 #define INFACEBOUNDLO1 (-N1BND)
324 #define INFACEBOUNDHI1 (-1)
325 
326 
329 //#define OUTFACEBOUNDLO1 (N1+1)
330 #define OUTFACEBOUNDLO1 (N1)
331 #define OUTFACEBOUNDHI1 (N1+N1BND-1)
332 
334 #define SHIFT2 N2NOT1
335 #define N2BND MAXBND*N2NOT1
336 
337 #define INFULL2 (-N2BND)
338 #define INFULLP12 (-N2BND+SHIFT2)
339 #define OUTFULL2 (N2-1+N2BND)
340 #define OUTFULLM12 (N2-1+N2BND-SHIFT2)
341 #define OUTFULLP12 (N2-1+N2BND+SHIFT2)
342 
343 #define INHALF2 (-N2BND/2)
344 #define OUTHALF2 (N2-1+N2BND/2)
345 #define INP12 (-N2BND+SHIFT2)
346 #define OUTP12 (N2-1+N2BND-SHIFT2)
347 #define INM2 -SHIFT2
348 #define OUTM2 N2-1+SHIFT2
349 
352 #define INBOUNDLO2 (-N2BND)
353 #define INBOUNDHI2 (-1)
354 
355 #define OUTBOUNDLO2 (N2)
356 #define OUTBOUNDHI2 (N2+N2BND-1)
357 
358 //#define INFACEBOUNDLO2 (-N2BND)
359 //#define INFACEBOUNDHI2 (-1+SHIFT2)
360 
362 //#define INFACEBOUNDLO2 (-N2BND+1)
363 #define INFACEBOUNDLO2 (-N2BND)
364 #define INFACEBOUNDHI2 (-1)
365 
366 
368 //#define OUTFACEBOUNDLO2 (N2+1)
369 #define OUTFACEBOUNDLO2 (N2)
370 #define OUTFACEBOUNDHI2 (N2+N2BND-1)
371 
372 
374 #define SHIFT3 N3NOT1
375 #define N3BND MAXBND*N3NOT1
376 
377 #define INFULL3 (-N3BND)
378 #define INFULLP13 (-N3BND+SHIFT3)
379 #define OUTFULL3 (N3-1+N3BND)
380 #define OUTFULLM13 (N3-1+N3BND-SHIFT3)
381 #define OUTFULLP13 (N3-1+N3BND+SHIFT3)
382 
383 #define INHALF3 (-N3BND/2)
384 #define OUTHALF3 (N3-1+N3BND/2)
385 #define INP13 (-N3BND+SHIFT3)
386 #define OUTP13 (N3-1+N3BND-SHIFT3)
387 #define INM3 -SHIFT3
388 #define OUTM3 N3-1+SHIFT3
389 
392 #define INBOUNDLO3 (-N3BND)
393 #define INBOUNDHI3 (-1)
394 
395 #define OUTBOUNDLO3 (N3)
396 #define OUTBOUNDHI3 (N3+N3BND-1)
397 
398 //#define INFACEBOUNDLO3 (-N3BND)
399 //#define INFACEBOUNDHI3 (-1+SHIFT3)
400 
402 //#define INFACEBOUNDLO3 (-N3BND+1)
403 #define INFACEBOUNDLO3 (-N3BND)
404 #define INFACEBOUNDHI3 (-1)
405 
406 
408 //#define OUTFACEBOUNDLO3 (N3+1)
409 #define OUTFACEBOUNDLO3 (N3)
410 #define OUTFACEBOUNDHI3 (N3+N3BND-1)
411 
412 
413 
414 
415 
416 
417 /* NBIG is bigger of N1 and N2 and N3 */
418 #define NBIG1 ((N1>N2) ? N1 : N2)
419 #define NBIG ((NBIG1>N3) ? NBIG1 : N3)
420 
421 #define NBIGBND1 ((N1BND>N2BND) ? N1BND : N2BND)
422 #define NBIGBND ((NBIGBND1>N3BND) ? NBIGBND1 : N3BND)
423 
425 //#define N1OFF (((N1BND>0)&&(N1>1)) ? 1 : 0)
426 //#define N2OFF (((N2BND>0)&&(N2>1)) ? 1 : 0)
427 //#define N3OFF (((N3BND>0)&&(N3>1)) ? 1 : 0)
428 
429 
430 
431 
432 #if(LIMADJUST!=LIMITERFIXED && FLUXADJUST!=FLUXFIXED)
433 #define NUMPFLAGSBOUND (NUMPFLAGS) // all
434 #elif(LIMADJUST!=LIMITERFIXED)
435 #define NUMPFLAGSBOUND (1+FLAGREALLIM) // only 0,1,2
436 #elif(EOMRADTYPE!=EOMRADNONE)
437 #define NUMPFLAGSBOUND (1+FLAGUTOPRIMRADFAIL) // only 0,1
438 #else
439 #define NUMPFLAGSBOUND (1+FLAGUTOPRIMFAIL) // only 0
440 #endif
441 
442 
443 // number of boundary cells to choose for setting and MPI-copying and using of pflag boundary cells
444 #define NUMPFLAGBND1 N1BND
445 #define NUMPFLAGBND2 N2BND
446 #define NUMPFLAGBND3 N3BND
447 #define MAXNUMPFLAGBND (MAX(MAX(NUMPFLAGBND1,NUMPFLAGBND2),NUMPFLAGBND3))
448 
449 
452 
453 
455 #define NUMCORNINTERP 4
456 
458 #define NUMCS 2
459 #define CMIN 0
460 #define CMAX 1
461 
462 #define MINMAX(q,a,b) ( ((q)==CMIN) ? MIN(a,b) : MAX(a,b) )
463 
464 
465 
466 
467 
468 #if((DODISS||DODISSVSR)&&(DOENTROPY==DONOENTROPY))
469 #error Turn on entropy evolution if want dissipation
470 #endif
471 
472 
473 
474 
477 #include "global.defnprs.h"
478 
479 
480 
481 
482 #define NMAXBOUND ((NPRBOUND>NFLUXBOUND) ? NPRBOUND : NFLUXBOUND)
483 
484 
485 
486 
487 
488 // total + pake + en + em + rad
489 #define NUMPHYSICALFLUXTERMS (1 + 1+1+1 + (EOMRADTYPE!=EOMRADNONE))
490 #define NUMFLUXESTOSAVE (1 + 2 + (EOMRADTYPE!=EOMRADNONE)*2 + NUMYFL*(DOYFL!=0) + (DOYL!=0) + (DOYNU!=0) )
491 #define FLUXESTOSAVEPL(pl) (pl==RHO || pl==UU || pl==U3 || pl==URAD0 || pl==URAD3 || YFLPL(pl) || pl==YL || pl==YNU)
492 
493 #if(FLUXDUMP==0)
494 #define NUMFLUXDUMP (1)
495 
496 #elif(FLUXDUMP==1)
497 
498 
499 #define NUMFLUXDUMP (NPR*4 + NPR*3*(1+2+2))
500 
501 #else
502 
503 #define NUMFLUXDUMP (NPR*(NUMPHYSICALFLUXTERMS))
504 
505 #endif
506 
507 #if(MODIFYEMFORVPOT==MODIFYVPOT || TRACKVPOT>0 || EVOLVEWITHVPOT>0)
508 
509 
510 #define NUMVPOT (NDIM*4)
511 #define NUMVPOTDUMP (NDIM)
512 #else
513 #define NUMVPOT (0)
514 #define NUMVPOTDUMP (0)
515 #endif
516 
517 
520 #define NUMNORMDUMP (NPR+1+4*4+6) // number of "normal" dump variables
521 
522 #define NUMFARADAY 6
523 #define NUMOTHER 1
524 #define NUMSTRESSTERMS (NUMFLUXTERMS*NDIM*NDIM)
525 
533 
534 #define FLOATTYPE 0
535 #define DOUBLETYPE 1
536 #define LONGDOUBLETYPE 2
537 #define LONGLONGINTTYPE 3
538 
539 
540 #if(REALTYPE>SENSITIVE)
541 god=deathadflkjasdflkjasdlfkja242424
542 #endif
543 
544 #ifndef FLT_EPSILON
545 #define FLT_EPSILON (1.19209290e-07F)
546 #endif
547 
548 #ifndef DBL_EPSILON
549 #define DBL_EPSILON (2.2204460492503131e-16L)
550 #endif
551 
552 #ifndef LDBL_EPSILON
553 #define LDBL_EPSILON (1.08420217248550443401e-19L)
554 #endif
555 
556 
557  // need not change below datatype stuff
558 #if(REALTYPE==FLOATTYPE)
559 #define MINNUMREPRESENT FLT_MIN
560 #define NUMEPSILON FLT_EPSILON
561 #elif(REALTYPE==DOUBLETYPE)
562 #define MINNUMREPRESENT DBL_MIN
563 #define NUMEPSILON DBL_EPSILON
564 #elif(REALTYPE==LONGDOUBLETYPE)
565 #define MINNUMREPRESENT DBL_MIN
566 #define NUMEPSILON LDBL_EPSILON
567 #endif
568 
569 #if(SENSITIVE==FLOATTYPE) // for sensitive counters
570 #define SFTYPE float
571 #elif(SENSITIVE==DOUBLETYPE)
572 #define SFTYPE double
573 #elif(SENSITIVE==LONGDOUBLETYPE)
574 #define SFTYPE long double
575 #endif
576 
577 
578  // used for numerical differencing
579 #define NUMSQRTEPSILON (sqrt(NUMEPSILON))
580 #define NUMSQEPSILON (NUMEPSILON*NUMEPSILON)
581 
582  // for finite differences.
583  // If one uses (say) 1E-5 for DX and has (Vh-Vl)/(Xh-Xl), then even if Xh-Xl is machine representable, Xh and Xl may not be.
584 #define MY1EM4 (1.0/(2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0)) // 1/2^{13} \approx 1.2207E-4\sim 1E-4.
585 
586 #define MY1EM5 (1.0/(2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0)) // 1/2^{17} \approx 7.6E-6\sim 1E-5.
587 
588 #define MY1EM6 (1.0/(2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0)) // 1/2^{20} \approx 7.6E-6\sim 1E-6.
589 
590 
591 #if(COUNTTYPE==DOUBLETYPE)
592 #define CTYPE double
593 #define CTYPEHEADERONEOUT "%26.20g"
594 #define CTYPEHEADERONEIN "%lf"
595 #elif(COUNTTYPE==LONGLONGINTTYPE)
596 #define CTYPE long long int
597 #define CTYPEHEADERONEOUT "%lld"
598 #define CTYPEHEADERONEIN "%lld"
599 #endif
600 
601 
602 #if(PFLAGTYPE==INTTYPE)
603 #define PFTYPE signed int
604 #define PFTYPEHEADERONEOUT "%d"
605 #define PFTYPEHEADERONEIN "%d"
606 #elif(PFLAGTYPE==CHARTYPE)
607  // on Harvard's BlueGene/L char is by default unsigned!, so force signed as required by our code
608 #define PFTYPE signed char
609 #define PFTYPEHEADERONEOUT "%d"
610 #define PFTYPEHEADERONEIN "%d"
611 #endif
612 
613 
614  // GODMARK: NUMENERVAR outdated?
615 #define NUMENERVAR (6+NPR+NPR+3)
616 
617 
618  /* numerical convenience */
619 #if(REALTYPE==FLOATTYPE)
620 #define VERYBIG (1.e37)
621 #define BIG (1.e+30)
622 #define SMALL (1.e-35)
623 #define KINDASMALL (1.e-30)
624 #else
625 #define VERYBIG (1.e150)
626 #define BIG (1.e+100)
627 #define SMALL (1.e-300)
628 #define KINDASMALL (1.e-60)
629 #endif
630 
631 
632 #define SLEPSILON (1.e-6)
633 
634 
635  /* size of step in numerical derivative evaluations */
636 #define HSTEP (1.e-5)
637 
638 
639 
640 
641 #if(SENSITIVE==LONGDOUBLETYPE)
642 #define SFTYPEHEADERONEIN "%Lf"
643  // assume sensitive>=realtype in precision
644 #if(REALTYPE==LONGDOUBLETYPE) // was FLOATTYPE==REALTYPE and SENS=DOUBLETYPE
645 #define HEADERONEIN "%Lf"
646 #define HEADER2IN "%Lf %Lf"
647 #define HEADER3IN "%Lf %Lf %Lf"
648 #define HEADER4IN "%Lf %Lf %Lf %Lf"
649 #define HEADER5IN "%Lf %Lf %Lf %Lf %Lf"
650 #define HEADER6IN "%Lf %Lf %Lf %Lf %Lf %Lf"
651 #define HEADER7IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf"
652 #define HEADER8IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
653 #define HEADER9IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
654 #define HEADER10IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
655 #define HEADER14IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
656 #define HEADER17IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
657 #define HEADER18IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
658 #define HEADER19IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
659 #define HEADER21IN "%Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
660 #define RESTARTHEADER "%d %d %d " \
661  "%Lf %Lf %ld %Lf %Lf %Lf %Lf %Lf " \
662  "%Lf %d %d %d %d %d %d %d %d " \
663  "%Lf %Lf %Lf %Lf %d " \
664  "%d %d %d %d %d %d " \
665  "%ld %d %d %d %ld %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf %Lf"
666 #elif(REALTYPE==DOUBLETYPE)
667 #define HEADERONEIN "%lf"
668 #define HEADER2IN "%lf %lf"
669 #define HEADER3IN "%lf %lf %lf"
670 #define HEADER4IN "%lf %lf %lf %lf"
671 #define HEADER5IN "%lf %lf %lf %lf %lf"
672 #define HEADER6IN "%lf %lf %lf %lf %lf %lf"
673 #define HEADER7IN "%lf %lf %lf %lf %lf %lf %lf"
674 #define HEADER8IN "%lf %lf %lf %lf %lf %lf %lf %lf"
675 #define HEADER9IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf"
676 #define HEADER10IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
677 #define HEADER14IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
678 #define HEADER17IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
679 #define HEADER18IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
680 #define HEADER19IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
681 #define HEADER21IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
682 #define RESTARTHEADER "%d %d %d " \
683  "%Lf %Lf %ld %Lf %Lf %Lf %lf %lf " \
684  "%Lf %d %d %d %d %d %d %d %d " \
685  "%lf %lf %lf %lf %d " \
686  "%d %d %d %d %d %d " \
687  "%ld %d %d %d %ld %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
688 #elif(REALTYPE==FLOATTYPE)
689 #define HEADERONEIN "%f"
690 #define HEADER2IN "%f %f"
691 #define HEADER3IN "%f %f %f"
692 #define HEADER4IN "%f %f %f %f"
693 #define HEADER5IN "%f %f %f %f %f"
694 #define HEADER6IN "%f %f %f %f %f %f"
695 #define HEADER7IN "%f %f %f %f %f %f %f"
696 #define HEADER8IN "%f %f %f %f %f %f %f %f"
697 #define HEADER9IN "%f %f %f %f %f %f %f %f %f"
698 #define HEADER10IN "%f %f %f %f %f %f %f %f %f %f"
699 #define HEADER14IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f"
700 #define HEADER17IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
701 #define HEADER18IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
702 #define HEADER19IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
703 #define HEADER21IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
704 #define RESTARTHEADER "%d %d %d " \
705  "%Lf %Lf %ld %Lf %Lf %Lf %f %f " \
706  "%Lf %d %d %d %d %d %d %d %d " \
707  "%f %f %f %f %d " \
708  "%d %d %d %d %d %d " \
709  "%ld %d %d %d %ld %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f %f %f"
710 #endif
711 
712 #elif(SENSITIVE==DOUBLETYPE)
713 #define SFTYPEHEADERONEIN "%lf"
714  // assume sensitive>=realtype in precision
715 #if(REALTYPE==DOUBLETYPE)
716 #define HEADERONEIN "%lf"
717 #define HEADER2IN "%lf %lf"
718 #define HEADER3IN "%lf %lf %lf"
719 #define HEADER4IN "%lf %lf %lf %lf"
720 #define HEADER5IN "%lf %lf %lf %lf %lf"
721 #define HEADER6IN "%lf %lf %lf %lf %lf %lf"
722 #define HEADER7IN "%lf %lf %lf %lf %lf %lf %lf"
723 #define HEADER8IN "%lf %lf %lf %lf %lf %lf %lf %lf"
724 #define HEADER9IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf"
725 #define HEADER10IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
726 #define HEADER14IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
727 #define HEADER17IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
728 #define HEADER18IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
729 #define HEADER19IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
730 #define HEADER21IN "%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
731 #define RESTARTHEADER "%d %d %d " \
732  "%lf %lf %ld %lf %lf %lf %lf %lf " \
733  "%lf %d %d %d %d %d %d %d %d " \
734  "%lf %lf %lf %lf %d " \
735  "%d %d %d %d %d %d " \
736  "%ld %d %d %d %ld %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf"
737 #elif(REALTYPE==FLOATTYPE)
738 #define HEADERONEIN "%f"
739 #define HEADER2IN "%f %f"
740 #define HEADER3IN "%f %f %f"
741 #define HEADER4IN "%f %f %f %f"
742 #define HEADER5IN "%f %f %f %f %f"
743 #define HEADER6IN "%f %f %f %f %f %f"
744 #define HEADER7IN "%f %f %f %f %f %f %f"
745 #define HEADER8IN "%f %f %f %f %f %f %f %f"
746 #define HEADER9IN "%f %f %f %f %f %f %f %f %f"
747 #define HEADER10IN "%f %f %f %f %f %f %f %f %f %f"
748 #define HEADER14IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f"
749 #define HEADER17IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
750 #define HEADER18IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
751 #define HEADER19IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
752 #define HEADER21IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
753 #define RESTARTHEADER "%d %d %d " \
754  "%lf %lf %ld %lf %lf %lf %f %f " \
755  "%lf %d %d %d %d %d %d %d %d " \
756  "%f %f %f %f %d " \
757  "%d %d %d %d %d %d " \
758  "%ld %d %d %d %ld %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f %f %f"
759 #endif
760 
761 #elif(SENSITIVE==FLOATTYPE)
762 #define SFTYPEHEADERONEIN "%f"
763 
764 #if(REALTYPE==DOUBLETYPE)
765 #define RESTARTHEADER "" // dumb, so crash on compile
766 #elif(REALTYPE==FLOATTYPE)
767 #define HEADERONEIN "%f"
768 #define HEADER2IN "%f %f"
769 #define HEADER3IN "%f %f %f"
770 #define HEADER4IN "%f %f %f %f"
771 #define HEADER5IN "%f %f %f %f %f"
772 #define HEADER6IN "%f %f %f %f %f %f"
773 #define HEADER7IN "%f %f %f %f %f %f %f"
774 #define HEADER8IN "%f %f %f %f %f %f %f %f"
775 #define HEADER9IN "%f %f %f %f %f %f %f %f %f"
776 #define HEADER10IN "%f %f %f %f %f %f %f %f %f %f"
777 #define HEADER14IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f"
778 #define HEADER17IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
779 #define HEADER18IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
780 #define HEADER19IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
781 #define HEADER21IN "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
782 #define RESTARTHEADER "%d %d %d " \
783  "%f %f %ld %f %f %f %f %f " \
784  "%f %d %d %d %d %d %d %d %d " \
785  "%f %f %f %f %d " \
786  "%d %d %d %d %d %d " \
787  "%ld %d %d %d %ld %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f %f %f"
788 #endif
789 
790 #endif
791 
792 
793  // 2
794  // 6
795  // 10
796  // 3
797  // 5
798  // 4
799  // SUM=30
800  // 23+10=33
801  // total=63
802 #define WRITERESTARTHEADER "%lld %lld %lld " \
803  "%26.20g %26.20g %ld %26.20g %26.20g %26.20g %26.20g %26.20g " \
804  "%26.20g %d %d %d %d %d %d %d %d " \
805  "%26.20g %26.20g %26.20g %26.20g %d " \
806  "%d %d %d %d %d %d " \
807  "%ld %d %d %d %ld %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %26.20g %26.20g %26.20g %26.20g %26.20g %26.20g %26.20g %26.20g %26.20g %26.20g %26.20g %26.20g "
808 
809 #define HEADERONEOUT "%26.20g"
810 
811 #if(SENSITIVE==FLOATTYPE)
812 #define SFTYPEHEADERONEOUT "%31.26g"
813 #elif(SENSITIVE==DOUBLETYPE)
814 #define SFTYPEHEADERONEOUT "%31.26g"
815 #elif(SENSITIVE==LONGDOUBLETYPE)
816 #define SFTYPEHEADERONEOUT "%31.26Lg"
817 #endif
818 
819 
820 
821 #include "global.depmnemonics.rad.h" // KORAL