HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
global.storage.h
Go to the documentation of this file.
1 
6 
32 
33 
34 
35 
36 
37 
38 
39 
40 #define N1M (N1+N1BND*2)
41 #define N2M (N2+N2BND*2)
42 #define N3M (N3+N3BND*2)
43 
44 
47 #define NBIG1M ((N1M>N2M) ? N1M : N2M)
48 #define NBIGM ((NBIG1M>N3M) ? NBIG1M : N3M)
49 
52 #define MAXSURFA1 (N2M*N3M*N1NOT1)
53 #define MAXSURFA2 (N1M*N3M*N2NOT1)
54 #define MAXSURFA3 (N1M*N2M*N3NOT1)
55 
59 #define NBIGS1M ((MAXSURFA1>MAXSURFA2) ? MAXSURFA1 : MAXSURFA2)
60 #define NBIGSM ((NBIGS1M>MAXSURFA3) ? NBIGS1M : MAXSURFA3)
61 
62 
86 
87 
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));
92 
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));
97 
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));
102 
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));
107 
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));
112 
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));
117 
118 
119 #if(ORDERSTORAGE==0)
120 
121 #define NSTORE1 N1M
122 #define NSTORE2 N2M
123 #define NSTORE3 N3M
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
133 
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)
140 
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)
148 #else
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)
155 #endif
156 
157 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE0(i,j,k)
158 
159 
160 
161 #elif(ORDERSTORAGE==1)
162 
163 #define NSTORE2 N1M
164 #define NSTORE3 N2M
165 #define NSTORE1 N3M
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
175 
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)
182 
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)
190 #else
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)
197 #endif
198 
199 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE1(i,j,k)
200 
201 
202 #elif(ORDERSTORAGE==2)
203 
204 #define NSTORE3 N1M
205 #define NSTORE1 N2M
206 #define NSTORE2 N3M
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
216 
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)
223 
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)
231 #else
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)
238 #endif
239 
240 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE2(i,j,k)
241 
242 
243 #elif(ORDERSTORAGE==3)
244 
245 #define NSTORE1 N1M
246 #define NSTORE3 N2M
247 #define NSTORE2 N3M
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
257 
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)
264 
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)
272 #else
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)
279 #endif
280 
281 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE3(i,j,k)
282 
283 
284 #elif(ORDERSTORAGE==4)
285 
286 #define NSTORE2 N1M
287 #define NSTORE1 N2M
288 #define NSTORE3 N3M
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
298 
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)
305 
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)
313 #else
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)
320 #endif
321 
322 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE4(i,j,k)
323 
324 
325 #elif(ORDERSTORAGE==5)
326 
327 #define NSTORE3 N1M
328 #define NSTORE2 N2M
329 #define NSTORE1 N3M
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
339 
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)
346 
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)
354 #else
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)
361 #endif
362 
363 
364 #define OPENMP3DLOOPBLOCK2IJK(i,j,k) OPENMP3DLOOPBLOCK2IJKSTORAGE5(i,j,k)
365 
366 
367 #endif
368 
376 
377 
382 
390 
391 
395 
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)
400 
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]
403 
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]
407 
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]
412 
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]
418 
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)
425 
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)
428 
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)
432 
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)
437 
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)
443 
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)
452 
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)
455 
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)
459 
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)
464 
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)
470 
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)
477 
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)
480 
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)
484 
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)
489 
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)
495 
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)
507 
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]
510 
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]
514 
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]
519 
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]
525 
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)
531 
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]
534 
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]
538 
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]
543 
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]
549 
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)
556 
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]
559 
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]
563 
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]
568 
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]
574 
575 
576 
577 
578 
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)]
587 
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]
595 
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)]
603 
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]
611 
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]
619 
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)]
628 
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]
637 
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]
645 
649 
652 
660 
661 
662 // Now reference any access to an array using: MAC(simplename,i,j,k) and reference a pointer (e.g. for passing via functions) as GLOBALPOINT(simplename)
663 // Here simplename is the name originally used for the array, that has been replaced by a_s_<originalname>
664 
665 
666 
667 // emacs regexp: http://jamesthornton.com/emacs/node/emacs_97.html
668 // In set_arrays_multidimen.c:
669 
670 // NOTE1) recall that can't put non-functional macro as argument to functional macro since it won't expand. For example, can't convert just: array[ip1] -> MAC(array,ip1) since ip1 won't expand into (e.g.) i+1 if N1>1. Must convert to MAC(array,ip1mac(i))
671 // NOTE2) Note all y[?][?][?] will be multi-dim array of the sort here, and of course some have more indices in front or after spatial indices
672 
673 // What was done:
674 //
675 // 1) I first replaced: a_\([_a-zA-Z0-9]+\)\[ -> BASEPOINT(\1)[
676 // 1.5) In set_arrays.c: I replaced (checking each one) all \([_a-zA-Z0-9]+\) *= *( -> POINT(\1) = (
677 // 2) In set_arrays.c: For pointer assignments, I then replaced all <simplename> -> POINT(simplename)
678 // 3) In set_arrays.c: For value assignments, I replaced simplename[...][...][i][j][k][...][...] with one of the MAC(name,i,j,k) macros depending upon if additional indices before and/or after spatial indices
679 // Emacs regexp replace is (start with longest versions first):
680 
681 // a) \([_a-zA-Z0-9]+\)\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\] -> MACP4A0(\1,\2,\3,\4,\5,\6,\7,\8) [pvcorninterp only] MACP0A4(\1,\2,\3,\4,\5,\6,\7,\8) [enodebugarray only] [and other forms]
682 
683 // b) \([_a-zA-Z0-9]+\)\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\] -> MACP3A0(\1,\2,\3,\4,\5,\6,\7) [pbcorninterp], MACP1A2(\1,\2,\3,\4,\5,\6,\7) [gcon,gcov,gcovlast,dxdxpstore,idxdxpstore] , MACP0A3(\1,\2,\3,\4,\5,\6,\7) [conn] [and other forms]
684 
685 // c) \([_a-zA-Z0-9]+\)\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\] -> MACP2A0(\1,\2,\3,\4,\5,\6) [fluxstate,wspeed,wspeedcorn] or MACP1A1(\1,\2,\3,\4,\5,\6) [pk,gp_l,gp_r,gcovpert,eomfunc,beta,gcovpertlast,Xstore,Vstore] or MACP0A2(\1,\2,\3,\4,\5,\6) [failfloorcount,cfaraday]
686 
687 // d) \([_a-zA-Z0-9]+\)\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\] -> MACP1A0(\1,\2,\3,\4,\5) [pother,emf,vpotarrayglobal,vpotanalytic,geomcornglobal,weno_prim_lower_order_fraction,EOSglobal,gdet,gdetvol,alphalapse,betasqoalphasq,alphalapselast,compgeom,compgeomlast] or MACP0A1(\1,\2,\3,\4,\5) [pglobal,panalytic,pstaganalytic,ptemparray,utemparray,vconemf,wspeedtemp,uinitglobal,ulastglobal,unewglobal,dUgeomarray,upointglobal,F1,F2,F3,F1EM,F2EM,F3EM,pleft,pright,prc,Bhatglobal,Bhatanalytic,pstagglobal,dq1,dq2,dq3,fluxvectemp,Fa,Fb,stencilvartemp,weno_lower_order_fraction,fluxdump,pflag,dissfunpos,fcon,jcon,<averagethings>,conn2,idxvol]
688 
689 // e) \([_a-zA-Z0-9]+\)\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\]\[\([a-zA-Z0-9-+]+\)\] -> MACP0A0(\1,\2,\3,\4) [fluxstatecent]
690 
692 // For PTRMAC:
693 //
694 // 1) For set_arrays_multidimen.c (only need to do once per a,b,c,d,e since assume already have done above that gives macro name:
695 // a) (\*) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *) *( *& *(\([_a-zA-Z0-9]+\)(\([_a-zA-Z0-9]+\), -> (*)PTR\7(\8,FILL,\1,\2,\3,\4,\5,\6)) (&(\7(\8,
696 
697 // b) (\*) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *) *( *& *(\([_a-zA-Z0-9]+\)(\([_a-zA-Z0-9]+\), -> (*)PTR\6(\7,FILL,\1,\2,\3,\4,\5)) (&(\6(\7,
698 
699 // c) (\*) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *) *( *& *(\([_a-zA-Z0-9]+\)(\([_a-zA-Z0-9]+\), -> (*)PTR\5(\6,FILL,\1,\2,\3,\4)) (&(\5(\6,
700 
701 // d) (\*) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *) *( *& *(\([_a-zA-Z0-9]+\)(\([_a-zA-Z0-9]+\), -> (*)PTR\4(\5,FILL,\1,\2,\3)) (&(\4(\5,
702 
703 // e) (\*) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *) *( *& *(\([_a-zA-Z0-9]+\)(\([_a-zA-Z0-9]+\), -> (*)PTR\3(\4,FILL,\1,\2)) (&(\3(\4,
704 
705 // f) THEN replace PTRBASE -> PTR
706 
707 // g) MUST replace FILL with correct thing (at least true for spatial indices). This is so reordering knows what to use.
708 // Just search/replace: FILL,N2M+SHIFT2 -> N1M+SHIFT1,N2M+SHIFT2 (and then after!) FILL,N2M -> N1M,N2M
709 // That gets all the required FILL's
710 
711 // h) Removed setting of pointer to zero since should be zero by default and requires by-hand work I don't want to do.
712 
713 
714 
716 // For PTRDEFMAC:
717 
718 // For superdefs.pointers.h (after partially converted using POINT)
719 
720 // 1) (*name)[N2M][N3M][NPR] -> PTRDEFMAC(name,i,j,k,pl)
721 //
722 // a) ( *\* *POINT(\([_a-zA-Z0-9+-]+\) *) *) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *; -> PTRDEFMACP4A0(\1,FILL,\2,\3,\4,\5,\6,\7); and PTRDEFMACP0A4(\1,FILL,\2,\3,\4,\5,\6,\7);
723 
724 // b) ( *\* *POINT(\([_a-zA-Z0-9+-]+\) *) *) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *; -> PTRDEFMACP3A0(\1,FILL,\2,\3,\4,\5,\6); and PTRDEFMACP1A2(\1,FILL,\2,\3,\4,\5,\6); and PTRDEFMACP0A3(\1,FILL,\2,\3,\4,\5,\6);
725 
726 // c) ( *\* *POINT(\([_a-zA-Z0-9+-]+\) *) *) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *; -> PTRDEFMACP2A0(\1,FILL,\2,\3,\4,\5); and PTRDEFMACP1A1(\1,FILL,\2,\3,\4,\5); and PTRDEFMACP0A2(\1,FILL,\2,\3,\4,\5);
727 
728 // d) ( *\* *POINT(\([_a-zA-Z0-9+-]+\) *) *) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *; -> PTRDEFMACP1A0(\1,FILL,\2,\3,\4); and PTRDEFMACP0A1(\1,FILL,\2,\3,\4);
729 
730 // e) ( *\* *POINT(\([_a-zA-Z0-9+-]+\) *) *) *\[\([_a-zA-Z0-9+-]+\)\]\[\([_a-zA-Z0-9+-]+\)\] *; -> PTRDEFMACP0A0(\1,FILL,\2,\3);
731 
732 // f) Then correct FILL,N2M+SHIFT2 -> N1M+SHIFT1,N2M+SHIFT2 and then after do FILL,N2M -> N1M,N2M
733 // Remaining FILL's are ok if not associated with spatial indices
734 
735 
736 
737 
738 
739 
740 
741 
743 // For rest of files:
744 
745 
746 // 1) replace all global pointers with GLOBALMACP?A?() or GLOBALPOINT(name) as required. Ensure not to make global something with same name as global array (e.g. F1,F2,F3). Code will compile, but will not be correct or general. Could make global arrays names different so forced to change.
747 
748 // a) name[loc][i][j][k] -> GLOBALMACP1A0(name,loc,i,j,k):
749 
750 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]
751 // -> GLOBALMACP0A4(\1,\2,\3,\4,\5,\6,\7,\8) [enodebug]
752 // GLOBALMACP4A0(\1,\2,\3,\4,\5,\6,\7,\8) [pvcorn]
753 
754 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]
755 // -> GLOBALMACP3A0(\1,\2,\3,\4,\5,\6,\7)
756 // GLOBALMACP2A1(\1,\2,\3,\4,\5,\6,\7)
757 // GLOBALMACP1A2(\1,\2,\3,\4,\5,\6,\7) [gcov gcovlast gcon]
758 // GLOBALMACP0A3(\1,\2,\3,\4,\5,\6,\7) [full conn access]
759 
760 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]
761 // -> GLOBALMACP2A0(\1,\2,\3,\4,\5,\6)
762 // GLOBALMACP1A1(\1,\2,\3,\4,\5,\6)
763 // GLOBALMACP0A2(\1,\2,\3,\4,\5,\6)
764 
765 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]
766 // -> GLOBALMACP1A0(\1,\2,\3,\4,\5)
767 // GLOBALMACP0A1(\1,\2,\3,\4,\5) [very common]
768 
769 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]\[\([_>a-zA-Z0-9+-\ ()]+\)\]
770 // -> GLOBALMAC(\1,\2,\3,\4)
771 
772 
773 // Careful with (e.g.) ip1 since needs to be macro version ip1mac(i) once inside macro.
774 // Note, I just removed (commented-out) such types of accesses and replaced with macro versions.
775 // Use macros if want to do (e.g.) ip1 or im1 in future.
776 // Don't change fun(a) with "a" as argument to function unless global array with global name
777 
778 
779 
780 // 2) FTYPE (*a)[N2M][N3M] -> FTYPE (*a)[NSTORE2][NSTORE3] , etc.
781 
782 // Instead of replacing normal pointers (non-global) in function arguments, declarations, etc. with PTRDEFMAC(),
783 // much simpler and ok for end-user to just have N1M->NSTORE1 N2M->NSTORE2 N3M->NSTORE3, etc.
784 // Do NOT replace function arguments that have arrays with PTRDEFMACP?A?() similar to above but without the POINT()
785 //
786 
787 // N?M macro definitions are here since these are the only safe uses of N?M, except for exceptions listed now.
788 // All other uses are presumed to actually mean NSTORE?, like in function args and pointer definitions in functions.
789 // Files excempt from N?M changes to NSTORE?:
790 //
791 // ?.h:
792 // A1) global.storage.h
793 // A2) global.grmhd.h (just text discussions)
794 // A3) superdefs.h (because already converted to BASEMACP?A?() form instead of BASEPOINT() form
795 // A4) superdefs.pointers.h (because already converted to PTRDEFGLOBALMACP?A?() form instead of GLOBALPOINT and using NSTORE
796 // A5) reconstructeno.superdefs.h (as with superdefs.pointers.h and superdefs.h)
797 // A6) kazfulleos.superdefs.h ("")
798 //
799 // ?.c :
800 // A7) set_arrays_multidimen.c ("")
801 // A8) kazfulleos_set_arrays.c ("")
802 // A9) liaison_set_arrays.c ("")
803 // A10) reconstructeno_set_arrays.c ("")
804 //
805 // Other notes:
806 // A11) Ensure that reverted rest of files to not use PTRDEF or PTRMAC form, like in global.funcdeclare.h and *.c [true right now]
807 // A12) Do search-replace across multiple files: http://xahlee.org/emacs/find_replace_inter.html
808 
809 // http://www.gnu.org/software/emacs/manual/html_node/emacs/Tags.html#Tags
810 // Recall M-X is ALT-X and M-? is CTRL-? or ALT-?
811 //
812 // to use emacs to search/replace multiple files do:
813 // B0) create tag list exclusion within file "tagexcludelist.txt" with contents (without //'s):
814 // jon_interp.c
815 // jon_interp_computepreprocess.c
816 // jon_interp_filter.c
817 // jon_interp_interpolationitself.c
818 // bin2txt.c
819 // smcalc.c
820 // global.h
821 // defs.h
822 // defs.general.h
823 // mpidefs.h
824 // mpi_set_arrays.c
825 // nrutil2.c
826 // tensor.c
827 // supermpidefs.h
828 // global.storage.h
829 // global.grmhd.h
830 // superdefs.h
831 // superdecs.h
832 // superdefs.pointers.h
833 // superdecs.pointers.h
834 // kazfulleos.superdefs.h
835 // set_arrays_multidimen.c
836 // kazfulleos_set_arrays.c
837 // liaison_set_arrays.c
838 // superdefs.liaison.h
839 // reconstructeno_set_arrays.c
840 // reconstructeno.superdefs.h
841 //
842 // see bottom for final list and comments about each file
843 //
844 // note: make superclean used to remove generated files.
845 // B1) make superclean ; ctags -e --exclude=@tagexcludelist.txt *.c *.h
846 // B2) emacs &
847 // B3) M-x visit-tags-table [hit enter]
848 // B4) M-x tags-query-replace
849 // B5) ADD to exclusion list if satisfied arrays present are completely converted as necessary to avoid cycling through non-convertible arrays repeatedly.
850 // (Should be easy to process per-point files as indicated by maketail.harm.inc)
851 // After some fixes, added other files as at bottom of this file
852 // boundmpi.c
853 // boundmpiint.c
854 // mpi_init.c
855 // kazfulleos.c
856 //
857 // a) Robust replace: \[N1M\]\[N2M\]\[N3M\] -> [NSTORE1][NSTORE2][NSTORE3]
858 // b) Robust replace: \[N2M\]\[N3M\] -> [NSTORE2][NSTORE3] : since for pointers first [N1M] is hidden
859 // c) Robust replace: \[N1BND\]\[N2BND\]\[N3BND\] -> [NSTOREBND1][NSTOREBND2][NSTOREBND3]
860 // d) Robust replace: \[N2BND\]\[N3BND\] -> [NSTOREBND2][NSTOREBND3] : since for pointers first [N1M] is hidden [None of these since PTR'ified them]
861 // e) Robust replace: \[N1M\+SHIFT1\]\[N2M\+SHIFT2\]\[N3M\+SHIFT3\] -> [NSTORE1+SHIFTSTORE1][NSTORE2+SHIFTSTORE2][NSTORE3+SHIFTSTORE3]
862 // f) Robust replace: \[N2M\+SHIFT2\]\[N3M\+SHIFT3\] -> [NSTORE2+SHIFTSTORE2][NSTORE3+SHIFTSTORE3] : since for pointers first [N1M] is hidden
863 // g) [Note: bounds.ns.c's aphifromoutflow shows example where user should use macros for memory, since each dimension not treated similarly]
864 // [Note: [-N1BND] is used for 1-D arrays, and should keep since really refers to radius dimension]
865 //
866 // Once done here, then should no longer have any N1M,N2M,N3M in any files since only used for creating or pointing to storage arrays.
867 // Still should be use of SHIFT1,SHIFT2,SHIFT3,N1BND,N2BND,N3BND in files if associated with i,j,k and NOT storage arrays.
868 //
869 // Check with things like: grep "\[" *.c *.h | grep N2M with SHIFT and BND versions too : To ensure didn't miss storage definition (storage accesses inside []'s will be fixed during #3 below [Looks good right now]
870 //
871 // B5) C-x s ! [Save all buffers]
872 
873 
874 
875 
876 
877 // 3) a[i][j][k]: Replace remaining pointers in code that access spatial-related memory with MACP?A?()
878 
879 // ANY array[?1][?2][?3] -> macarray(?1,?2,?3) in code. This is easier and less bulky within normal code than changing all (e.g.) [i][j][k] -> [STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]
880 // So every multi-D array should have a macarray() associated with it. Inside macarray we will use STO?(i,j,k).
881 
882 // Do same as #1 above for "rest of files," But instead of using GLOBALMACP?A?() use just MACP?A?(), and start from largest and go to smallest access sizes.
883 
884 // Identify pointer by how it accesses. Multi-dimen arrays should be accessed via: [i][j][k] in some form. Don't get confused by 3D accesses that aren't spatially related! Don't ignore when just (e.g.) [0][j][k] or [j][k] when still spatial.
885 
886 // Careful with (e.g.) ip1 since needs to be macro version ip1mac(i) once inside macro [already converted by removing definitions and forcing user to always use macro versions]
887 
888 // Need to track with all pointers that get renamed since while don't have to wrap-up the new name, have to wrap-up the access.
889 
890 // Watch out for pointer definitions that have p[NSTORE1][...] since these should not be converted to MAC if already have (e.g.) NSTORE1 instead of N1M
891 // e.g.:
892 // grep "MAC" *.c *.h | grep STORE
893 //
894 // Watch out for p[][...] as well.
895 // Below replacements miss p[], which is ok, but could catch p[ ]. First do:
896 //
897 // \([_a-zA-Z0-9]+\)\[ *\]\[ -> (*\1)[
898 
899 // Then do (note below does not catch on [] but does catch on [ ], so why above done so avoids catching on [ ] (even though apparently there were no such instances, there could have been and it would have had MAC(name,NSTORE1,...) and that would be invalid).
900 
901 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]
902 // -> MACP0A4(\1,\2,\3,\4,\5,\6,\7,\8) [enodebug]
903 // MACP4A0(\1,\2,\3,\4,\5,\6,\7,\8) [pvcorn]
904 
905 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]
906 // -> MACP3A0(\1,\2,\3,\4,\5,\6,\7) [pbcorn] [ignore EOS tables in kazfulleos.c]
907 // MACP2A1(\1,\2,\3,\4,\5,\6,\7)
908 // MACP1A2(\1,\2,\3,\4,\5,\6,\7) [gcov gcovlast gcon]
909 // MACP0A3(\1,\2,\3,\4,\5,\6,\7) [full conn access]
910 
911 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]
912 // -> MACP2A0(\1,\2,\3,\4,\5,\6) [wspeed fluxstate] -> MACP2A0(wspeed,\1,\2,\3,\4,\5)
913 // MACP1A1(\1,\2,\3,\4,\5,\6) [fluxvec fluxvecEM fluxveca fluxvecb pl_ct pr_ct dqvec primface_l primface_r] [ignore dirloopset]
914 // MACP0A2(\1,\2,\3,\4,\5,\6) [gcovpert gcovpertlast failfloorcount]
915 // [ignore eos interpolation stuff and primfactor]
916 
917 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]
918 // -> MACP1A0(\1,\2,\3,\4,\5) [gdet pother (as global) emf A vpot]
919 // MACP0A1(\1,\2,\3,\4,\5) [prim ui ucum p2interp panalytic(as global)] [very common]
920 
921 // \([_a-zA-Z0-9]+\)\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]\[\([_>a-zA-Z0-9+-\*\/\ ()]+\)\]
922 // -> MAC(\1,\2,\3,\4) [fluxstatecent or passing any MACP0A1 type variable to a function]
923 
924 // Worry about user storage mapping functions, like in mpi_fileio.c for mapvaluejonio, that presume N3 is fastest, N2 slower, and N1 slowest or the inverse or whatever
925 // mapvaluejonio is ok
926 // Even ROMIO uses this mapping, so ROMIO good.
927 
928 // Finally check that no conversion led to MAC and NSTORE or NSTOREBND on same line:
929 // grep MAC *.c *.h | grep NSTORE
930 // [appears good right now]
931 
932 // Also, check that no remaining types of accesses (grep doesn't have +)
933 // grep -e '[_a-zA-Z0-9]\{1,\}\[[_>a-zA-Z0-9+-\*\/\ ()]*\]\[[_>a-zA-Z0-9+-\*\/\ ()]*\]\[[_>a-zA-Z0-9+-\*\/\ ()]*\]' *.c *.h > badness.temp.txt ; grep --invert-match -e 'dirloopset\[' badness.temp.txt > badness.temp2.txt ; grep --invert-match -e 'dirgenset\[' badness.temp2.txt > badness.temp3.txt ; grep --invert-match -e 'workbc\[' badness.temp3.txt > badness.temp4.txt ; grep --invert-match -e 'inoutlohi\[' badness.temp4.txt > badness.temp5.txt ; grep --invert-match -e 'localpdotterms\[' badness.temp5.txt > badness.temp6.txt ; grep --invert-match -e 'ijkcorn\[' badness.temp6.txt > badness.temp7.txt ; grep --invert-match -e 'primfactor\[' badness.temp7.txt > badness.temp8.txt ; grep --invert-match -e 'monoindicator\[' badness.temp8.txt > badness.temp9.txt ; grep --invert-match -e 'pdottermsjet2\[' badness.temp9.txt > badness.temp10.txt ; grep --invert-match -e 'pdottermsjet2_tot\[' badness.temp10.txt > badness.temp11.txt ; less badness.temp11.txt
934 
935 // ignore jon_interp stuff, smcalc, or bin2txt stuff.
936 
937 // Note that sometimes emacs with TAGS wouldn't search/replace in all files for some reason -- or TAGS was missing files.
938 
939 // Ensure MAC appears to be used in right way:
940 // grep "MAC(" *.h *.c
941 
942 
943 
944 // 4) Loops (at least COMP loops in global.comploops.h) need to be reordered depending upon ORDERSTORAGE
945 // Change ALL spatial (i,j,k) type loops (2D loops too sometimes) to reorder depending upon ORDERSTORAGE
946 // Note, code will work without this change since (e.g.) N1 is always associated with i.
947 // But this is the whole point of the macrofication, to allow fastest index to be elongated in space on a CPU so avoid cache-misses.
948 // Changes occur in global.loops.h [in some included files] and global.comploops.h only since collected all multi-D loops there including the boundary condition loops.
949 // Note some loop parts in within code, and should replace them. (e.g. LOOPF3 LOOPF2 LOOPF1 within code itself not used as macro LOOPF)
950 //
951 // Used LOOPORDER to control how each dimension was ordered in loops. Nice, but didn't figure out how to macrofy each triple block separated by commas.
952 
953 
954 // 5) Things not to change:
955 //
956 // A) array[i][j] or array[j][k] if related to non-positional arrays like metric
957 // B) 1darray[i] if related to radius, like dissipatin or luminosity profiles [so only convert mutli-D arrays, not "radial" like 1D arrays
958 
959 // To help ensure correct full conversion, renamed all multi-D arrays to a_<originalname> and pointers to a_s_<originalname> using macros
960 // So all original multi-D arrays will be undefined unless converted.
961 
962 
963 // 6) Compare with previous code for non macrofied parts:
964 // grep --invert-match -e "MAC" diffglobal.txt | grep --invert-match -e "STORE" | grep -e "^\!" | less
965 
966 
967 
968 // Final tagexcludelist.txt after working on things:
969 //
970 //jon_interp.c
971 //jon_interp_computepreprocess.c
972 //jon_interp_filter.c
973 //jon_interp_interpolationitself.c
974 //bin2txt.c
975 //smcalc.c
976 //global.h
977 //defs.h
978 //defs.general.h
979 //mpidefs.h
980 //mpi_set_arrays.c
981 //supermpidefs.h
982 //nrutil2.c
983 //tensor.c
984 //global.storage.h
985 //global.grmhd.h
986 //superdefs.h
987 //superdecs.h
988 //superdefs.pointers.h
989 //superdecs.pointers.h
990 //kazfulleos.superdefs.h
991 //set_arrays_multidimen.c
992 //kazfulleos_set_arrays.c
993 //liaison_set_arrays.c
994 //superdefs.liaison.h
995 //reconstructeno_set_arrays.c
996 //reconstructeno.superdefs.h
997 //boundmpi.c
998 //boundmpiint.c
999 //mpi_init.c
1000 //kazfulleos.c
1001 //bounds.c
1002 //bounds.ff.c
1003 //bounds.fishmon.c
1004 //boundsflux.c
1005 //bounds.grb.c
1006 //boundsint.c
1007 //bounds.ns.c
1008 //bounds.nsold.c
1009 //bounds.ns.backup.c
1010 //bounds.ns.backup2.c
1011 //bounds.rebecca.c
1012 //bounds.sasha.c
1013 //bounds.tools.c
1014 //diag.c
1015 //dump_ener.c
1016 //fixup.c
1017 //fluxctstag.c
1018 //flux.mergedc2ea2cmethod.c
1019 //flux.c
1020 //initbase.boundloop.c
1021 //initbase.enerregions.c
1022 //init.sasha.c
1023 //init.ns.c
1024 //init.ns.backup.c
1025 //init.ns.backup2.c
1026 //init.grb.c
1027 //init.ff.c
1028 //initbase.gridsectioning.c
1029 //initbase.c
1030 //higherorder_pointavg.c
1031 //interpline.c
1032 //interpline.mono.c [nothing]
1033 //interpline.para.c [nothing]
1034 //metric.c
1035 //metric_selfgravity_or_evolvemetric.c
1036 //mpi_fileio.c
1037 //phys.ffde.c
1038 //reconstructeno.c
1039 //reconstructeno.weightmin.c
1040 //restart.c
1041 //restart.checks.c
1042 //utoprimgen.c
1043 //global.loops.boundaries.h
1044 //global.variousmacros.h
1045 //reconstructeno_static.h
1046 //reconstructeno.debug.c
1047 //restart.rebeccaoldcode.c
1048 //