Go to the documentation of this file.
9 #if(NEWMETRICSTORAGE==1)
11 #if(MCOORD!=CARTMINKMETRIC)
14 #define MYGDET(i,j,k,p) (GLOBALMETMACP1A0(compgeom,p,i,j,k).gdet)
16 #define MYGDET(i,j,k,p) (GLOBALMETMACP1A0(compgeom,p,0,0,0).gdet)
22 #if(MCOORD!=CARTMINKMETRIC)
24 #define MYGDET(i,j,k,p) (GLOBALMETMACP1A0(gdet,p,i,j,k_))
26 #define MYGDET(i,j,k,p) (GLOBALMETMACP1A0(gdet,p,0,0,0))
30 #endif // end if old method
36 #define FgCORN(F,i,j,k) (MAC(F,i,j,k))
39 #define AVGCORN_1(F,i,j,k) (0.5*(FgCORN(F,ip1mac(i),j,k) + FgCORN(F,i,j,k) ))
40 #define AVGCORN_2(F,i,j,k) (0.5*(FgCORN(F,i,jp1mac(j),k) + FgCORN(F,i,j,k) ))
41 #define AVGCORN_3(F,i,j,k) (0.5*(FgCORN(F,i,j,kp1mac(k)) + FgCORN(F,i,j,k) ))
44 #define NOAVGCORN_1(F,i,j,k) (FgCORN(F,i,j,k))
45 #define NOAVGCORN_2(F,i,j,k) (FgCORN(F,i,j,k))
46 #define NOAVGCORN_3(F,i,j,k) (FgCORN(F,i,j,k))
52 #define FgN(F,i,j,k,pl) (MACP0A1(F,i,j,k,pl))
56 #define AVGN_1(F,i,j,k,pl) (0.5*(FgN(F,i,j,k,pl) + FgN(F,im1mac(i),j,k,pl) ))
57 #define AVGN_2(F,i,j,k,pl) (0.5*(FgN(F,i,j,k,pl) + FgN(F,i,jm1mac(j),k,pl) ))
58 #define AVGN_3(F,i,j,k,pl) (0.5*(FgN(F,i,j,k,pl) + FgN(F,i,j,km1mac(k),pl) ))
60 #define NOAVGN_1(F,i,j,k,pl) (FgN(F,i,j,k,pl))
61 #define NOAVGN_2(F,i,j,k,pl) (FgN(F,i,j,k,pl))
62 #define NOAVGN_3(F,i,j,k,pl) (FgN(F,i,j,k,pl))
65 #define AVGN_for1(F,i,j,k,pl) (0.5*(AVGN_2(F,i,j,k,pl)+AVGN_2(F,i,j,km1mac(k),pl))) // 2 and 3 directions averaged
67 #define AVGN_for2(F,i,j,k,pl) (0.5*(AVGN_1(F,i,j,k,pl)+AVGN_1(F,i,j,km1mac(k),pl))) // 1 and 3 directions averaged
69 #define AVGN_for3(F,i,j,k,pl) (0.5*(AVGN_2(F,i,j,k,pl)+AVGN_2(F,im1mac(i),j,k,pl))) // 1 and 2 directions averaged
71 #define NOAVGN_for1(F,i,j,k,pl) (NOAVGN_1(F,i,j,k,pl))
72 #define NOAVGN_for2(F,i,j,k,pl) (NOAVGN_2(F,i,j,k,pl))
73 #define NOAVGN_for3(F,i,j,k,pl) (NOAVGN_3(F,i,j,k,pl))
79 #define absFgN(F,i,j,k,pl) (fabs(MACP0A1(F,i,j,k,pl)))
83 #define absAVGN_1(F,i,j,k,pl) (0.5*(absFgN(F,i,j,k,pl) + absFgN(F,im1mac(i),j,k,pl) ))
84 #define absAVGN_2(F,i,j,k,pl) (0.5*(absFgN(F,i,j,k,pl) + absFgN(F,i,jm1mac(j),k,pl) ))
85 #define absAVGN_3(F,i,j,k,pl) (0.5*(absFgN(F,i,j,k,pl) + absFgN(F,i,j,km1mac(k),pl) ))
87 #define absNOAVGN_1(F,i,j,k,pl) (absFgN(F,i,j,k,pl))
88 #define absNOAVGN_2(F,i,j,k,pl) (absFgN(F,i,j,k,pl))
89 #define absNOAVGN_3(F,i,j,k,pl) (absFgN(F,i,j,k,pl))
92 #define absAVGN_for1(F,i,j,k,pl) (0.5*(absAVGN_2(F,i,j,k,pl)+absAVGN_2(F,i,j,km1mac(k),pl))) // 2 and 3 directions averaged
94 #define absAVGN_for2(F,i,j,k,pl) (0.5*(absAVGN_1(F,i,j,k,pl)+absAVGN_1(F,i,j,km1mac(k),pl))) // 1 and 3 directions averaged
96 #define absAVGN_for3(F,i,j,k,pl) (0.5*(absAVGN_2(F,i,j,k,pl)+absAVGN_2(F,im1mac(i),j,k,pl))) // 1 and 2 directions averaged
98 #define absNOAVGN_for1(F,i,j,k,pl) (absNOAVGN_1(F,i,j,k,pl))
99 #define absNOAVGN_for2(F,i,j,k,pl) (absNOAVGN_2(F,i,j,k,pl))
100 #define absNOAVGN_for3(F,i,j,k,pl) (absNOAVGN_3(F,i,j,k,pl))
106 #define Fg(F,i,j,k,pl) (MACP0A1(F,i,j,k,pl)*MYGDET(i,j,k,CENT))
107 #define Fgface(F,i,j,k,pl) (MACP0A1(F,i,j,k,pl)*MYGDET(i,j,k,FACE1+pl-B1)) // assumes B1,B2,B3 in order for pl GODMARK
111 #define AVG_1(F,i,j,k,pl) (0.5*(Fg(F,i,j,k,pl) + Fg(F,im1mac(i),j,k,pl) ))
112 #define AVG_2(F,i,j,k,pl) (0.5*(Fg(F,i,j,k,pl) + Fg(F,i,jm1mac(j),k,pl) ))
113 #define AVG_3(F,i,j,k,pl) (0.5*(Fg(F,i,j,k,pl) + Fg(F,i,j,km1mac(k),pl) ))
115 #define NOAVG_1(F,i,j,k,pl) (Fg(F,i,j,k,pl))
116 #define NOAVG_2(F,i,j,k,pl) (Fg(F,i,j,k,pl))
117 #define NOAVG_3(F,i,j,k,pl) (Fg(F,i,j,k,pl))
120 #define NOAVGFACE_1(F,i,j,k,pl) (Fgface(F,i,j,k,pl))
121 #define NOAVGFACE_2(F,i,j,k,pl) (Fgface(F,i,j,k,pl))
122 #define NOAVGFACE_3(F,i,j,k,pl) (Fgface(F,i,j,k,pl))
125 #define AVG_for1(F,i,j,k,pl) (0.5*(AVG_2(F,i,j,k,pl)+AVG_2(F,i,j,km1mac(k),pl))) // 2 and 3 directions averaged
127 #define AVG_for2(F,i,j,k,pl) (0.5*(AVG_1(F,i,j,k,pl)+AVG_1(F,i,j,km1mac(k),pl))) // 1 and 3 directions averaged
129 #define AVG_for3(F,i,j,k,pl) (0.5*(AVG_2(F,i,j,k,pl)+AVG_2(F,im1mac(i),j,k,pl))) // 1 and 2 directions averaged
131 #define NOAVG_for1(F,i,j,k,pl) (NOAVG_1(F,i,j,k,pl))
132 #define NOAVG_for2(F,i,j,k,pl) (NOAVG_2(F,i,j,k,pl))
133 #define NOAVG_for3(F,i,j,k,pl) (NOAVG_3(F,i,j,k,pl))
135 #define NOAVGFACE_for1(F,i,j,k,pl) (NOAVGFACE_1(F,i,j,k,pl))
136 #define NOAVGFACE_for2(F,i,j,k,pl) (NOAVGFACE_2(F,i,j,k,pl))
137 #define NOAVGFACE_for3(F,i,j,k,pl) (NOAVGFACE_3(F,i,j,k,pl))
143 #define absFg(F,i,j,k,pl) (fabs(MACP0A1(F,i,j,k,pl)*MYGDET(i,j,k,CENT)))
144 #define absFgface(F,i,j,k,pl) (fabs(MACP0A1(F,i,j,k,pl)*MYGDET(i,j,k,FACE1+pl-B1))) // assumes B1,B2,B3 in order for pl GODMARK
148 #define absAVG_1(F,i,j,k,pl) (0.5*(absFg(F,i,j,k,pl) + absFg(F,im1mac(i),j,k,pl) ))
149 #define absAVG_2(F,i,j,k,pl) (0.5*(absFg(F,i,j,k,pl) + absFg(F,i,jm1mac(j),k,pl) ))
150 #define absAVG_3(F,i,j,k,pl) (0.5*(absFg(F,i,j,k,pl) + absFg(F,i,j,km1mac(k),pl) ))
152 #define absAVGFACE_1(F,i,j,k,pl) (0.5*(absFgface(F,i,j,k,pl) + absFgface(F,im1mac(i),j,k,pl) ))
153 #define absAVGFACE_2(F,i,j,k,pl) (0.5*(absFgface(F,i,j,k,pl) + absFgface(F,i,jm1mac(j),k,pl) ))
154 #define absAVGFACE_3(F,i,j,k,pl) (0.5*(absFgface(F,i,j,k,pl) + absFgface(F,i,j,km1mac(k),pl) ))
158 #define absNOAVG_1(F,i,j,k,pl) (absFg(F,i,j,k,pl))
159 #define absNOAVG_2(F,i,j,k,pl) (absFg(F,i,j,k,pl))
160 #define absNOAVG_3(F,i,j,k,pl) (absFg(F,i,j,k,pl))
162 #define absNOAVGFACE_1(F,i,j,k,pl) (absFgface(F,i,j,k,pl))
163 #define absNOAVGFACE_2(F,i,j,k,pl) (absFgface(F,i,j,k,pl))
164 #define absNOAVGFACE_3(F,i,j,k,pl) (absFgface(F,i,j,k,pl))
167 #define absAVG_for1(F,i,j,k,pl) (0.5*(absAVG_2(F,i,j,k,pl)+absAVG_2(F,i,j,km1mac(k),pl))) // 2 and 3 directions averaged
169 #define absAVG_for2(F,i,j,k,pl) (0.5*(absAVG_1(F,i,j,k,pl)+absAVG_1(F,i,j,km1mac(k),pl))) // 1 and 3 directions averaged
171 #define absAVG_for3(F,i,j,k,pl) (0.5*(absAVG_2(F,i,j,k,pl)+absAVG_2(F,im1mac(i),j,k,pl))) // 1 and 2 directions averaged
173 #define absNOAVG_for1(F,i,j,k,pl) (absAVG_1(F,i,j,k,pl))
174 #define absNOAVG_for2(F,i,j,k,pl) (absAVG_2(F,i,j,k,pl))
175 #define absNOAVG_for3(F,i,j,k,pl) (absAVG_3(F,i,j,k,pl))
177 #define absNOAVGFACE_for1(F,i,j,k,pl) (absAVGFACE_1(F,i,j,k,pl))
178 #define absNOAVGFACE_for2(F,i,j,k,pl) (absAVGFACE_2(F,i,j,k,pl))
179 #define absNOAVGFACE_for3(F,i,j,k,pl) (absAVGFACE_3(F,i,j,k,pl))
199 #define DIVBCDIR1 ((i >= -N1BND+1 && i <= N1 - 1 + N1BND - 1) || (!N1NOT1))
200 #define DIVBCDIR2 ((j >= -N2BND+1 && j <= N2 - 1 + N2BND - 1) || (!N2NOT1))
201 #define DIVBCDIR3 ((k >= -N3BND+1 && k <= N3 - 1 + N3BND - 1) || (!N3NOT1))
203 #define DIVBCONDITION(p,i,j,k) if(DIVBCDIR1&&DIVBCDIR2&&DIVBCDIR3)
220 #define DIVBDIFFFLUXCTTOTHPRIMx(p,i,j,k) (AVG_for1(p,i,j,k,B1)-AVG_for1(p,im1mac(i),j,k,B1))
221 #define DIVBDIFFFLUXCTTOTHPRIMy(p,i,j,k) (AVG_for2(p,i,j,k,B2)-AVG_for2(p,i,jm1mac(j),k,B2))
222 #define DIVBDIFFFLUXCTTOTHPRIMz(p,i,j,k) (AVG_for3(p,i,j,k,B3)-AVG_for3(p,i,j,km1mac(k),B3))
228 #define DIVBNORMFLUXCTTOTHPRIMx(p,i,j,k) (absAVG_for1(p,i,j,k,B1)+absAVG_for1(p,im1mac(i),j,k,B1))
229 #define DIVBNORMFLUXCTTOTHPRIMy(p,i,j,k) (absAVG_for2(p,i,j,k,B2)+absAVG_for2(p,i,jm1mac(j),k,B2))
230 #define DIVBNORMFLUXCTTOTHPRIMz(p,i,j,k) (absAVG_for3(p,i,j,k,B3)+absAVG_for3(p,i,j,km1mac(k),B3))
236 #define DIVBNORMFLUXCTTOTHPRIM(p,i,j,k) (1.0/(fabs(DIVBNORMFLUXCTTOTHPRIMx(p,i,j,k)/dx[1]+DIVBNORMFLUXCTTOTHPRIMy(p,i,j,k)/dx[2]+DIVBNORMFLUXCTTOTHPRIMz(p,i,j,k)/dx[3]) +SMALL))
238 #define DIVBFLUXCTTOTHPRIM(p,i,j,k) (( \
239 DIVBDIFFFLUXCTTOTHPRIMx(p,i,j,k)/dx[1] + DIVBDIFFFLUXCTTOTHPRIMy(p,i,j,k)/dx[2] + DIVBDIFFFLUXCTTOTHPRIMz(p,i,j,k)/dx[3] \
240 )*(DIVBNORMFLUXCTTOTHPRIM(p,i,j,k)))
247 #define DIVBDIFFFLUXCTTOTHx(U,i,j,k) (AVGN_for1(U,i,j,k,B1)-AVGN_for1(U,im1mac(i),j,k,B1))
248 #define DIVBDIFFFLUXCTTOTHy(U,i,j,k) (AVGN_for2(U,i,j,k,B2)-AVGN_for2(U,i,jm1mac(j),k,B2))
249 #define DIVBDIFFFLUXCTTOTHz(U,i,j,k) (AVGN_for3(U,i,j,k,B3)-AVGN_for3(U,i,j,km1mac(k),B3))
255 #define DIVBNORMFLUXCTTOTHx(U,i,j,k) (absAVGN_for1(U,i,j,k,B1)+absAVGN_for1(U,im1mac(i),j,k,B1))
256 #define DIVBNORMFLUXCTTOTHy(U,i,j,k) (absAVGN_for2(U,i,j,k,B2)+absAVGN_for2(U,i,jm1mac(j),k,B2))
257 #define DIVBNORMFLUXCTTOTHz(U,i,j,k) (absAVGN_for3(U,i,j,k,B3)+absAVGN_for3(U,i,j,km1mac(k),B3))
263 #define DIVBNORMFLUXCTTOTH(U,i,j,k) (1.0/(fabs(DIVBNORMFLUXCTTOTHx(U,i,j,k)/dx[1]+DIVBNORMFLUXCTTOTHy(U,i,j,k)/dx[2]+DIVBNORMFLUXCTTOTHz(U,i,j,k)/dx[3]) +SMALL))
265 #define DIVBFLUXCTTOTH(U,i,j,k) (( \
266 DIVBDIFFFLUXCTTOTHx(U,i,j,k)/dx[1] + DIVBDIFFFLUXCTTOTHy(U,i,j,k)/dx[2] + DIVBDIFFFLUXCTTOTHz(U,i,j,k)/dx[3] \
267 )*(DIVBNORMFLUXCTTOTH(U,i,j,k)))
282 #define DIVBDIFFFLUXCTSTAGx(U,i,j,k) (NOAVGN_for1(U,ip1mac(i),j,k,B1)-NOAVGN_for1(U,i,j,k,B1))
283 #define DIVBDIFFFLUXCTSTAGy(U,i,j,k) (NOAVGN_for2(U,i,jp1mac(j),k,B2)-NOAVGN_for2(U,i,j,k,B2))
284 #define DIVBDIFFFLUXCTSTAGz(U,i,j,k) (NOAVGN_for3(U,i,j,kp1mac(k),B3)-NOAVGN_for3(U,i,j,k,B3))
286 #define DIVBNORMFLUXCTSTAGx(U,i,j,k) (absNOAVGN_for1(U,ip1mac(i),j,k,B1)+absNOAVGN_for1(U,i,j,k,B1))
287 #define DIVBNORMFLUXCTSTAGy(U,i,j,k) (absNOAVGN_for2(U,i,jp1mac(j),k,B2)+absNOAVGN_for2(U,i,j,k,B2))
288 #define DIVBNORMFLUXCTSTAGz(U,i,j,k) (absNOAVGN_for3(U,i,j,kp1mac(k),B3)+absNOAVGN_for3(U,i,j,k,B3))
291 #define DIVBNORMFLUXCTSTAG(U,i,j,k) (1.0/(fabs(DIVBNORMFLUXCTSTAGx(U,i,j,k)/dx[1]+DIVBNORMFLUXCTSTAGy(U,i,j,k)/dx[2]+DIVBNORMFLUXCTSTAGz(U,i,j,k)/dx[3]) +SMALL))
293 #define DIVBFLUXCTSTAG(U,i,j,k) (( \
294 DIVBDIFFFLUXCTSTAGx(U,i,j,k)/dx[1] + DIVBDIFFFLUXCTSTAGy(U,i,j,k)/dx[2] + DIVBDIFFFLUXCTSTAGz(U,i,j,k)/dx[3] \
295 )*(DIVBNORMFLUXCTSTAG(U,i,j,k)))
301 #define DIVBDIFFFLUXCTSTAGPRIMx(p,i,j,k) (NOAVGFACE_for1(p,ip1mac(i),j,k,B1)-NOAVGFACE_for1(p,i,j,k,B1))
302 #define DIVBDIFFFLUXCTSTAGPRIMy(p,i,j,k) (NOAVGFACE_for2(p,i,jp1mac(j),k,B2)-NOAVGFACE_for2(p,i,j,k,B2))
303 #define DIVBDIFFFLUXCTSTAGPRIMz(p,i,j,k) (NOAVGFACE_for3(p,i,j,kp1mac(k),B3)-NOAVGFACE_for3(p,i,j,k,B3))
305 #define DIVBNORMFLUXCTSTAGPRIMx(p,i,j,k) (absNOAVGFACE_for1(p,ip1mac(i),j,k,B1)+absNOAVGFACE_for1(p,i,j,k,B1))
306 #define DIVBNORMFLUXCTSTAGPRIMy(p,i,j,k) (absNOAVGFACE_for2(p,i,jp1mac(j),k,B2)+absNOAVGFACE_for2(p,i,j,k,B2))
307 #define DIVBNORMFLUXCTSTAGPRIMz(p,i,j,k) (absNOAVGFACE_for3(p,i,j,kp1mac(k),B3)+absNOAVGFACE_for3(p,i,j,k,B3))
311 #define DIVBNORMFLUXCTSTAGPRIM(p,i,j,k) (1.0/(fabs(DIVBNORMFLUXCTSTAGPRIMx(p,i,j,k)/dx[1]+DIVBNORMFLUXCTSTAGPRIMy(p,i,j,k)/dx[2]+DIVBNORMFLUXCTSTAGPRIMz(p,i,j,k)/dx[3]) +SMALL))
313 #define DIVBFLUXCTSTAGPRIM(p,i,j,k) (( \
314 DIVBDIFFFLUXCTSTAGPRIMx(p,i,j,k)/dx[1] + DIVBDIFFFLUXCTSTAGPRIMy(p,i,j,k)/dx[2] + DIVBDIFFFLUXCTSTAGPRIMz(p,i,j,k)/dx[3] \
315 )*(DIVBNORMFLUXCTSTAGPRIM(p,i,j,k)))
332 #define DIVBNORMFLUXCD(p,i,j,k) (MAX(MAX(dx[1],dx[2]),dx[3])/(MYGDET(i,j,k,CENT)*fabs( \
333 Fg(p,ip1mac(i),j,k,B1) + Fg(p,im1mac(i),j,k,B1) \
334 +Fg(p,i,jp1mac(j),k,B2) + Fg(p,i,jm1mac(j),k,B2) \
335 +Fg(p,i,j,kp1mac(k),B3) + Fg(p,i,j,km1mac(k),B3) \
338 #define DIVBFLUXCD(p,i,j,k) (0.5*( \
339 (Fg(p,ip1mac(i),j,k,B1) - Fg(p,im1mac(i),j,k,B1))/dx[1] \
340 +(Fg(p,i,jp1mac(j),k,B2) - Fg(p,i,jm1mac(j),k,B2))/dx[2] \
341 +(Fg(p,i,j,kp1mac(k),B3) - Fg(p,i,j,km1mac(k),B3))/dx[3] \
342 )*DIVBNORMFLUXCD(p,i,j,k))
348 #define DIVBNORMFLUXCDPRIM(p,i,j,k) (MAX(MAX(dx[1],dx[2]),dx[3])/(MYGDET(i,j,k,CENT)*fabs( \
349 FgN(p,ip1mac(i),j,k,B1) + FgN(p,im1mac(i),j,k,B1) \
350 +FgN(p,i,jp1mac(j),k,B2) + FgN(p,i,jm1mac(j),k,B2) \
351 +FgN(p,i,j,kp1mac(k),B3) + FgN(p,i,j,km1mac(k),B3) \
354 #define DIVBFLUXCDPRIM(p,i,j,k) (0.5*( \
355 (FgN(p,ip1mac(i),j,k,B1) - FgN(p,im1mac(i),j,k,B1))/dx[1] \
356 +(FgN(p,i,jp1mac(j),k,B2) - FgN(p,i,jm1mac(j),k,B2))/dx[2] \
357 +(FgN(p,i,j,kp1mac(k),B3) - FgN(p,i,j,km1mac(k),B3))/dx[3] \
358 )*DIVBNORMFLUXCDPRIM(p,i,j,k))
378 #define SETFDIVBFLUXCTTOTH(divb,U,i,j,k) {DIVBCONDITION(U,i,j,k){ divb = fabs(DIVBFLUXCTTOTHPRIM(U,i,j,k)) ;} else divb = 0.;}
379 #define SETFDIVBFLUXCTTOTHPRIM(divb,p,i,j,k) {DIVBCONDITION(p,i,j,k){ divb = fabs(DIVBFLUXCTTOTHPRIM(p,i,j,k)) ;} else divb = 0.;}
382 #define SETFDIVBFLUXCTSTAG(divb,U,i,j,k) {DIVBCONDITION(U,i,j,k){ divb = fabs(DIVBFLUXCTSTAG(U,i,j,k)) ;} else divb = 0.;}
383 #define SETFDIVBFLUXCTSTAGPRIM(divb,p,i,j,k) {DIVBCONDITION(p,i,j,k){ divb = fabs(DIVBFLUXCTSTAGPRIM(p,i,j,k)) ;} else divb = 0.;}
386 #define SETFDIVBFLUXCD(divb,U,i,j,k) {DIVBCONDITION(U,i,j,k){ divb = fabs(DIVBFLUXCD(U,i,j,k)) ;} else divb = 0.;}
387 #define SETFDIVBFLUXCDPRIM(divb,p,i,j,k) {DIVBCONDITION(p,i,j,k){ divb = fabs(DIVBFLUXCDPRIM(p,i,j,k)) ;} else divb = 0.;}