Go to the documentation of this file.
40 #define N1M (N1+N1BND*2)
41 #define N2M (N2+N2BND*2)
42 #define N3M (N3+N3BND*2)
47 #define NBIG1M ((N1M>N2M) ? N1M : N2M)
48 #define NBIGM ((NBIG1M>N3M) ? NBIG1M : N3M)
52 #define MAXSURFA1 (N2M*N3M*N1NOT1)
53 #define MAXSURFA2 (N1M*N3M*N2NOT1)
54 #define MAXSURFA3 (N1M*N2M*N3NOT1)
59 #define NBIGS1M ((MAXSURFA1>MAXSURFA2) ? MAXSURFA1 : MAXSURFA2)
60 #define NBIGSM ((NBIGS1M>MAXSURFA3) ? NBIGS1M : MAXSURFA3)
88 #define OPENMP3DLOOPBLOCK2IJKSTORAGE0(i,j,k) \
89 k=nzshift+(int)((blockijk-1)%nzsize); \
90 j=nyshift+(int)(((blockijk-1)%(nzsize*nysize))/nzsize); \
91 i=nxshift+(int)((blockijk-1)/(nzsize*nysize));
93 #define OPENMP3DLOOPBLOCK2IJKSTORAGE1(i,j,k) \
94 i=nxshift+(int)((blockijk-1)%nxsize); \
95 k=nzshift+(int)(((blockijk-1)%(nxsize*nzsize))/nxsize); \
96 j=nyshift+(int)((blockijk-1)/(nxsize*nzsize));
98 #define OPENMP3DLOOPBLOCK2IJKSTORAGE2(i,j,k) \
99 j=nyshift+(int)((blockijk-1)%nysize); \
100 i=nxshift+(int)(((blockijk-1)%(nysize*nxsize))/nysize); \
101 k=nzshift+(int)((blockijk-1)/(nysize*nxsize));
103 #define OPENMP3DLOOPBLOCK2IJKSTORAGE3(i,j,k) \
104 j=nyshift+(int)((blockijk-1)%nysize); \
105 k=nzshift+(int)(((blockijk-1)%(nysize*nzsize))/nysize); \
106 i=nxshift+(int)((blockijk-1)/(nysize*nzsize));
108 #define OPENMP3DLOOPBLOCK2IJKSTORAGE4(i,j,k) \
109 k=nzshift+(int)((blockijk-1)%nzsize); \
110 i=nxshift+(int)(((blockijk-1)%(nzsize*nxsize))/nzsize); \
111 j=nyshift+(int)((blockijk-1)/(nzsize*nxsize));
113 #define OPENMP3DLOOPBLOCK2IJKSTORAGE5(i,j,k) \
114 i=nxshift+(int)((blockijk-1)%nxsize); \
115 j=nyshift+(int)(((blockijk-1)%(nxsize*nysize))/nxsize); \
116 k=nzshift+(int)((blockijk-1)/(nxsize*nysize));
124 #define NSTOREBND1 N1BND
125 #define NSTOREBND2 N2BND
126 #define NSTOREBND3 N3BND
127 #define SHIFTSTORE1 SHIFT1
128 #define SHIFTSTORE2 SHIFT2
129 #define SHIFTSTORE3 SHIFT3
130 #define LOOPORDER1(i,j,k) i
131 #define LOOPORDER2(i,j,k) j
132 #define LOOPORDER3(i,j,k) k
134 #define STO1(i,j,k) (i)
135 #define STO2(i,j,k) (j)
136 #define STO3(i,j,k) (k)
137 #define DEFDIM1(i,j,k) (i)
138 #define DEFDIM2(i,j,k) (j)
139 #define DEFDIM3(i,j,k) (k)
141 #if(MCOORD!=CARTMINKMETRIC)
142 #define STOMET1(i,j,k) (i)
143 #define STOMET2(i,j,k) (j)
144 #define STOMET3(i,j,k) (k)
145 #define DEFDIMMET1(i,j,k) (i)
146 #define DEFDIMMET2(i,j,k) (j)
147 #define DEFDIMMET3(i,j,k) (k)
149 #define STOMET1(i,j,k) (0)
150 #define STOMET2(i,j,k) (0)
151 #define STOMET3(i,j,k) (0)
152 #define DEFDIMMET1(i,j,k) (1)
153 #define DEFDIMMET2(i,j,k) (1)
154 #define DEFDIMMET3(i,j,k) (1)
157 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE0(i,j,k)
161 #elif(ORDERSTORAGE==1)
166 #define NSTOREBND2 N1BND
167 #define NSTOREBND3 N2BND
168 #define NSTOREBND1 N3BND
169 #define SHIFTSTORE2 SHIFT1
170 #define SHIFTSTORE3 SHIFT2
171 #define SHIFTSTORE1 SHIFT3
172 #define LOOPORDER2(i,j,k) i
173 #define LOOPORDER3(i,j,k) j
174 #define LOOPORDER1(i,j,k) k
176 #define STO2(i,j,k) (i)
177 #define STO3(i,j,k) (j)
178 #define STO1(i,j,k) (k)
179 #define DEFDIM2(i,j,k) (i)
180 #define DEFDIM3(i,j,k) (j)
181 #define DEFDIM1(i,j,k) (k)
183 #if(MCOORD!=CARTMINKMETRIC)
184 #define STOMET2(i,j,k) (i)
185 #define STOMET3(i,j,k) (j)
186 #define STOMET1(i,j,k) (k)
187 #define DEFDIMMET2(i,j,k) (i)
188 #define DEFDIMMET3(i,j,k) (j)
189 #define DEFDIMMET1(i,j,k) (k)
191 #define STOMET2(i,j,k) (0)
192 #define STOMET3(i,j,k) (0)
193 #define STOMET1(i,j,k) (0)
194 #define DEFDIMMET2(i,j,k) (1)
195 #define DEFDIMMET3(i,j,k) (1)
196 #define DEFDIMMET1(i,j,k) (1)
199 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE1(i,j,k)
202 #elif(ORDERSTORAGE==2)
207 #define NSTOREBND3 N1BND
208 #define NSTOREBND1 N2BND
209 #define NSTOREBND2 N3BND
210 #define SHIFTSTORE3 SHIFT1
211 #define SHIFTSTORE1 SHIFT2
212 #define SHIFTSTORE2 SHIFT3
213 #define LOOPORDER3(i,j,k) i
214 #define LOOPORDER1(i,j,k) j
215 #define LOOPORDER2(i,j,k) k
217 #define STO3(i,j,k) (i)
218 #define STO1(i,j,k) (j)
219 #define STO2(i,j,k) (k)
220 #define DEFDIM3(i,j,k) (i)
221 #define DEFDIM1(i,j,k) (j)
222 #define DEFDIM2(i,j,k) (k)
224 #if(MCOORD!=CARTMINKMETRIC)
225 #define STOMET3(i,j,k) (i)
226 #define STOMET1(i,j,k) (j)
227 #define STOMET2(i,j,k) (k)
228 #define DEFDIMMET3(i,j,k) (i)
229 #define DEFDIMMET1(i,j,k) (j)
230 #define DEFDIMMET2(i,j,k) (k)
232 #define STOMET3(i,j,k) (0)
233 #define STOMET1(i,j,k) (0)
234 #define STOMET2(i,j,k) (0)
235 #define DEFDIMMET3(i,j,k) (1)
236 #define DEFDIMMET1(i,j,k) (1)
237 #define DEFDIMMET2(i,j,k) (1)
240 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE2(i,j,k)
243 #elif(ORDERSTORAGE==3)
248 #define NSTOREBND1 N1BND
249 #define NSTOREBND3 N2BND
250 #define NSTOREBND2 N3BND
251 #define SHIFTSTORE1 SHIFT1
252 #define SHIFTSTORE3 SHIFT2
253 #define SHIFTSTORE2 SHIFT3
254 #define LOOPORDER1(i,j,k) i
255 #define LOOPORDER3(i,j,k) j
256 #define LOOPORDER2(i,j,k) k
258 #define STO1(i,j,k) (i)
259 #define STO3(i,j,k) (j)
260 #define STO2(i,j,k) (k)
261 #define DEFDIM1(i,j,k) (i)
262 #define DEFDIM3(i,j,k) (j)
263 #define DEFDIM2(i,j,k) (k)
265 #if(MCOORD!=CARTMINKMETRIC)
266 #define STOMET1(i,j,k) (i)
267 #define STOMET3(i,j,k) (j)
268 #define STOMET2(i,j,k) (k)
269 #define DEFDIMMET1(i,j,k) (i)
270 #define DEFDIMMET3(i,j,k) (j)
271 #define DEFDIMMET2(i,j,k) (k)
273 #define STOMET1(i,j,k) (0)
274 #define STOMET3(i,j,k) (0)
275 #define STOMET2(i,j,k) (0)
276 #define DEFDIMMET1(i,j,k) (1)
277 #define DEFDIMMET3(i,j,k) (1)
278 #define DEFDIMMET2(i,j,k) (1)
281 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE3(i,j,k)
284 #elif(ORDERSTORAGE==4)
289 #define NSTOREBND2 N1BND
290 #define NSTOREBND1 N2BND
291 #define NSTOREBND3 N3BND
292 #define SHIFTSTORE2 SHIFT1
293 #define SHIFTSTORE1 SHIFT2
294 #define SHIFTSTORE3 SHIFT3
295 #define LOOPORDER2(i,j,k) i
296 #define LOOPORDER1(i,j,k) j
297 #define LOOPORDER3(i,j,k) k
299 #define STO2(i,j,k) (i)
300 #define STO1(i,j,k) (j)
301 #define STO3(i,j,k) (k)
302 #define DEFDIM2(i,j,k) (i)
303 #define DEFDIM1(i,j,k) (j)
304 #define DEFDIM3(i,j,k) (k)
306 #if(MCOORD!=CARTMINKMETRIC)
307 #define STOMET2(i,j,k) (i)
308 #define STOMET1(i,j,k) (j)
309 #define STOMET3(i,j,k) (k)
310 #define DEFDIMMET2(i,j,k) (i)
311 #define DEFDIMMET1(i,j,k) (j)
312 #define DEFDIMMET3(i,j,k) (k)
314 #define STOMET2(i,j,k) (0)
315 #define STOMET1(i,j,k) (0)
316 #define STOMET3(i,j,k) (0)
317 #define DEFDIMMET2(i,j,k) (1)
318 #define DEFDIMMET1(i,j,k) (1)
319 #define DEFDIMMET3(i,j,k) (1)
322 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE4(i,j,k)
325 #elif(ORDERSTORAGE==5)
330 #define NSTOREBND3 N1BND
331 #define NSTOREBND2 N2BND
332 #define NSTOREBND1 N3BND
333 #define SHIFTSTORE3 SHIFT1
334 #define SHIFTSTORE2 SHIFT2
335 #define SHIFTSTORE1 SHIFT3
336 #define LOOPORDER3(i,j,k) i
337 #define LOOPORDER2(i,j,k) j
338 #define LOOPORDER1(i,j,k) k
340 #define STO3(i,j,k) (i)
341 #define STO2(i,j,k) (j)
342 #define STO1(i,j,k) (k)
343 #define DEFDIM3(i,j,k) (i)
344 #define DEFDIM2(i,j,k) (j)
345 #define DEFDIM1(i,j,k) (k)
347 #if(MCOORD!=CARTMINKMETRIC)
348 #define STOMET3(i,j,k) (i)
349 #define STOMET2(i,j,k) (j)
350 #define STOMET1(i,j,k) (k)
351 #define DEFDIMMET3(i,j,k) (i)
352 #define DEFDIMMET2(i,j,k) (j)
353 #define DEFDIMMET1(i,j,k) (k)
355 #define STOMET3(i,j,k) (0)
356 #define STOMET2(i,j,k) (0)
357 #define STOMET1(i,j,k) (0)
358 #define DEFDIMMET3(i,j,k) (1)
359 #define DEFDIMMET2(i,j,k) (1)
360 #define DEFDIMMET1(i,j,k) (1)
364 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE5(i,j,k)
397 #define GENPOINT(prefix,name) prefix##name
398 #define GENMAC(prefix,name,i,j,k) prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]
399 #define GENMACP0A0(prefix,name,i,j,k) GENMAC(prefix,name,i,j,k)
401 #define GENMACP1A0(prefix,name,argp1,i,j,k) prefix##name[argp1][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]
402 #define GENMACP0A1(prefix,name,i,j,k,arga1) prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1]
404 #define GENMACP2A0(prefix,name,argp1,argp2,i,j,k) prefix##name[argp1][argp2][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]
405 #define GENMACP1A1(prefix,name,argp1,i,j,k,arga1) prefix##name[argp1][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1]
406 #define GENMACP0A2(prefix,name,i,j,k,arga1,arga2) prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1][arga2]
408 #define GENMACP3A0(prefix,name,argp1,argp2,argp3,i,j,k) prefix##name[argp1][argp2][argp3][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]
409 #define GENMACP2A1(prefix,name,argp1,argp2,i,j,k,arga1) prefix##name[argp1][argp2][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1]
410 #define GENMACP1A2(prefix,name,argp1,i,j,k,arga1,arga2) prefix##name[argp1][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1][arga2]
411 #define GENMACP0A3(prefix,name,i,j,k,arga1,arga2,arga3) prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1][arga2][arga3]
413 #define GENMACP4A0(prefix,name,argp1,argp2,argp3,argp4,i,j,k) prefix##name[argp1][argp2][argp3][argp4][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]
414 #define GENMACP3A1(prefix,name,argp1,argp2,argp3,i,j,k,arga1) prefix##name[argp1][argp2][argp3][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1]
415 #define GENMACP2A2(prefix,name,argp1,argp2,i,j,k,arga1,arga2) prefix##name[argp1][argp2][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1][arga2]
416 #define GENMACP1A3(prefix,name,argp1,i,j,k,arga1,arga2,arga3) prefix##name[argp1][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1][arga2][arga3]
417 #define GENMACP0A4(prefix,name,i,j,k,arga1,arga2,arga3,arga4) prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1][arga2][arga3][arga4]
422 #define BASEPOINT(name) GENPOINT(a_,name)
423 #define BASEMAC(name,i,j,k) GENMAC(a_,name,i,j,k)
424 #define BASEMACP0A0(name,i,j,k) GENMACP0A0(a_,name,i,j,k)
426 #define BASEMACP1A0(name,argp1,i,j,k) GENMACP1A0(a_,name,argp1,i,j,k)
427 #define BASEMACP0A1(name,i,j,k,arga1) GENMACP0A1(a_,name,i,j,k,arga1)
429 #define BASEMACP2A0(name,argp1,argp2,i,j,k) GENMACP2A0(a_,name,argp1,argp2,i,j,k)
430 #define BASEMACP1A1(name,argp1,i,j,k,arga1) GENMACP1A1(a_,name,argp1,i,j,k,arga1)
431 #define BASEMACP0A2(name,i,j,k,arga1,arga2) GENMACP0A2(a_,name,i,j,k,arga1,arga2)
433 #define BASEMACP3A0(name,argp1,argp2,argp3,i,j,k) GENMACP3A0(a_,name,argp1,argp2,argp3,i,j,k)
434 #define BASEMACP2A1(name,argp1,argp2,i,j,k,arga1) GENMACP2A1(a_,name,argp1,argp2,i,j,k,arga1)
435 #define BASEMACP1A2(name,argp1,i,j,k,arga1,arga2) GENMACP1A2(a_,name,argp1,i,j,k,arga1,arga2)
436 #define BASEMACP0A3(name,i,j,k,arga1,arga2,arga3) GENMACP0A3(a_,name,i,j,k,arga1,arga2,arga3)
438 #define BASEMACP4A0(name,argp1,argp2,argp3,argp4,i,j,k) GENMACP4A0(a_,name,argp1,argp2,argp3,argp4,i,j,k)
439 #define BASEMACP3A1(name,argp1,argp2,argp3,i,j,k,arga1) GENMACP3A1(a_,name,argp1,argp2,argp3,i,j,k,arga1)
440 #define BASEMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) GENMACP2A2(a_,name,argp1,argp2,i,j,k,arga1,arga2)
441 #define BASEMACP1A3(name,argp1,i,j,k,arga1,arga2,arga3) GENMACP1A3(a_,name,argp1,i,j,k,arga1,arga2,arga3)
442 #define BASEMACP0A4(name,i,j,k,arga1,arga2,arga3,arga4) GENMACP0A4(a_,name,i,j,k,arga1,arga2,arga3,arga4)
449 #define GLOBALPOINT(name) GENPOINT(a_s_,name)
450 #define GLOBALMAC(name,i,j,k) GENMAC(a_s_,name,i,j,k)
451 #define GLOBALMACP0A0(name,i,j,k) GENMACP0A0(a_s_,name,i,j,k)
453 #define GLOBALMACP1A0(name,argp1,i,j,k) GENMACP1A0(a_s_,name,argp1,i,j,k)
454 #define GLOBALMACP0A1(name,i,j,k,arga1) GENMACP0A1(a_s_,name,i,j,k,arga1)
456 #define GLOBALMACP2A0(name,argp1,argp2,i,j,k) GENMACP2A0(a_s_,name,argp1,argp2,i,j,k)
457 #define GLOBALMACP1A1(name,argp1,i,j,k,arga1) GENMACP1A1(a_s_,name,argp1,i,j,k,arga1)
458 #define GLOBALMACP0A2(name,i,j,k,arga1,arga2) GENMACP0A2(a_s_,name,i,j,k,arga1,arga2)
460 #define GLOBALMACP3A0(name,argp1,argp2,argp3,i,j,k) GENMACP3A0(a_s_,name,argp1,argp2,argp3,i,j,k)
461 #define GLOBALMACP2A1(name,argp1,argp2,i,j,k,arga1) GENMACP2A1(a_s_,name,argp1,argp2,i,j,k,arga1)
462 #define GLOBALMACP1A2(name,argp1,i,j,k,arga1,arga2) GENMACP1A2(a_s_,name,argp1,i,j,k,arga1,arga2)
463 #define GLOBALMACP0A3(name,i,j,k,arga1,arga2,arga3) GENMACP0A3(a_s_,name,i,j,k,arga1,arga2,arga3)
465 #define GLOBALMACP4A0(name,argp1,argp2,argp3,argp4,i,j,k) GENMACP4A0(a_s_,name,argp1,argp2,argp3,argp4,i,j,k)
466 #define GLOBALMACP3A1(name,argp1,argp2,argp3,i,j,k,arga1) GENMACP3A1(a_s_,name,argp1,argp2,argp3,i,j,k,arga1)
467 #define GLOBALMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) GENMACP2A2(a_s_,name,argp1,argp2,i,j,k,arga1,arga2)
468 #define GLOBALMACP1A3(name,argp1,i,j,k,arga1,arga2,arga3) GENMACP1A3(a_s_,name,argp1,i,j,k,arga1,arga2,arga3)
469 #define GLOBALMACP0A4(name,i,j,k,arga1,arga2,arga3,arga4) GENMACP0A4(a_s_,name,i,j,k,arga1,arga2,arga3,arga4)
474 #define POINT(name) GENPOINT(,name)
475 #define MAC(name,i,j,k) GENMAC(,name,i,j,k)
476 #define MACP0A0(name,i,j,k) GENMACP0A0(,name,i,j,k)
478 #define MACP1A0(name,argp1,i,j,k) GENMACP1A0(,name,argp1,i,j,k)
479 #define MACP0A1(name,i,j,k,arga1) GENMACP0A1(,name,i,j,k,arga1)
481 #define MACP2A0(name,argp1,argp2,i,j,k) GENMACP2A0(,name,argp1,argp2,i,j,k)
482 #define MACP1A1(name,argp1,i,j,k,arga1) GENMACP1A1(,name,argp1,i,j,k,arga1)
483 #define MACP0A2(name,i,j,k,arga1,arga2) GENMACP0A2(,name,i,j,k,arga1,arga2)
485 #define MACP3A0(name,argp1,argp2,argp3,i,j,k) GENMACP3A0(,name,argp1,argp2,argp3,i,j,k)
486 #define MACP2A1(name,argp1,argp2,i,j,k,arga1) GENMACP2A1(,name,argp1,argp2,i,j,k,arga1)
487 #define MACP1A2(name,argp1,i,j,k,arga1,arga2) GENMACP1A2(,name,argp1,i,j,k,arga1,arga2)
488 #define MACP0A3(name,i,j,k,arga1,arga2,arga3) GENMACP0A3(,name,i,j,k,arga1,arga2,arga3)
490 #define MACP4A0(name,argp1,argp2,argp3,argp4,i,j,k) GENMACP4A0(,name,argp1,argp2,argp3,argp4,i,j,k)
491 #define MACP3A1(name,argp1,argp2,argp3,i,j,k,arga1) GENMACP3A1(,name,argp1,argp2,argp3,i,j,k,arga1)
492 #define MACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) GENMACP2A2(,name,argp1,argp2,i,j,k,arga1,arga2)
493 #define MACP1A3(name,argp1,i,j,k,arga1,arga2,arga3) GENMACP1A3(,name,argp1,i,j,k,arga1,arga2,arga3)
494 #define MACP0A4(name,i,j,k,arga1,arga2,arga3,arga4) GENMACP0A4(,name,i,j,k,arga1,arga2,arga3,arga4)
505 #define PTRMAC(name,i,j,k) (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
506 #define PTRMACP0A0(name,i,j,k) PTRMAC(name,i,j,k)
508 #define PTRMACP1A0(name,argp1,i,j,k) (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
509 #define PTRMACP0A1(name,i,j,k,arga1) (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
511 #define PTRMACP2A0(name,argp1,argp2,i,j,k) (*)[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
512 #define PTRMACP1A1(name,argp1,i,j,k,arga1) (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
513 #define PTRMACP0A2(name,i,j,k,arga1,arga2) (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
515 #define PTRMACP3A0(name,argp1,argp2,argp3,i,j,k) (*)[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
516 #define PTRMACP2A1(name,argp1,argp2,i,j,k,arga1) (*)[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
517 #define PTRMACP1A2(name,argp1,i,j,k,arga1,arga2) (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
518 #define PTRMACP0A3(name,i,j,k,arga1,arga2,arga3) (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
520 #define PTRMACP4A0(name,argp1,argp2,argp3,argp4,i,j,k) (*)[argp2][argp3][argp4][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
521 #define PTRMACP3A1(name,argp1,argp2,argp3,i,j,k,arga1) (*)[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
522 #define PTRMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) (*)[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
523 #define PTRMACP1A3(name,argp1,i,j,k,arga1,arga2,arga3) (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
524 #define PTRMACP0A4(name,i,j,k,arga1,arga2,arga3,arga4) (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]
529 #define PTRDEFGLOBALMAC(name,i,j,k) (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
530 #define PTRDEFGLOBALMACP0A0(name,i,j,k) PTRDEFGLOBALMAC(name,i,j,k)
532 #define PTRDEFGLOBALMACP1A0(name,argp1,i,j,k) (*GLOBALPOINT(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
533 #define PTRDEFGLOBALMACP0A1(name,i,j,k,arga1) (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
535 #define PTRDEFGLOBALMACP2A0(name,argp1,argp2,i,j,k) (*GLOBALPOINT(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
536 #define PTRDEFGLOBALMACP1A1(name,argp1,i,j,k,arga1) (*GLOBALPOINT(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
537 #define PTRDEFGLOBALMACP0A2(name,i,j,k,arga1,arga2) (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
539 #define PTRDEFGLOBALMACP3A0(name,argp1,argp2,argp3,i,j,k) (*GLOBALPOINT(name))[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
540 #define PTRDEFGLOBALMACP2A1(name,argp1,argp2,i,j,k,arga1) (*GLOBALPOINT(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
541 #define PTRDEFGLOBALMACP1A2(name,argp1,i,j,k,arga1,arga2) (*GLOBALPOINT(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
542 #define PTRDEFGLOBALMACP0A3(name,i,j,k,arga1,arga2,arga3) (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
544 #define PTRDEFGLOBALMACP4A0(name,argp1,argp2,argp3,argp4,i,j,k) (*GLOBALPOINT(name))[argp2][argp3][argp4][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
545 #define PTRDEFGLOBALMACP3A1(name,argp1,argp2,argp3,i,j,k,arga1) (*GLOBALPOINT(name))[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
546 #define PTRDEFGLOBALMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) (*GLOBALPOINT(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
547 #define PTRDEFGLOBALMACP1A3(name,argp1,i,j,k,arga1,arga2,arga3) (*GLOBALPOINT(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
548 #define PTRDEFGLOBALMACP0A4(name,i,j,k,arga1,arga2,arga3,arga4) (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]
553 #define PURENAME(name) GENPOINT(,name)
554 #define PTRDEFMAC(name,i,j,k) (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
555 #define PTRDEFMACP0A0(name,i,j,k) PTRDEFMAC(name,i,j,k)
557 #define PTRDEFMACP1A0(name,argp1,i,j,k) (*PURENAME(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
558 #define PTRDEFMACP0A1(name,i,j,k,arga1) (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
560 #define PTRDEFMACP2A0(name,argp1,argp2,i,j,k) (*PURENAME(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
561 #define PTRDEFMACP1A1(name,argp1,i,j,k,arga1) (*PURENAME(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
562 #define PTRDEFMACP0A2(name,i,j,k,arga1,arga2) (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
564 #define PTRDEFMACP3A0(name,argp1,argp2,argp3,i,j,k) (*PURENAME(name))[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
565 #define PTRDEFMACP2A1(name,argp1,argp2,i,j,k,arga1) (*PURENAME(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
566 #define PTRDEFMACP1A2(name,argp1,i,j,k,arga1,arga2) (*PURENAME(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
567 #define PTRDEFMACP0A3(name,i,j,k,arga1,arga2,arga3) (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
569 #define PTRDEFMACP4A0(name,argp1,argp2,argp3,argp4,i,j,k) (*PURENAME(name))[argp2][argp3][argp4][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
570 #define PTRDEFMACP3A1(name,argp1,argp2,argp3,i,j,k,arga1) (*PURENAME(name))[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
571 #define PTRDEFMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) (*PURENAME(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
572 #define PTRDEFMACP1A3(name,argp1,i,j,k,arga1,arga2,arga3) (*PURENAME(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
573 #define PTRDEFMACP0A4(name,i,j,k,arga1,arga2,arga3,arga4) (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]
580 #define GENMETMAC(prefix,name,i,j,k) prefix##name[STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)]
581 #define BASEMETMAC(name,i,j,k) GENMETMAC(a_,name,i,j,k)
582 #define GLOBALMETMAC(name,i,j,k) GENMETMAC(a_s_,name,i,j,k)
583 #define METMAC(name,i,j,k) GENMETMAC(,name,i,j,k)
584 #define PTRMETMAC(name,i,j,k) (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
585 #define PTRDEFGLOBALMETMAC(name,i,j,k) (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
586 #define PTRDEFMETMAC(name,i,j,k) (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
588 #define GENMETMACP0A1(prefix,name,i,j,k,arga1) prefix##name[STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)][arga1]
589 #define BASEMETMACP0A1(name,i,j,k,arga1) GENMETMACP0A1(a_,name,i,j,k,arga1)
590 #define GLOBALMETMACP0A1(name,i,j,k,arga1) GENMETMACP0A1(a_s_,name,i,j,k,arga1)
591 #define METMACP0A1(name,i,j,k,arga1) GENMETMACP0A1(,name,i,j,k,arga1)
592 #define PTRMETMACP0A1(name,i,j,k,arga1) (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
593 #define PTRDEFGLOBALMETMACP0A1(name,i,j,k,arga1) (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
594 #define PTRDEFMETMACP0A1(name,i,j,k,arga1) (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
596 #define GENMETMACP1A0(prefix,name,argp1,i,j,k) prefix##name[argp1][STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)]
597 #define BASEMETMACP1A0(name,argp1,i,j,k) GENMETMACP1A0(a_,name,argp1,i,j,k)
598 #define GLOBALMETMACP1A0(name,argp1,i,j,k) GENMETMACP1A0(a_s_,name,argp1,i,j,k)
599 #define METMACP1A0(name,argp1,i,j,k) GENMETMACP1A0(,name,argp1,i,j,k)
600 #define PTRMETMACP1A0(name,argp1,i,j,k) (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
601 #define PTRDEFGLOBALMETMACP1A0(name,argp1,i,j,k) (*GLOBALPOINT(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
602 #define PTRDEFMETMACP1A0(name,argp1,i,j,k) (*PURENAME(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
604 #define GENMETMACP1A1(prefix,name,argp1,i,j,k,arga1) prefix##name[argp1][STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)][arga1]
605 #define BASEMETMACP1A1(name,argp1,i,j,k,arga1) GENMETMACP1A1(a_,name,argp1,i,j,k,arga1)
606 #define GLOBALMETMACP1A1(name,argp1,i,j,k,arga1) GENMETMACP1A1(a_s_,name,argp1,i,j,k,arga1)
607 #define METMACP1A1(name,argp1,i,j,k,arga1) GENMETMACP1A1(,name,argp1,i,j,k,arga1)
608 #define PTRMETMACP1A1(name,argp1,i,j,k,arga1) (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
609 #define PTRDEFGLOBALMETMACP1A1(name,argp1,i,j,k,arga1) (*GLOBALPOINT(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
610 #define PTRDEFMETMACP1A1(name,argp1,i,j,k,arga1) (*PURENAME(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
612 #define GENMETMACP1A2(prefix,name,argp1,i,j,k,arga1,arga2) prefix##name[argp1][STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)][arga1][arga2]
613 #define BASEMETMACP1A2(name,argp1,i,j,k,arga1,arga2) GENMETMACP1A2(a_,name,argp1,i,j,k,arga1,arga2)
614 #define GLOBALMETMACP1A2(name,argp1,i,j,k,arga1,arga2) GENMETMACP1A2(a_s_,name,argp1,i,j,k,arga1,arga2)
615 #define METMACP1A2(name,argp1,i,j,k,arga1,arga2) GENMETMACP1A2(,name,argp1,i,j,k,arga1,arga2)
616 #define PTRMETMACP1A2(name,argp1,i,j,k,arga1,arga2) (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2]
617 #define PTRDEFGLOBALMETMACP1A2(name,argp1,i,j,k,arga1,arga2) (*GLOBALPOINT(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2]
618 #define PTRDEFMETMACP1A2(name,argp1,i,j,k,arga1,arga2) (*PURENAME(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2]
621 #define GENMETMACP2A0(prefix,name,argp1,argp2,i,j,k) prefix##name[argp1][argp2][STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)]
622 #define BASEMETMACP2A0(name,argp1,argp2,i,j,k) GENMETMACP2A0(a_,name,argp1,argp2,i,j,k)
623 #define GLOBALMETMACP2A0(name,argp1,argp2,i,j,k) GENMETMACP2A0(a_s_,name,argp1,argp2,i,j,k)
624 #define METMACP2A0(name,argp1,argp2,i,j,k) GENMETMACP2A0(,name,argp1,argp2,i,j,k)
625 #define PTRMETMACP2A0(name,argp1,argp2,i,j,k) (*)[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
626 #define PTRDEFGLOBALMETMACP2A0(name,argp1,argp2,i,j,k) (*GLOBALPOINT(name))[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
627 #define PTRDEFMETMACP2A0(name,argp1,argp2,i,j,k) (*PURENAME(name))[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
630 #define GENMETMACP2A2(prefix,name,argp1,argp2,i,j,k,arga1,arga2) prefix##name[argp1][argp2][STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)][arga1][arga2]
631 #define BASEMETMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) GENMETMACP2A2(a_,name,argp1,argp2,i,j,k,arga1,arga2)
632 #define GLOBALMETMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) GENMETMACP2A2(a_s_,name,argp1,argp2,i,j,k,arga1,arga2)
633 #define METMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) GENMETMACP2A2(,name,argp1,argp2,i,j,k,arga1,arga2)
634 #define PTRMETMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) (*)[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2]
635 #define PTRDEFGLOBALMETMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) (*GLOBALPOINT(name))[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2]
636 #define PTRDEFMETMACP2A2(name,argp1,argp2,i,j,k,arga1,arga2) (*PURENAME(name))[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2]
638 #define GENMETMACP0A3(prefix,name,i,j,k,arga1,arga2,arga3) prefix##name[STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)][arga1][arga2][arga3]
639 #define BASEMETMACP0A3(name,i,j,k,arga1,arga2,arga3) GENMETMACP0A3(a_,name,i,j,k,arga1,arga2,arga3)
640 #define GLOBALMETMACP0A3(name,i,j,k,arga1,arga2,arga3) GENMETMACP0A3(a_s_,name,i,j,k,arga1,arga2,arga3)
641 #define METMACP0A3(name,i,j,k,arga1,arga2,arga3) GENMETMACP0A3(,name,i,j,k,arga1,arga2,arga3)
642 #define PTRMETMACP0A3(name,i,j,k,arga1,arga2,arga3) (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]
643 #define PTRDEFGLOBALMETMACP0A3(name,i,j,k,arga1,arga2,arga3) (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]
644 #define PTRDEFMETMACP0A3(name,i,j,k,arga1,arga2,arga3) (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]