Go to the documentation of this file.
26 #define IBEG_LOOP(i) for ((i) = IBEG; (i)--; )
27 #define JBEG_LOOP(j) for ((j) = JBEG; (j)--; )
28 #define KBEG_LOOP(k) for ((k) = KBEG; (k)--; )
30 #define IEND_LOOP(i) for ((i) = IEND + 1; (i) < NX1_TOT; (i)++)
31 #define JEND_LOOP(j) for ((j) = JEND + 1; (j) < NX2_TOT; (j)++)
32 #define KEND_LOOP(k) for ((k) = KEND + 1; (k) < NX3_TOT; (k)++)
34 #define IDOM_LOOP(i) for ((i) = IBEG; (i) <= IEND; (i)++)
35 #define JDOM_LOOP(j) for ((j) = JBEG; (j) <= JEND; (j)++)
36 #define KDOM_LOOP(k) for ((k) = KBEG; (k) <= KEND; (k)++)
38 #define ITOT_LOOP(i) for ((i) = 0; (i) < NX1_TOT; (i)++)
39 #define JTOT_LOOP(j) for ((j) = 0; (j) < NX2_TOT; (j)++)
40 #define KTOT_LOOP(k) for ((k) = 0; (k) < NX3_TOT; (k)++)
42 #define DOM_LOOP(k,j,i) KDOM_LOOP(k) JDOM_LOOP(j) IDOM_LOOP(i)
44 #define TOT_LOOP(k,j,i) KTOT_LOOP(k) JTOT_LOOP(j) ITOT_LOOP(i)
46 #define X1_BEG_LOOP(k,j,i) KTOT_LOOP(k) JTOT_LOOP(j) IBEG_LOOP(i)
47 #define X2_BEG_LOOP(k,j,i) KTOT_LOOP(k) JBEG_LOOP(j) ITOT_LOOP(i)
48 #define X3_BEG_LOOP(k,j,i) KBEG_LOOP(k) JTOT_LOOP(j) ITOT_LOOP(i)
50 #define X1_END_LOOP(k,j,i) KTOT_LOOP(k) JTOT_LOOP(j) IEND_LOOP(i)
51 #define X2_END_LOOP(k,j,i) KTOT_LOOP(k) JEND_LOOP(j) ITOT_LOOP(i)
52 #define X3_END_LOOP(k,j,i) KEND_LOOP(k) JTOT_LOOP(j) ITOT_LOOP(i)
54 #define TRANSVERSE_LOOP(indx, ip, i,j,k) \
55 if (g_dir == IDIR) {ip = &i; indx.pt1 = &j; indx.pt2 = &k;} \
56 if (g_dir == JDIR) {ip = &j; indx.pt1 = &i; indx.pt2 = &k;} \
57 if (g_dir == KDIR) {ip = &k; indx.pt1 = &i; indx.pt2 = &j;} \
58 for (*(indx.pt2) = indx.t2_beg; *(indx.pt2) <= indx.t2_end; *(indx.pt2) += 1) \
59 for (*(indx.pt1) = indx.t1_beg; *(indx.pt1) <= indx.t1_end; *(indx.pt1) += 1)
70 #define BOX_LOOP(B,k,j,i) \
71 for ((B)->dk = ((k=(B)->kb) <= (B)->ke ? 1:-1); k != (B)->ke+(B)->dk; k += (B)->dk)\
72 for ((B)->dj = ((j=(B)->jb) <= (B)->je ? 1:-1); j != (B)->je+(B)->dj; j += (B)->dj)\
73 for ((B)->di = ((i=(B)->ib) <= (B)->ie ? 1:-1); i != (B)->ie+(B)->di; i += (B)->di)
89 #define FOR_EACH(nv, beg, list) \
90 for ((list)->i = beg, nv = (list)->indx[beg]; \
91 (list)->i < (list)->nvar; \
92 nv = (list)->indx[++((list)->i)])
98 #define INT_FLOOR(z) ((int)((z) + 32768.) - 32768)
101 #define MAX(a,b) ( (a) >= (b) ? (a) : (b) )
104 #define MIN(a,b) ( (a) <= (b) ? (a) : (b) )
107 #define ABS_MIN(a,b) (fabs(a) < fabs(b) ? (a):(b))
110 #define DSIGN(x) ( (x) >= 0.0 ? (1.0) : (-1.0))
112 #define MINMOD(a,b) ((a)*(b) > 0.0 ? (fabs(a) < fabs(b) ? (a):(b)):0.0)
113 #define VAN_LEER(a,b) ((a)*(b) > 0.0 ? 2.0*(a)*(b)/((a)+(b)):0.0)
114 #define MC(a,b) (MINMOD(0.5*((a)+(b)), 2.0*MINMOD((a),(b))))
115 #define SWAP_VAR(x) SwapEndian(&x, sizeof(x));
119 #define QUIT_PLUTO(e_code) \
120 {MPI_Abort(MPI_COMM_WORLD, e_code);MPI_Finalize(); exit(e_code);}
121 #elif (defined CH_MPI)
122 #define QUIT_PLUTO(e_code) \
123 {MPI_Abort(MPI_COMM_WORLD, e_code); exit(e_code);}
125 #define QUIT_PLUTO(e_code) exit(e_code);
178 #define EXPAND(a,b,c) a
179 #define SELECT(a,b,c) a
183 #define EXPAND(a,b,c) a b
184 #define SELECT(a,b,c) b
188 #define EXPAND(a,b,c) a b c
189 #define SELECT(a,b,c) c
193 #define D_EXPAND(a,b,c) a
194 #define D_SELECT(a,b,c) a
201 #define D_EXPAND(a,b,c) a b
202 #define D_SELECT(a,b,c) b
209 #define D_EXPAND(a,b,c) a b c
210 #define D_SELECT(a,b,c) c
216 #if WARNING_MESSAGES == YES
222 #define DOT_PRODUCT(a,b) (EXPAND((a)[0]*(b)[0], + (a)[1]*(b)[1], + (a)[2]*(b)[2]))
226 #define VAR_LOOP(n) for ((n) = NVAR; (n)--; )
227 #define DIM_LOOP(d) for ((d) = 0; (d) < DIMENSIONS; (d)++)
236 #define FDIFF_X1(b,k,j,i) (b[k][j][i+1] - b[k][j][i])
237 #define FDIFF_X2(b,k,j,i) (b[k][j+1][i] - b[k][j][i])
238 #define FDIFF_X3(b,k,j,i) (b[k+1][j][i] - b[k][j][i])
240 #define CDIFF_X1(b,k,j,i) 0.5*(b[k][j][i+1] - b[k][j][i-1])
241 #define CDIFF_X2(b,k,j,i) 0.5*(b[k][j+1][i] - b[k][j-1][i])
242 #define CDIFF_X3(b,k,j,i) 0.5*(b[k+1][j][i] - b[k-1][j][i])
250 #define CDIFF_X3(b,i,j,k) 0.0
251 #define FDIFF_X3(b,i,j,k) 0.0
256 #define AVERAGE_X(q,k,j,i) 0.5*(q[k][j][i] + q[k][j][i+1])
257 #define AVERAGE_Y(q,k,j,i) 0.5*(q[k][j][i] + q[k][j+1][i])
258 #define AVERAGE_Z(q,k,j,i) 0.5*(q[k][j][i] + q[k+1][j][i])
260 #define AVERAGE_XY(q,k,j,i) 0.25*( q[k][j][i] + q[k][j][i+1] \
261 + q[k][j+1][i] + q[k][j+1][i+1])
262 #define AVERAGE_XZ(q,k,j,i) 0.25*( q[k][j][i] + q[k][j][i+1] \
263 + q[k+1][j][i] + q[k+1][j][i+1])
264 #define AVERAGE_YZ(q,k,j,i) 0.25*( q[k][j][i] + q[k][j+1][i] \
265 + q[k+1][j][i] + q[k+1][j+1][i])
278 #define AVERAGE_Y(q,k,j,i) (q[0][0][i])
279 #define AVERAGE_Z(q,k,j,i) (q[0][0][i])
281 #define AVERAGE_XY(q,k,j,i) AVERAGE_X(q,0,0,i)
282 #define AVERAGE_XZ(q,k,j,i) AVERAGE_X(q,0,0,i)
283 #define AVERAGE_YZ(q,k,j,i) (q[0][0][i])
285 #elif DIMENSIONS == 2
291 #define AVERAGE_Z(q,k,j,i) (q[0][j][i])
292 #define AVERAGE_XZ(q,k,j,i) 0.5*(q[0][j][i] + q[0][j][i+1])
293 #define AVERAGE_YZ(q,k,j,i) 0.5*(q[0][j][i] + q[0][j+1][i])