HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
global.structs.h
Go to the documentation of this file.
1 
9 
10 struct blink {
11  int num; // must stay int since used as argument to MPI functions that assume int -- so this limits number of elements one can pass.
12  struct blink * np;
13  // only used by cpu=0
14  int cpu; // which cpu
15  int i,j,k,col; // starting values for cpu=0
16  int ri,rj,rk,rcol; // reference values for first cpu in sequence of nodes for a single buffer
17  int end;
18 };
19 
20 
21 
25 #define interiorofgeompart1a \
26  int i,j,k,p;
27 
28 
29 #if(WHICHEOM==WITHGDET)
30 #define interiorofgeompart1b \
31  FTYPE gdet;
32 #else
33 #define interiorofgeompart1b \
34  FTYPE gdet; \
35  FTYPE eomfunc[NPR];
36 #endif
37 
38 // FTYPE gcov[SYMMATRIXNDIM]; \
39 
40 #define interiorofgeompart1c \
41  FTYPE gcov[SYMMATRIXNDIM]; \
42  FTYPE gcovpert[NDIM]; \
43  FTYPE alphalapse; \
44  FTYPE betasqoalphasq; \
45  FTYPE beta[NDIM];
46 
47 #if(WHICHEOM==WITHGDET)
48 
49 #define interiorofgeompart2 \
50  FTYPE igdetnosing;
51 #else
52 #define interiorofgeompart2 \
53  FTYPE igdetnosing; \
54  FTYPE ieomfuncnosing[NPR];
55 #endif
56 
57 // FTYPE gcon[SYMMATRIXNDIM];
58 
59 #if(GDETVOLDIFF)
60 #define interiorofgeompart3 \
61  FTYPE gdetvol;
62 #else
63 #define interiorofgeompart3
64 #endif
65 
66 #define interiorofgeompart4 \
67  FTYPE gcon[SYMMATRIXNDIM];
68 
69 // done with parts of structure
70 
71 #define interiorofgeom \
72  interiorofgeompart1a \
73  interiorofgeompart1b \
74  interiorofgeompart1c \
75  interiorofgeompart2 \
76  interiorofgeompart3 \
77  interiorofgeompart4
78 
79 #define interiorofgdetgeom \
80  interiorofgeompart1b \
81  interiorofgeompart2
82 
83 
84 
86 struct of_compgeom {
87 
89 
90 };
91 
92 
93 
94 
95 
96 #if(GETGEOMUSEPOINTER==0)
97 
100 #define of_geom of_compgeom
101 
102 struct of_allgeom {
103 
105 
106  // extra in "allgeom"
110 };
111 
112 
113 #else
114 
115 
116 struct of_geom {
117 
118  // dummy space for gset() version
120  FTYPE gengcovpert[NDIM];
121  FTYPE alphalapse;
122  FTYPE betasqoalphasq;
123  FTYPE beta[NDIM];
125 
126  // bit faster since not all values always used
127  FTYPE *gcov;
128  FTYPE *gcon;
129  FTYPE *gcovpert;
130 
131  FTYPE gdet,igdetnosing;
132 #if(GDETVOLDIFF)
133  FTYPE gdetvol;
134 #endif
135 #if(WHICHEOM!=WITHGDET)
136  FTYPE eomfunc[NPR],ieomfuncnosing[NPR];
137 #endif
138  int i,j,k,p;
139 };
140 
141 
142 struct of_allgeom {
143 
144 #if(GETGEOMUSEPOINTER==0)
146  FTYPE gcovpert[NDIM];
147  FTYPE alphalapse;
148  FTYPE betasqoalphasq;
149  FTYPE beta[NDIM];
151 #else
152  // dummy space for gset() version
155  FTYPE gengcovpert[NDIM];
156 
157  // bit faster since not all values always used
158  FTYPE *gcov;
159  FTYPE *gcovpert;
160  FTYPE alphalapse;
161  FTYPE betasqoalphasq;
162  FTYPE beta[NDIM];
163  FTYPE *gcon;
164 #endif
165 
166  FTYPE gdet,igdetnosing;
167 #if(GDETVOLDIFF)
168  FTYPE gdetvol;
169 #endif
170 #if(WHICHEOM!=WITHGDET)
171  FTYPE eomfunc[NPR],ieomfuncnosing[NPR];
172 #endif
173  int i,j,k,p;
174 
175  // extra in "allgeom"
176  FTYPE X[NDIM];
177  FTYPE V[NDIM];
178  FTYPE dxdxp[NDIM][NDIM];
179 };
180 #endif
181 
182 
183 
184 #if(NEWMETRICSTORAGE)
185 
186 struct of_gdetgeom {
187 
189 
190 };
191 #else
192 #define of_gdetgeom of_compgeom
193 #endif
194 
195 
196 
197 
203 struct of_state {
206 #if(EOMRADTYPE!=EOMRADNONE)
207  FTYPE uradcon[NDIM];
208  FTYPE uradcov[NDIM];
209 #else
212 #endif
215  FTYPE pressure; // aux thermodynamical quantity
216  FTYPE bsq; // b^2 that is often used
217  FTYPE entropy; //aux thermodynamical quantity
219  // OPTMARK: If don't use bcon,bcov, store Bcon/u^t and Bcov/u^t so avoid catastrophic cancellation but still avoid divisions.
220 
222 
223 #if(EOMRADTYPE!=EOMRADNONE)
225 #else
227 #endif
228 
229 
230 #if(MERGEDC2EA2CMETHOD)
231  // for merged method and stored by compute_and_store_???() functions
232 
233  FTYPE gdet;
234 #if(WHICHEOM!=WITHGDET)
235  FTYPE eomfunc[NPR]; // eomfunc
236 #endif
237  FTYPE prim[NPR];
238  FTYPE Blower[NDIM];
239  FTYPE vcon[NDIM];
240  FTYPE gdetBcon[NDIM];
241  FTYPE overut;
242 
243 #else
244  // avoid allocating since expensive for cache misses
245  // don't take more memory than needed for pointer references for code to compile
246  // FTYPE gdet;
247  //#if(WHICHEOM!=WITHGDET)
248  // FTYPE *eomfunc;
249  //#endif
250  // FTYPE *prim;
251  // FTYPE *Blower;
252  // FTYPE *gdetBcon; // for FLUXB==FLUXCTSTAG
253  // FTYPE *vcon; // for FLUXB==FLUXCTSTAG
254  // FTYPE overut;
255 
256 #endif
257 };
258 
259 
260 
261 
262 struct of_loop {
263  int is, ie;
264  int js, je;
265  int ks, ke;
266  int dir,intdir;
267  int ps, pe;
268  int bs, be;
269  int di,dj,dk;
270 };
271 
273  // outputs
275  int lntries;
276  int nstroke;
279  // inputs
280  FTYPE tryconv; // default is from u2p_defs.h: NEWT_TOL
281  FTYPE tryconvultrarel; // default is from u2p_defs.h: NEWT_TOL_ULTRAREL
282  FTYPE mintryconv; // default is from u2p_defs.h: MIN_NEWT_TOL
283  int maxiter; // default is from u2p_defs.h: MAX_NEWT_ITER
284  int extra_newt_iter; // EXTRA_NEWT_ITER
285  int extra_newt_iter_ultrarel; // EXTRA_NEWT_ITER_ULTRAREL
286 };
287 
288 struct of_trueijkp {
290 };