HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
global.fieldmacros.h
Go to the documentation of this file.
1 
9 #if(NEWMETRICSTORAGE==1)
10 
11 #if(MCOORD!=CARTMINKMETRIC)
12 
13 
14 #define MYGDET(i,j,k,p) (GLOBALMETMACP1A0(compgeom,p,i,j,k).gdet)
15 #else
16 #define MYGDET(i,j,k,p) (GLOBALMETMACP1A0(compgeom,p,0,0,0).gdet)
17 #endif
18 
19 
20 #else // old method
21 
22 #if(MCOORD!=CARTMINKMETRIC)
23 
24 #define MYGDET(i,j,k,p) (GLOBALMETMACP1A0(gdet,p,i,j,k_))
25 #else
26 #define MYGDET(i,j,k,p) (GLOBALMETMACP1A0(gdet,p,0,0,0))
27 #endif
28 
29 
30 #endif // end if old method
31 
32 
36 #define FgCORN(F,i,j,k) (MAC(F,i,j,k))
37 
38 
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) ))
42 
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))
47 
48 
52 #define FgN(F,i,j,k,pl) (MACP0A1(F,i,j,k,pl))
53 
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) ))
59 
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))
63 
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
66 
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
68 
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
70 
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))
74 
75 
79 #define absFgN(F,i,j,k,pl) (fabs(MACP0A1(F,i,j,k,pl)))
80 
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) ))
86 
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))
90 
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
93 
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
95 
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
97 
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))
101 
102 
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
108 
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) ))
114 
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))
118 
119 
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))
123 
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
126 
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
128 
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
130 
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))
134 
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))
138 
139 
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
145 
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) ))
151 
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) ))
155 
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))
161 
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))
165 
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
168 
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
170 
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
172 
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))
176 
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))
180 
181 
182 
183 
184 
185 
186 // #define DIVBCONDITION(p,i,j)
187 // if((i>=-1)&&(j>=-1)&&(startpos[2]+j!=0)&&(startpos[2]+j!=N2TOT))
188 //#define DIVBCONDITION(p,i,j) if((startpos[1]+i>0)&&(startpos[2]+j>0)&&(startpos[1]+i<totalsize[1])&&(startpos[2]+j<totalsize[2]))
189 //#define DIVBCONDITION(p,i,j) if((startpos[1]+i!=0)&&(startpos[1]+i!=totalsize[1])&&(startpos[2]+j!=0)&&(startpos[2]+j!=totalsize[2]))
190 
191 // only needed for polar axis condition
192 //GODMARK
193 //#define DIVBCONDITION(p,i,j,k) if((startpos[2]+j!=0)&&(startpos[2]+j!=totalsize[2]))
194 
195 // GODMARK: No, need for all boundaries
196 //#define DIVBCONDITION(p,i,j,k) if(((startpos[1]+i!=0)&&(startpos[1]+i!=totalsize[1]) || (!N1NOT1))&&((startpos[2]+j!=0)&&(startpos[2]+j!=totalsize[2]) || (!N2NOT1))&&((startpos[3]+k!=0)&&(startpos[3]+k!=totalsize[3]) || (!N3NOT1)))
197 
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))
202 
203 #define DIVBCONDITION(p,i,j,k) if(DIVBCDIR1&&DIVBCDIR2&&DIVBCDIR3)
204 
205 //#define DIVBCONDITION(p,i,j,k) if(1)
206 
207 
208 
209 
211 //
212 // FLUXCTTOTH DIVB
213 //
215 //(startpos[2]+j!=0)&&(startpos[2]+j!=totalsize[2])&&(startpos[3]+k!=0)&&(startpos[3]+k!=totalsize[3])
216 
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))
223 
224 //#define DIVBNORMFLUXCTTOTHPRIMx(p,i,j,k) (AVG_for1(p,i,j,k,B1)+AVG_for1(p,im1mac(i),j,k,B1))
225 //#define DIVBNORMFLUXCTTOTHPRIMy(p,i,j,k) (AVG_for2(p,i,j,k,B2)+AVG_for2(p,i,jm1mac(j),k,B2))
226 //#define DIVBNORMFLUXCTTOTHPRIMz(p,i,j,k) (AVG_for3(p,i,j,k,B3)+AVG_for3(p,i,j,km1mac(k),B3))
227 
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))
231 
232 // the below as dividing by too many \detg's since MYGDET in division and inside B
233 //#define DIVBNORMFLUXCTTOTHPRIM(p,i,j,k) (MAX(MAX(dx[1],dx[2]),dx[3])/(THIRD*MYGDET(i,j,k,CORNT)*fabs(DIVBNORMFLUXCTTOTHPRIMx(p,i,j,k)+DIVBNORMFLUXCTTOTHPRIMy(p,i,j,k)+DIVBNORMFLUXCTTOTHPRIMz(p,i,j,k)) +SMALL))
234 // removed MYGDET at corner. This 1) removes issue with dividing by 0 and 2) is correct since DIVBNORMFLUXCTTOTHPRIM already has gdet
235 //#define DIVBNORMFLUXCTTOTHPRIM(p,i,j,k) (MAX(MAX(dx[1],dx[2]),dx[3])/(THIRD*fabs(DIVBNORMFLUXCTTOTHPRIMx(p,i,j,k)+DIVBNORMFLUXCTTOTHPRIMy(p,i,j,k)+DIVBNORMFLUXCTTOTHPRIMz(p,i,j,k)) +SMALL))
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))
237 
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)))
241 
242 
243 
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))
250 
251 //#define DIVBNORMFLUXCTTOTHx(U,i,j,k) (AVGN_for1(U,i,j,k,B1)+AVGN_for1(U,im1mac(i),j,k,B1))
252 //#define DIVBNORMFLUXCTTOTHy(U,i,j,k) (AVGN_for2(U,i,j,k,B2)+AVGN_for2(U,i,jm1mac(j),k,B2))
253 //#define DIVBNORMFLUXCTTOTHz(U,i,j,k) (AVGN_for3(U,i,j,k,B3)+AVGN_for3(U,i,j,km1mac(k),B3))
254 
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))
258 
260 //#define DIVBNORMFLUXCTTOTH(U,i,j,k) (MAX(MAX(dx[1],dx[2]),dx[3])/(THIRD*MYGDET(i,j,k,CORNT)*fabs(DIVBNORMFLUXCTTOTHx(U,i,j,k)+DIVBNORMFLUXCTTOTHy(U,i,j,k)+DIVBNORMFLUXCTTOTHz(U,i,j,k)) +SMALL))
261 // removed MYGDET at corner. This 1) removes issue with dividing by 0 and 2) is correct since DIVBNORMFLUXCTTOTH already has gdet
262 //#define DIVBNORMFLUXCTTOTH(U,i,j,k) (MAX(MAX(dx[1],dx[2]),dx[3])/(THIRD*fabs(DIVBNORMFLUXCTTOTHx(U,i,j,k)+DIVBNORMFLUXCTTOTHy(U,i,j,k)+DIVBNORMFLUXCTTOTHz(U,i,j,k)) +SMALL))
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))
264 
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)))
268 
269 
270 
271 
273 //
274 // FLUXCTSTAG DIVB (divb sits at center and assume p here is located at FACE)
275 //
277 
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))
285 
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))
289 
290 //#define DIVBNORMFLUXCTSTAG(U,i,j,k) (MAX(MAX(dx[1],dx[2]),dx[3])/(THIRD*fabs(DIVBNORMFLUXCTSTAGx(U,i,j,k)+DIVBNORMFLUXCTSTAGy(U,i,j,k)+DIVBNORMFLUXCTSTAGz(U,i,j,k)) +SMALL))
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))
292 
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)))
296 
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))
304 
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))
308 
309 //#define DIVBNORMFLUXCTSTAGPRIM(p,i,j,k) (MAX(MAX(dx[1],dx[2]),dx[3])/(THIRD*fabs(DIVBNORMFLUXCTSTAGPRIMx(p,i,j,k)+DIVBNORMFLUXCTSTAGPRIMy(p,i,j,k)+DIVBNORMFLUXCTSTAGPRIMz(p,i,j,k)) +SMALL))
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))
312 
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)))
316 
317 
318 
319 
320 
321 
322 
328 
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) \
336  )+SMALL))
337 
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))
343 
344 
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) \
352  )+SMALL))
353 
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))
359 
360 
361 
362 
363 
364 
365 
366 
367 
368 
374 
375 
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.;}
380 
381 
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.;}
384 
385 
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.;}
388 
389 //#define SETFDIVB(divb,p,i,j,k) SETFDIVBFLUXCT(divb,p,i,j,k)
390 
391