HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
Macros
global.storage.h File Reference

macros and definitions related to storage mapping functions More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define N1M   (N1+N1BND*2)
 Define N1M, N2M, N3M and other spatial storage related items. More...
 
#define N2M   (N2+N2BND*2)
 
#define N3M   (N3+N3BND*2)
 
#define NBIG1M   ((N1M>N2M) ? N1M : N2M)
 NBIGM is bigger of N1M and N2M and N3M not currently used. More...
 
#define NBIGM   ((NBIG1M>N3M) ? NBIG1M : N3M)
 
#define MAXSURFA1   (N2M*N3M*N1NOT1)
 surface areas of sides WITH boundary zones reduces to 0 if that dimension not used More...
 
#define MAXSURFA2   (N1M*N3M*N2NOT1)
 
#define MAXSURFA3   (N1M*N2M*N3NOT1)
 
#define NBIGS1M   ((MAXSURFA1>MAXSURFA2) ? MAXSURFA1 : MAXSURFA2)
 maximal surface of boundary exchange notice that this works in any number of dimensions and any N1,N2,N3 that is, it reduces correctly when a dimension is degenerate (N=1) More...
 
#define NBIGSM   ((NBIGS1M>MAXSURFA3) ? NBIGS1M : MAXSURFA3)
 
#define OPENMP3DLOOPBLOCK2IJKSTORAGE0(i, j, k)
 ORDERSTORAGE : N1M=NSTORE?, N2M=NSTORE?, N3M=NSTORE? 0 : 1 2 3 // standard (original) order 1 : 2 3 1 2 : 3 1 2 3 : 1 3 2 4 : 2 1 3 5 : 3 2 1. More...
 
#define OPENMP3DLOOPBLOCK2IJKSTORAGE1(i, j, k)
 
#define OPENMP3DLOOPBLOCK2IJKSTORAGE2(i, j, k)
 
#define OPENMP3DLOOPBLOCK2IJKSTORAGE3(i, j, k)
 
#define OPENMP3DLOOPBLOCK2IJKSTORAGE4(i, j, k)
 
#define OPENMP3DLOOPBLOCK2IJKSTORAGE5(i, j, k)
 
#define NSTORE1   N1M
 123 More...
 
#define NSTORE2   N2M
 
#define NSTORE3   N3M
 
#define NSTOREBND1   N1BND
 
#define NSTOREBND2   N2BND
 
#define NSTOREBND3   N3BND
 
#define SHIFTSTORE1   SHIFT1
 
#define SHIFTSTORE2   SHIFT2
 
#define SHIFTSTORE3   SHIFT3
 
#define LOOPORDER1(i, j, k)   i
 
#define LOOPORDER2(i, j, k)   j
 
#define LOOPORDER3(i, j, k)   k
 
#define STO1(i, j, k)   (i)
 
#define STO2(i, j, k)   (j)
 
#define STO3(i, j, k)   (k)
 
#define DEFDIM1(i, j, k)   (i)
 
#define DEFDIM2(i, j, k)   (j)
 
#define DEFDIM3(i, j, k)   (k)
 
#define STOMET1(i, j, k)   (0)
 
#define STOMET2(i, j, k)   (0)
 
#define STOMET3(i, j, k)   (0)
 
#define DEFDIMMET1(i, j, k)   (1)
 
#define DEFDIMMET2(i, j, k)   (1)
 
#define DEFDIMMET3(i, j, k)   (1)
 
#define OPENMP3DLOOPBLOCK2IJK(i, j, k)   OPENMP3DLOOPBLOCK2IJKSTORAGE0(i,j,k)
 
#define GENPOINT(prefix, name)   prefix##name
 below doesn't work since #define can't refer to other #'s define OPENMPLOOPGEN(is,ie,js,je,ks,ke,VARPRIVATE,EXTRAFOR) OPENMP3DLOOPVARSDEFINE; OPENMP3DLOOPSETUP(is,ie,js,je,ks,ke); \ pragma omp parallel private(VARPRIVATE) OPENMPGLOBALPRIVATEFULL \ { \ pragma omp for schedule(OPENMPSCHEDULE,OPENMPCHUNKSIZE(blocksize)) EXTRAFOR \ OPENMP3DLOOPBLOCK{ \ OPENMP3DLOPBLOCK2IJK(i,j,k); More...
 
#define GENMAC(prefix, name, i, j, k)   prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]
 
#define GENMACP0A0(prefix, name, i, j, k)   GENMAC(prefix,name,i,j,k)
 
#define GENMACP1A0(prefix, name, argp1, i, j, k)   prefix##name[argp1][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]
 
#define GENMACP0A1(prefix, name, i, j, k, arga1)   prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1]
 
#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)]
 
#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]
 
#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]
 
#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)]
 
#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]
 
#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]
 
#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]
 
#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)]
 
#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]
 
#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]
 
#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]
 
#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]
 
#define BASEPOINT(name)   GENPOINT(a_,name)
 BASE (a_) wrappers // actual declarations for 3D memory arrays set in superdefs.h. More...
 
#define BASEMAC(name, i, j, k)   GENMAC(a_,name,i,j,k)
 
#define BASEMACP0A0(name, i, j, k)   GENMACP0A0(a_,name,i,j,k)
 
#define BASEMACP1A0(name, argp1, i, j, k)   GENMACP1A0(a_,name,argp1,i,j,k)
 
#define BASEMACP0A1(name, i, j, k, arga1)   GENMACP0A1(a_,name,i,j,k,arga1)
 
#define BASEMACP2A0(name, argp1, argp2, i, j, k)   GENMACP2A0(a_,name,argp1,argp2,i,j,k)
 
#define BASEMACP1A1(name, argp1, i, j, k, arga1)   GENMACP1A1(a_,name,argp1,i,j,k,arga1)
 
#define BASEMACP0A2(name, i, j, k, arga1, arga2)   GENMACP0A2(a_,name,i,j,k,arga1,arga2)
 
#define BASEMACP3A0(name, argp1, argp2, argp3, i, j, k)   GENMACP3A0(a_,name,argp1,argp2,argp3,i,j,k)
 
#define BASEMACP2A1(name, argp1, argp2, i, j, k, arga1)   GENMACP2A1(a_,name,argp1,argp2,i,j,k,arga1)
 
#define BASEMACP1A2(name, argp1, i, j, k, arga1, arga2)   GENMACP1A2(a_,name,argp1,i,j,k,arga1,arga2)
 
#define BASEMACP0A3(name, i, j, k, arga1, arga2, arga3)   GENMACP0A3(a_,name,i,j,k,arga1,arga2,arga3)
 
#define BASEMACP4A0(name, argp1, argp2, argp3, argp4, i, j, k)   GENMACP4A0(a_,name,argp1,argp2,argp3,argp4,i,j,k)
 
#define BASEMACP3A1(name, argp1, argp2, argp3, i, j, k, arga1)   GENMACP3A1(a_,name,argp1,argp2,argp3,i,j,k,arga1)
 
#define BASEMACP2A2(name, argp1, argp2, i, j, k, arga1, arga2)   GENMACP2A2(a_,name,argp1,argp2,i,j,k,arga1,arga2)
 
#define BASEMACP1A3(name, argp1, i, j, k, arga1, arga2, arga3)   GENMACP1A3(a_,name,argp1,i,j,k,arga1,arga2,arga3)
 
#define BASEMACP0A4(name, i, j, k, arga1, arga2, arga3, arga4)   GENMACP0A4(a_,name,i,j,k,arga1,arga2,arga3,arga4)
 
#define GLOBALPOINT(name)   GENPOINT(a_s_,name)
 shifted pointer (a_s_) wrappers Couldn't figure out how to macrofy a_s_ or a_, so when changing have to change all manually If want no header on global array, then just leave as (,name,...) instead of (a_s_,name,...) More...
 
#define GLOBALMAC(name, i, j, k)   GENMAC(a_s_,name,i,j,k)
 
#define GLOBALMACP0A0(name, i, j, k)   GENMACP0A0(a_s_,name,i,j,k)
 
#define GLOBALMACP2A0(name, argp1, argp2, i, j, k)   GENMACP2A0(a_s_,name,argp1,argp2,i,j,k)
 
#define GLOBALMACP1A1(name, argp1, i, j, k, arga1)   GENMACP1A1(a_s_,name,argp1,i,j,k,arga1)
 
#define GLOBALMACP0A2(name, i, j, k, arga1, arga2)   GENMACP0A2(a_s_,name,i,j,k,arga1,arga2)
 
#define GLOBALMACP3A0(name, argp1, argp2, argp3, i, j, k)   GENMACP3A0(a_s_,name,argp1,argp2,argp3,i,j,k)
 
#define GLOBALMACP2A1(name, argp1, argp2, i, j, k, arga1)   GENMACP2A1(a_s_,name,argp1,argp2,i,j,k,arga1)
 
#define GLOBALMACP1A2(name, argp1, i, j, k, arga1, arga2)   GENMACP1A2(a_s_,name,argp1,i,j,k,arga1,arga2)
 
#define GLOBALMACP0A3(name, i, j, k, arga1, arga2, arga3)   GENMACP0A3(a_s_,name,i,j,k,arga1,arga2,arga3)
 
#define GLOBALMACP4A0(name, argp1, argp2, argp3, argp4, i, j, k)   GENMACP4A0(a_s_,name,argp1,argp2,argp3,argp4,i,j,k)
 
#define GLOBALMACP3A1(name, argp1, argp2, argp3, i, j, k, arga1)   GENMACP3A1(a_s_,name,argp1,argp2,argp3,i,j,k,arga1)
 
#define GLOBALMACP2A2(name, argp1, argp2, i, j, k, arga1, arga2)   GENMACP2A2(a_s_,name,argp1,argp2,i,j,k,arga1,arga2)
 
#define GLOBALMACP1A3(name, argp1, i, j, k, arga1, arga2, arga3)   GENMACP1A3(a_s_,name,argp1,i,j,k,arga1,arga2,arga3)
 
#define GLOBALMACP0A4(name, i, j, k, arga1, arga2, arga3, arga4)   GENMACP0A4(a_s_,name,i,j,k,arga1,arga2,arga3,arga4)
 
#define POINT(name)   GENPOINT(,name)
 Access to any non-global pointer (not a_s_): note that ok to have nothing as prefix, but macro using prefix##name assumes prefix is defined even inputted as nothing. More...
 
#define MAC(name, i, j, k)   GENMAC(,name,i,j,k)
 
#define MACP0A0(name, i, j, k)   GENMACP0A0(,name,i,j,k)
 
#define MACP1A0(name, argp1, i, j, k)   GENMACP1A0(,name,argp1,i,j,k)
 
#define MACP0A1(name, i, j, k, arga1)   GENMACP0A1(,name,i,j,k,arga1)
 
#define MACP2A0(name, argp1, argp2, i, j, k)   GENMACP2A0(,name,argp1,argp2,i,j,k)
 
#define MACP1A1(name, argp1, i, j, k, arga1)   GENMACP1A1(,name,argp1,i,j,k,arga1)
 
#define MACP0A2(name, i, j, k, arga1, arga2)   GENMACP0A2(,name,i,j,k,arga1,arga2)
 
#define MACP3A0(name, argp1, argp2, argp3, i, j, k)   GENMACP3A0(,name,argp1,argp2,argp3,i,j,k)
 
#define MACP2A1(name, argp1, argp2, i, j, k, arga1)   GENMACP2A1(,name,argp1,argp2,i,j,k,arga1)
 
#define MACP1A2(name, argp1, i, j, k, arga1, arga2)   GENMACP1A2(,name,argp1,i,j,k,arga1,arga2)
 
#define MACP0A3(name, i, j, k, arga1, arga2, arga3)   GENMACP0A3(,name,i,j,k,arga1,arga2,arga3)
 
#define MACP4A0(name, argp1, argp2, argp3, argp4, i, j, k)   GENMACP4A0(,name,argp1,argp2,argp3,argp4,i,j,k)
 
#define MACP3A1(name, argp1, argp2, argp3, i, j, k, arga1)   GENMACP3A1(,name,argp1,argp2,argp3,i,j,k,arga1)
 
#define MACP2A2(name, argp1, argp2, i, j, k, arga1, arga2)   GENMACP2A2(,name,argp1,argp2,i,j,k,arga1,arga2)
 
#define MACP1A3(name, argp1, i, j, k, arga1, arga2, arga3)   GENMACP1A3(,name,argp1,i,j,k,arga1,arga2,arga3)
 
#define MACP0A4(name, i, j, k, arga1, arga2, arga3, arga4)   GENMACP0A4(,name,i,j,k,arga1,arga2,arga3,arga4)
 
#define PTRMAC(name, i, j, k)   (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 pointer shift header wrappers Originally just did, e.g., GLOBALPOINT(pglobal) = (FTYPE (*)[N2M][N3M][NPR]) (&(BASEPOINT(pglobal)[NSTOREBND1][NSTOREBND2][NSTOREBND3][0])); But this exposes the internal storage, so avoid, and easy to avoid Below is same structurly as above, but with name and the first index removed from resulting macro expansion, since that's how pointers are referenced in (e.g.) set_arrays_multidimen.c Force user to input name and all dimensions to structurly consistent with other related macros PTRMAC used for both shifting pointers and defining pointers (with different indicies) Note that we must use DEFDIM1,2,3 since different than STO in behavior when no CARTMINKMETRIC. More...
 
#define PTRMACP0A0(name, i, j, k)   PTRMAC(name,i,j,k)
 
#define PTRMACP1A0(name, argp1, i, j, k)   (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 
#define PTRMACP0A1(name, i, j, k, arga1)   (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
 
#define PTRMACP2A0(name, argp1, argp2, i, j, k)   (*)[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 
#define PTRMACP1A1(name, argp1, i, j, k, arga1)   (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
 
#define PTRMACP0A2(name, i, j, k, arga1, arga2)   (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
 
#define PTRMACP3A0(name, argp1, argp2, argp3, i, j, k)   (*)[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 
#define PTRMACP2A1(name, argp1, argp2, i, j, k, arga1)   (*)[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
 
#define PTRMACP1A2(name, argp1, i, j, k, arga1, arga2)   (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
 
#define PTRMACP0A3(name, i, j, k, arga1, arga2, arga3)   (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
 
#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)]
 
#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]
 
#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]
 
#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]
 
#define PTRMACP0A4(name, i, j, k, arga1, arga2, arga3, arga4)   (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]
 
#define PTRDEFGLOBALMAC(name, i, j, k)   (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 Define pointers to multi-dimen arrays for global variables (used in superdefs.pointers.h) More...
 
#define PTRDEFGLOBALMACP0A0(name, i, j, k)   PTRDEFGLOBALMAC(name,i,j,k)
 
#define PTRDEFGLOBALMACP1A0(name, argp1, i, j, k)   (*GLOBALPOINT(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 
#define PTRDEFGLOBALMACP0A1(name, i, j, k, arga1)   (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
 
#define PTRDEFGLOBALMACP2A0(name, argp1, argp2, i, j, k)   (*GLOBALPOINT(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 
#define PTRDEFGLOBALMACP1A1(name, argp1, i, j, k, arga1)   (*GLOBALPOINT(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
 
#define PTRDEFGLOBALMACP0A2(name, i, j, k, arga1, arga2)   (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
 
#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)]
 
#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]
 
#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]
 
#define PTRDEFGLOBALMACP0A3(name, i, j, k, arga1, arga2, arga3)   (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
 
#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)]
 
#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]
 
#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]
 
#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]
 
#define PTRDEFGLOBALMACP0A4(name, i, j, k, arga1, arga2, arga3, arga4)   (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]
 
#define PURENAME(name)   GENPOINT(,name)
 Define pointers to multi-dimen arrays for non-global arrays (used in all other places except superdefs.pointers.h) More...
 
#define PTRDEFMAC(name, i, j, k)   (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 
#define PTRDEFMACP0A0(name, i, j, k)   PTRDEFMAC(name,i,j,k)
 
#define PTRDEFMACP1A0(name, argp1, i, j, k)   (*PURENAME(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 
#define PTRDEFMACP0A1(name, i, j, k, arga1)   (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
 
#define PTRDEFMACP2A0(name, argp1, argp2, i, j, k)   (*PURENAME(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]
 
#define PTRDEFMACP1A1(name, argp1, i, j, k, arga1)   (*PURENAME(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]
 
#define PTRDEFMACP0A2(name, i, j, k, arga1, arga2)   (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]
 
#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)]
 
#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]
 
#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]
 
#define PTRDEFMACP0A3(name, i, j, k, arga1, arga2, arga3)   (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]
 
#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)]
 
#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]
 
#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]
 
#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]
 
#define PTRDEFMACP0A4(name, i, j, k, arga1, arga2, arga3, arga4)   (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]
 
#define GENMETMAC(prefix, name, i, j, k)   prefix##name[STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)]
 METRIC VERSIONS (only written down if required): More...
 
#define GLOBALMETMAC(name, i, j, k)   GENMETMAC(a_s_,name,i,j,k)
 
#define METMAC(name, i, j, k)   GENMETMAC(,name,i,j,k)
 
#define PTRMETMAC(name, i, j, k)   (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#define PTRDEFGLOBALMETMAC(name, i, j, k)   (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#define PTRDEFMETMAC(name, i, j, k)   (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#define GENMETMACP0A1(prefix, name, i, j, k, arga1)   prefix##name[STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)][arga1]
 
#define GLOBALMETMACP0A1(name, i, j, k, arga1)   GENMETMACP0A1(a_s_,name,i,j,k,arga1)
 
#define METMACP0A1(name, i, j, k, arga1)   GENMETMACP0A1(,name,i,j,k,arga1)
 
#define PTRMETMACP0A1(name, i, j, k, arga1)   (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
 
#define PTRDEFGLOBALMETMACP0A1(name, i, j, k, arga1)   (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
 
#define PTRDEFMETMACP0A1(name, i, j, k, arga1)   (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
 
#define GENMETMACP1A0(prefix, name, argp1, i, j, k)   prefix##name[argp1][STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)]
 
#define GLOBALMETMACP1A0(name, argp1, i, j, k)   GENMETMACP1A0(a_s_,name,argp1,i,j,k)
 
#define METMACP1A0(name, argp1, i, j, k)   GENMETMACP1A0(,name,argp1,i,j,k)
 
#define PTRMETMACP1A0(name, argp1, i, j, k)   (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#define PTRDEFGLOBALMETMACP1A0(name, argp1, i, j, k)   (*GLOBALPOINT(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#define PTRDEFMETMACP1A0(name, argp1, i, j, k)   (*PURENAME(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#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]
 
#define GLOBALMETMACP1A1(name, argp1, i, j, k, arga1)   GENMETMACP1A1(a_s_,name,argp1,i,j,k,arga1)
 
#define METMACP1A1(name, argp1, i, j, k, arga1)   GENMETMACP1A1(,name,argp1,i,j,k,arga1)
 
#define PTRMETMACP1A1(name, argp1, i, j, k, arga1)   (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
 
#define PTRDEFGLOBALMETMACP1A1(name, argp1, i, j, k, arga1)   (*GLOBALPOINT(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
 
#define PTRDEFMETMACP1A1(name, argp1, i, j, k, arga1)   (*PURENAME(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]
 
#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]
 
#define GLOBALMETMACP1A2(name, argp1, i, j, k, arga1, arga2)   GENMETMACP1A2(a_s_,name,argp1,i,j,k,arga1,arga2)
 
#define METMACP1A2(name, argp1, i, j, k, arga1, arga2)   GENMETMACP1A2(,name,argp1,i,j,k,arga1,arga2)
 
#define PTRMETMACP1A2(name, argp1, i, j, k, arga1, arga2)   (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2]
 
#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]
 
#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]
 
#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)]
 P2A0. More...
 
#define GLOBALMETMACP2A0(name, argp1, argp2, i, j, k)   GENMETMACP2A0(a_s_,name,argp1,argp2,i,j,k)
 
#define METMACP2A0(name, argp1, argp2, i, j, k)   GENMETMACP2A0(,name,argp1,argp2,i,j,k)
 
#define PTRMETMACP2A0(name, argp1, argp2, i, j, k)   (*)[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#define PTRDEFGLOBALMETMACP2A0(name, argp1, argp2, i, j, k)   (*GLOBALPOINT(name))[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#define PTRDEFMETMACP2A0(name, argp1, argp2, i, j, k)   (*PURENAME(name))[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]
 
#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]
 P2A2. More...
 
#define GLOBALMETMACP2A2(name, argp1, argp2, i, j, k, arga1, arga2)   GENMETMACP2A2(a_s_,name,argp1,argp2,i,j,k,arga1,arga2)
 
#define METMACP2A2(name, argp1, argp2, i, j, k, arga1, arga2)   GENMETMACP2A2(,name,argp1,argp2,i,j,k,arga1,arga2)
 
#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]
 
#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]
 
#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]
 
#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]
 
#define GLOBALMETMACP0A3(name, i, j, k, arga1, arga2, arga3)   GENMETMACP0A3(a_s_,name,i,j,k,arga1,arga2,arga3)
 
#define METMACP0A3(name, i, j, k, arga1, arga2, arga3)   GENMETMACP0A3(,name,i,j,k,arga1,arga2,arga3)
 
#define PTRMETMACP0A3(name, i, j, k, arga1, arga2, arga3)   (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]
 
#define PTRDEFGLOBALMETMACP0A3(name, i, j, k, arga1, arga2, arga3)   (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]
 
#define PTRDEFMETMACP0A3(name, i, j, k, arga1, arga2, arga3)   (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]
 

Detailed Description

macros and definitions related to storage mapping functions

////////////

Macrofication of storage for multi-dimensional arrays:

SUPERNOTE: To use old codes (e.g. inits) with this code, either convert them OR set ORDERSTORAGE==0 in definit.h and then the code is just like original in behavior even with macrofication.

This file contains the macrofication of storage accesses and definitions for multi-dimensional arrays That is, definition a[N1M][N2M][N3M] with access a[i][j][k] with code association r(i) theta(j) phi(k) restricts L1,L2 cache lines to along k-direction. Code assoation (e.g.) r(i) is well-defined through-out code and changes would entail changing user notions and code associations between dir==1 and i. Instead, macrofy only how storage arrays are defined and accessed so the user always puts in a(i,j,k), but the user can choose which index is fastest.

Anything that has to do with storing or accessing specific directions of spatial memory in multi-dimensional storage arrays should be here and considered here. That is: a[?][?][?] accesses or allocation: FTYPE a[?][?][?] or pointer definitions for those arrays: b=&(a[?][?][?])

SUPEROPTMARK: Clearly the best way to optimize for multi-core is to do ALL calculations for a single cell at once without ever storing anything. Then, one just starts with p at (say) +-MAXBND cells and fully determines new p. There will be MANY repeated calculations, but when memory is a bottleneck that's the way to go. Then use OpenMP or pthreads to parallelize over each position. Then only memory grabbing is p in multi-D and other very expensive things like the metric that would likely be too expensive to recompute for each index for p.

See kazfulleos.global.h for some non-spatial array macros for general EOS

Definition in file global.storage.h.

Macro Definition Documentation

#define BASEMAC (   name,
  i,
  j,
 
)    GENMAC(a_,name,i,j,k)

Definition at line 423 of file global.storage.h.

#define BASEMACP0A0 (   name,
  i,
  j,
 
)    GENMACP0A0(a_,name,i,j,k)

Definition at line 424 of file global.storage.h.

#define BASEMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    GENMACP0A1(a_,name,i,j,k,arga1)

Definition at line 427 of file global.storage.h.

#define BASEMACP0A2 (   name,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP0A2(a_,name,i,j,k,arga1,arga2)

Definition at line 431 of file global.storage.h.

#define BASEMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    GENMACP0A3(a_,name,i,j,k,arga1,arga2,arga3)

Definition at line 436 of file global.storage.h.

#define BASEMACP0A4 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3,
  arga4 
)    GENMACP0A4(a_,name,i,j,k,arga1,arga2,arga3,arga4)

Definition at line 442 of file global.storage.h.

#define BASEMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    GENMACP1A0(a_,name,argp1,i,j,k)

Definition at line 426 of file global.storage.h.

#define BASEMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    GENMACP1A1(a_,name,argp1,i,j,k,arga1)

Definition at line 430 of file global.storage.h.

#define BASEMACP1A2 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP1A2(a_,name,argp1,i,j,k,arga1,arga2)

Definition at line 435 of file global.storage.h.

#define BASEMACP1A3 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    GENMACP1A3(a_,name,argp1,i,j,k,arga1,arga2,arga3)

Definition at line 441 of file global.storage.h.

#define BASEMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    GENMACP2A0(a_,name,argp1,argp2,i,j,k)

Definition at line 429 of file global.storage.h.

#define BASEMACP2A1 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1 
)    GENMACP2A1(a_,name,argp1,argp2,i,j,k,arga1)

Definition at line 434 of file global.storage.h.

#define BASEMACP2A2 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP2A2(a_,name,argp1,argp2,i,j,k,arga1,arga2)

Definition at line 440 of file global.storage.h.

#define BASEMACP3A0 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
 
)    GENMACP3A0(a_,name,argp1,argp2,argp3,i,j,k)

Definition at line 433 of file global.storage.h.

#define BASEMACP3A1 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
  k,
  arga1 
)    GENMACP3A1(a_,name,argp1,argp2,argp3,i,j,k,arga1)

Definition at line 439 of file global.storage.h.

#define BASEMACP4A0 (   name,
  argp1,
  argp2,
  argp3,
  argp4,
  i,
  j,
 
)    GENMACP4A0(a_,name,argp1,argp2,argp3,argp4,i,j,k)

Definition at line 438 of file global.storage.h.

#define BASEPOINT (   name)    GENPOINT(a_,name)

BASE (a_) wrappers // actual declarations for 3D memory arrays set in superdefs.h.

Definition at line 422 of file global.storage.h.

#define DEFDIM1 (   i,
  j,
 
)    (i)

Definition at line 137 of file global.storage.h.

#define DEFDIM2 (   i,
  j,
 
)    (j)

Definition at line 138 of file global.storage.h.

#define DEFDIM3 (   i,
  j,
 
)    (k)

Definition at line 139 of file global.storage.h.

#define DEFDIMMET1 (   i,
  j,
 
)    (1)

Definition at line 152 of file global.storage.h.

#define DEFDIMMET2 (   i,
  j,
 
)    (1)

Definition at line 153 of file global.storage.h.

#define DEFDIMMET3 (   i,
  j,
 
)    (1)

Definition at line 154 of file global.storage.h.

#define GENMAC (   prefix,
  name,
  i,
  j,
 
)    prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]

Definition at line 398 of file global.storage.h.

#define GENMACP0A0 (   prefix,
  name,
  i,
  j,
 
)    GENMAC(prefix,name,i,j,k)

Definition at line 399 of file global.storage.h.

#define GENMACP0A1 (   prefix,
  name,
  i,
  j,
  k,
  arga1 
)    prefix##name[STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)][arga1]

Definition at line 402 of file global.storage.h.

#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]

Definition at line 406 of file global.storage.h.

#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]

Definition at line 411 of file global.storage.h.

#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]

Definition at line 417 of file global.storage.h.

#define GENMACP1A0 (   prefix,
  name,
  argp1,
  i,
  j,
 
)    prefix##name[argp1][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]

Definition at line 401 of file global.storage.h.

#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]

Definition at line 405 of file global.storage.h.

#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]

Definition at line 410 of file global.storage.h.

#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]

Definition at line 416 of file global.storage.h.

#define GENMACP2A0 (   prefix,
  name,
  argp1,
  argp2,
  i,
  j,
 
)    prefix##name[argp1][argp2][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]

Definition at line 404 of file global.storage.h.

#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]

Definition at line 409 of file global.storage.h.

#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]

Definition at line 415 of file global.storage.h.

#define GENMACP3A0 (   prefix,
  name,
  argp1,
  argp2,
  argp3,
  i,
  j,
 
)    prefix##name[argp1][argp2][argp3][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]

Definition at line 408 of file global.storage.h.

#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]

Definition at line 414 of file global.storage.h.

#define GENMACP4A0 (   prefix,
  name,
  argp1,
  argp2,
  argp3,
  argp4,
  i,
  j,
 
)    prefix##name[argp1][argp2][argp3][argp4][STO1(i,j,k)][STO2(i,j,k)][STO3(i,j,k)]

Definition at line 413 of file global.storage.h.

#define GENMETMAC (   prefix,
  name,
  i,
  j,
 
)    prefix##name[STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)]

METRIC VERSIONS (only written down if required):

Definition at line 580 of file global.storage.h.

#define GENMETMACP0A1 (   prefix,
  name,
  i,
  j,
  k,
  arga1 
)    prefix##name[STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)][arga1]

Definition at line 588 of file global.storage.h.

#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]

Definition at line 638 of file global.storage.h.

#define GENMETMACP1A0 (   prefix,
  name,
  argp1,
  i,
  j,
 
)    prefix##name[argp1][STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)]

Definition at line 596 of file global.storage.h.

#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]

Definition at line 604 of file global.storage.h.

#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]

Definition at line 612 of file global.storage.h.

#define GENMETMACP2A0 (   prefix,
  name,
  argp1,
  argp2,
  i,
  j,
 
)    prefix##name[argp1][argp2][STOMET1(i,j,k)][STOMET2(i,j,k)][STOMET3(i,j,k)]

P2A0.

Definition at line 621 of file global.storage.h.

#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]

P2A2.

Definition at line 630 of file global.storage.h.

#define GENPOINT (   prefix,
  name 
)    prefix##name

below doesn't work since #define can't refer to other #'s define OPENMPLOOPGEN(is,ie,js,je,ks,ke,VARPRIVATE,EXTRAFOR) OPENMP3DLOOPVARSDEFINE; OPENMP3DLOOPSETUP(is,ie,js,je,ks,ke); \ pragma omp parallel private(VARPRIVATE) OPENMPGLOBALPRIVATEFULL \ { \ pragma omp for schedule(OPENMPSCHEDULE,OPENMPCHUNKSIZE(blocksize)) EXTRAFOR \ OPENMP3DLOOPBLOCK{ \ OPENMP3DLOPBLOCK2IJK(i,j,k);

Seems I caught everything, but not tested. if(MCOORD==CARTMINKMETRIC) error Not setup yet for CARTMINKMETRIC, need to define macros below for metric accesses so uses MET versions of above so correct access (i.e. i=j=k=0 for metric type stuff). Then ensure those vars (global or not) are everywhere accessed and defined with such macros, including their pointers endif

Define Macros for dealing with global spatial pointersSee docs regarding # and ## use in C macros as processed by preprocessor: http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html#Concatenation Didn't see how to macrofy a_ and a_s_ so they aren't repeated, but not a big deal since still those defined only here MACP?A? corresponds to P? number of prior array indices and A? to number of after indices generic macros for a_ or a_s_ prefixes corresponding, respectively, to base or shifted pointers

Definition at line 397 of file global.storage.h.

#define GLOBALMAC (   name,
  i,
  j,
 
)    GENMAC(a_s_,name,i,j,k)

Definition at line 450 of file global.storage.h.

#define GLOBALMACP0A0 (   name,
  i,
  j,
 
)    GENMACP0A0(a_s_,name,i,j,k)

Definition at line 451 of file global.storage.h.

#define GLOBALMACP0A2 (   name,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP0A2(a_s_,name,i,j,k,arga1,arga2)

Definition at line 458 of file global.storage.h.

#define GLOBALMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    GENMACP0A3(a_s_,name,i,j,k,arga1,arga2,arga3)

Definition at line 463 of file global.storage.h.

#define GLOBALMACP0A4 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3,
  arga4 
)    GENMACP0A4(a_s_,name,i,j,k,arga1,arga2,arga3,arga4)

Definition at line 469 of file global.storage.h.

#define GLOBALMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    GENMACP1A1(a_s_,name,argp1,i,j,k,arga1)

Definition at line 457 of file global.storage.h.

#define GLOBALMACP1A2 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP1A2(a_s_,name,argp1,i,j,k,arga1,arga2)

Definition at line 462 of file global.storage.h.

#define GLOBALMACP1A3 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    GENMACP1A3(a_s_,name,argp1,i,j,k,arga1,arga2,arga3)

Definition at line 468 of file global.storage.h.

#define GLOBALMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    GENMACP2A0(a_s_,name,argp1,argp2,i,j,k)

Definition at line 456 of file global.storage.h.

#define GLOBALMACP2A1 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1 
)    GENMACP2A1(a_s_,name,argp1,argp2,i,j,k,arga1)

Definition at line 461 of file global.storage.h.

#define GLOBALMACP2A2 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP2A2(a_s_,name,argp1,argp2,i,j,k,arga1,arga2)

Definition at line 467 of file global.storage.h.

#define GLOBALMACP3A0 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
 
)    GENMACP3A0(a_s_,name,argp1,argp2,argp3,i,j,k)

Definition at line 460 of file global.storage.h.

#define GLOBALMACP3A1 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
  k,
  arga1 
)    GENMACP3A1(a_s_,name,argp1,argp2,argp3,i,j,k,arga1)

Definition at line 466 of file global.storage.h.

#define GLOBALMACP4A0 (   name,
  argp1,
  argp2,
  argp3,
  argp4,
  i,
  j,
 
)    GENMACP4A0(a_s_,name,argp1,argp2,argp3,argp4,i,j,k)

Definition at line 465 of file global.storage.h.

#define GLOBALMETMAC (   name,
  i,
  j,
 
)    GENMETMAC(a_s_,name,i,j,k)

Definition at line 582 of file global.storage.h.

#define GLOBALMETMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    GENMETMACP0A1(a_s_,name,i,j,k,arga1)

Definition at line 590 of file global.storage.h.

#define GLOBALMETMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    GENMETMACP0A3(a_s_,name,i,j,k,arga1,arga2,arga3)

Definition at line 640 of file global.storage.h.

#define GLOBALMETMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    GENMETMACP1A0(a_s_,name,argp1,i,j,k)

Definition at line 598 of file global.storage.h.

#define GLOBALMETMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    GENMETMACP1A1(a_s_,name,argp1,i,j,k,arga1)

Definition at line 606 of file global.storage.h.

#define GLOBALMETMACP1A2 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMETMACP1A2(a_s_,name,argp1,i,j,k,arga1,arga2)

Definition at line 614 of file global.storage.h.

#define GLOBALMETMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    GENMETMACP2A0(a_s_,name,argp1,argp2,i,j,k)

Definition at line 623 of file global.storage.h.

#define GLOBALMETMACP2A2 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMETMACP2A2(a_s_,name,argp1,argp2,i,j,k,arga1,arga2)

Definition at line 632 of file global.storage.h.

#define GLOBALPOINT (   name)    GENPOINT(a_s_,name)

shifted pointer (a_s_) wrappers Couldn't figure out how to macrofy a_s_ or a_, so when changing have to change all manually If want no header on global array, then just leave as (,name,...) instead of (a_s_,name,...)

Definition at line 449 of file global.storage.h.

#define LOOPORDER1 (   i,
  j,
 
)    i

Definition at line 130 of file global.storage.h.

#define LOOPORDER2 (   i,
  j,
 
)    j

Definition at line 131 of file global.storage.h.

#define LOOPORDER3 (   i,
  j,
 
)    k

Definition at line 132 of file global.storage.h.

#define MAC (   name,
  i,
  j,
 
)    GENMAC(,name,i,j,k)

Definition at line 475 of file global.storage.h.

#define MACP0A0 (   name,
  i,
  j,
 
)    GENMACP0A0(,name,i,j,k)

Definition at line 476 of file global.storage.h.

#define MACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    GENMACP0A1(,name,i,j,k,arga1)

Definition at line 479 of file global.storage.h.

#define MACP0A2 (   name,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP0A2(,name,i,j,k,arga1,arga2)

Definition at line 483 of file global.storage.h.

#define MACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    GENMACP0A3(,name,i,j,k,arga1,arga2,arga3)

Definition at line 488 of file global.storage.h.

#define MACP0A4 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3,
  arga4 
)    GENMACP0A4(,name,i,j,k,arga1,arga2,arga3,arga4)

Definition at line 494 of file global.storage.h.

#define MACP1A0 (   name,
  argp1,
  i,
  j,
 
)    GENMACP1A0(,name,argp1,i,j,k)

Definition at line 478 of file global.storage.h.

#define MACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    GENMACP1A1(,name,argp1,i,j,k,arga1)

Definition at line 482 of file global.storage.h.

#define MACP1A2 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP1A2(,name,argp1,i,j,k,arga1,arga2)

Definition at line 487 of file global.storage.h.

#define MACP1A3 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    GENMACP1A3(,name,argp1,i,j,k,arga1,arga2,arga3)

Definition at line 493 of file global.storage.h.

#define MACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    GENMACP2A0(,name,argp1,argp2,i,j,k)

Definition at line 481 of file global.storage.h.

#define MACP2A1 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1 
)    GENMACP2A1(,name,argp1,argp2,i,j,k,arga1)

Definition at line 486 of file global.storage.h.

#define MACP2A2 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMACP2A2(,name,argp1,argp2,i,j,k,arga1,arga2)

Definition at line 492 of file global.storage.h.

#define MACP3A0 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
 
)    GENMACP3A0(,name,argp1,argp2,argp3,i,j,k)

Definition at line 485 of file global.storage.h.

#define MACP3A1 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
  k,
  arga1 
)    GENMACP3A1(,name,argp1,argp2,argp3,i,j,k,arga1)

Definition at line 491 of file global.storage.h.

#define MACP4A0 (   name,
  argp1,
  argp2,
  argp3,
  argp4,
  i,
  j,
 
)    GENMACP4A0(,name,argp1,argp2,argp3,argp4,i,j,k)

Definition at line 490 of file global.storage.h.

#define MAXSURFA1   (N2M*N3M*N1NOT1)

surface areas of sides WITH boundary zones reduces to 0 if that dimension not used

Definition at line 52 of file global.storage.h.

#define MAXSURFA2   (N1M*N3M*N2NOT1)

Definition at line 53 of file global.storage.h.

#define MAXSURFA3   (N1M*N2M*N3NOT1)

Definition at line 54 of file global.storage.h.

#define METMAC (   name,
  i,
  j,
 
)    GENMETMAC(,name,i,j,k)

Definition at line 583 of file global.storage.h.

#define METMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    GENMETMACP0A1(,name,i,j,k,arga1)

Definition at line 591 of file global.storage.h.

#define METMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    GENMETMACP0A3(,name,i,j,k,arga1,arga2,arga3)

Definition at line 641 of file global.storage.h.

#define METMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    GENMETMACP1A0(,name,argp1,i,j,k)

Definition at line 599 of file global.storage.h.

#define METMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    GENMETMACP1A1(,name,argp1,i,j,k,arga1)

Definition at line 607 of file global.storage.h.

#define METMACP1A2 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMETMACP1A2(,name,argp1,i,j,k,arga1,arga2)

Definition at line 615 of file global.storage.h.

#define METMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    GENMETMACP2A0(,name,argp1,argp2,i,j,k)

Definition at line 624 of file global.storage.h.

#define METMACP2A2 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1,
  arga2 
)    GENMETMACP2A2(,name,argp1,argp2,i,j,k,arga1,arga2)

Definition at line 633 of file global.storage.h.

#define N1M   (N1+N1BND*2)

Define N1M, N2M, N3M and other spatial storage related items.

allocated memory uses this for active zones 0-N1-1 and bc beyond that

Definition at line 40 of file global.storage.h.

#define N2M   (N2+N2BND*2)

Definition at line 41 of file global.storage.h.

#define N3M   (N3+N3BND*2)

Definition at line 42 of file global.storage.h.

#define NBIG1M   ((N1M>N2M) ? N1M : N2M)

NBIGM is bigger of N1M and N2M and N3M not currently used.

Definition at line 47 of file global.storage.h.

#define NBIGM   ((NBIG1M>N3M) ? NBIG1M : N3M)

Definition at line 48 of file global.storage.h.

#define NBIGS1M   ((MAXSURFA1>MAXSURFA2) ? MAXSURFA1 : MAXSURFA2)

maximal surface of boundary exchange notice that this works in any number of dimensions and any N1,N2,N3 that is, it reduces correctly when a dimension is degenerate (N=1)

Definition at line 59 of file global.storage.h.

#define NBIGSM   ((NBIGS1M>MAXSURFA3) ? NBIGS1M : MAXSURFA3)

Definition at line 60 of file global.storage.h.

#define NSTORE1   N1M

123

Definition at line 121 of file global.storage.h.

#define NSTORE2   N2M

Definition at line 122 of file global.storage.h.

#define NSTORE3   N3M

Definition at line 123 of file global.storage.h.

#define NSTOREBND1   N1BND

Definition at line 124 of file global.storage.h.

#define NSTOREBND2   N2BND

Definition at line 125 of file global.storage.h.

#define NSTOREBND3   N3BND

Definition at line 126 of file global.storage.h.

#define OPENMP3DLOOPBLOCK2IJK (   i,
  j,
 
)    OPENMP3DLOOPBLOCK2IJKSTORAGE0(i,j,k)

Definition at line 157 of file global.storage.h.

#define OPENMP3DLOOPBLOCK2IJKSTORAGE0 (   i,
  j,
 
)
Value:
k=nzshift+(int)((blockijk-1)%nzsize); \
j=nyshift+(int)(((blockijk-1)%(nzsize*nysize))/nzsize); \
i=nxshift+(int)((blockijk-1)/(nzsize*nysize));

ORDERSTORAGE : N1M=NSTORE?, N2M=NSTORE?, N3M=NSTORE? 0 : 1 2 3 // standard (original) order 1 : 2 3 1 2 : 3 1 2 3 : 1 3 2 4 : 2 1 3 5 : 3 2 1.

ORDERSTORAGE==5 is most efficient order for grid extended in radius, less so in , and even less so in #define ORDERSTORAGE 0 // set in definit.h or init.h here, N1M,N2M,N3M = (r,theta,phi) always for SPC (i,j,k) = (r,theta,) always for SPC But arrays accessed via array[IND1(i,j,k)][IND2(i,j,k)][IND3(i,j,k)] ALL non-array references to i,j,k stay the same. Only array accesses have changed. Also change LOOP order (e.g. ORDERSTORAGE==5 : LOOPF -> LOOPF3 LOOPF2 LOOPF1) This way (e.g.) coord(i,j,k) and all other such non-array accesses are the same, so little abstract code changes. Only end up changing how arrays are accessed Note that unlike Sasha's mixing of the 1,2,3 directions, this doesn't change (e.g.) r(i) (j) and (k) association. It only changes how arrays are accessed! So this doesn't test how different directions are handled in the code. Note that we change the left-hand-side order not the right-hand-side order that should always be 1,2,3 or i,j,k

Definition at line 88 of file global.storage.h.

#define OPENMP3DLOOPBLOCK2IJKSTORAGE1 (   i,
  j,
 
)
Value:
i=nxshift+(int)((blockijk-1)%nxsize); \
k=nzshift+(int)(((blockijk-1)%(nxsize*nzsize))/nxsize); \
j=nyshift+(int)((blockijk-1)/(nxsize*nzsize));

Definition at line 93 of file global.storage.h.

#define OPENMP3DLOOPBLOCK2IJKSTORAGE2 (   i,
  j,
 
)
Value:
j=nyshift+(int)((blockijk-1)%nysize); \
i=nxshift+(int)(((blockijk-1)%(nysize*nxsize))/nysize); \
k=nzshift+(int)((blockijk-1)/(nysize*nxsize));

Definition at line 98 of file global.storage.h.

#define OPENMP3DLOOPBLOCK2IJKSTORAGE3 (   i,
  j,
 
)
Value:
j=nyshift+(int)((blockijk-1)%nysize); \
k=nzshift+(int)(((blockijk-1)%(nysize*nzsize))/nysize); \
i=nxshift+(int)((blockijk-1)/(nysize*nzsize));

Definition at line 103 of file global.storage.h.

#define OPENMP3DLOOPBLOCK2IJKSTORAGE4 (   i,
  j,
 
)
Value:
k=nzshift+(int)((blockijk-1)%nzsize); \
i=nxshift+(int)(((blockijk-1)%(nzsize*nxsize))/nzsize); \
j=nyshift+(int)((blockijk-1)/(nzsize*nxsize));

Definition at line 108 of file global.storage.h.

#define OPENMP3DLOOPBLOCK2IJKSTORAGE5 (   i,
  j,
 
)
Value:
i=nxshift+(int)((blockijk-1)%nxsize); \
j=nyshift+(int)(((blockijk-1)%(nxsize*nysize))/nxsize); \
k=nzshift+(int)((blockijk-1)/(nxsize*nysize));

Definition at line 113 of file global.storage.h.

#define POINT (   name)    GENPOINT(,name)

Access to any non-global pointer (not a_s_): note that ok to have nothing as prefix, but macro using prefix##name assumes prefix is defined even inputted as nothing.

Definition at line 474 of file global.storage.h.

#define PTRDEFGLOBALMAC (   name,
  i,
  j,
 
)    (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Define pointers to multi-dimen arrays for global variables (used in superdefs.pointers.h)

Definition at line 529 of file global.storage.h.

#define PTRDEFGLOBALMACP0A0 (   name,
  i,
  j,
 
)    PTRDEFGLOBALMAC(name,i,j,k)

Definition at line 530 of file global.storage.h.

#define PTRDEFGLOBALMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]

Definition at line 533 of file global.storage.h.

#define PTRDEFGLOBALMACP0A2 (   name,
  i,
  j,
  k,
  arga1,
  arga2 
)    (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]

Definition at line 537 of file global.storage.h.

#define PTRDEFGLOBALMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]

Definition at line 542 of file global.storage.h.

#define PTRDEFGLOBALMACP0A4 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3,
  arga4 
)    (*GLOBALPOINT(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]

Definition at line 548 of file global.storage.h.

#define PTRDEFGLOBALMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    (*GLOBALPOINT(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 532 of file global.storage.h.

#define PTRDEFGLOBALMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    (*GLOBALPOINT(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]

Definition at line 536 of file global.storage.h.

#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]

Definition at line 541 of file global.storage.h.

#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]

Definition at line 547 of file global.storage.h.

#define PTRDEFGLOBALMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    (*GLOBALPOINT(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 535 of file global.storage.h.

#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]

Definition at line 540 of file global.storage.h.

#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]

Definition at line 546 of file global.storage.h.

#define PTRDEFGLOBALMACP3A0 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
 
)    (*GLOBALPOINT(name))[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 539 of file global.storage.h.

#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]

Definition at line 545 of file global.storage.h.

#define PTRDEFGLOBALMACP4A0 (   name,
  argp1,
  argp2,
  argp3,
  argp4,
  i,
  j,
 
)    (*GLOBALPOINT(name))[argp2][argp3][argp4][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 544 of file global.storage.h.

#define PTRDEFGLOBALMETMAC (   name,
  i,
  j,
 
)    (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 585 of file global.storage.h.

#define PTRDEFGLOBALMETMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]

Definition at line 593 of file global.storage.h.

#define PTRDEFGLOBALMETMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    (*GLOBALPOINT(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]

Definition at line 643 of file global.storage.h.

#define PTRDEFGLOBALMETMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    (*GLOBALPOINT(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 601 of file global.storage.h.

#define PTRDEFGLOBALMETMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    (*GLOBALPOINT(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]

Definition at line 609 of file global.storage.h.

#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]

Definition at line 617 of file global.storage.h.

#define PTRDEFGLOBALMETMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    (*GLOBALPOINT(name))[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 626 of file global.storage.h.

#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]

Definition at line 635 of file global.storage.h.

#define PTRDEFMAC (   name,
  i,
  j,
 
)    (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 554 of file global.storage.h.

#define PTRDEFMACP0A0 (   name,
  i,
  j,
 
)    PTRDEFMAC(name,i,j,k)

Definition at line 555 of file global.storage.h.

#define PTRDEFMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]

Definition at line 558 of file global.storage.h.

#define PTRDEFMACP0A2 (   name,
  i,
  j,
  k,
  arga1,
  arga2 
)    (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]

Definition at line 562 of file global.storage.h.

#define PTRDEFMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]

Definition at line 567 of file global.storage.h.

#define PTRDEFMACP0A4 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3,
  arga4 
)    (*PURENAME(name))[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]

Definition at line 573 of file global.storage.h.

#define PTRDEFMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    (*PURENAME(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 557 of file global.storage.h.

#define PTRDEFMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    (*PURENAME(name))[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]

Definition at line 561 of file global.storage.h.

#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]

Definition at line 566 of file global.storage.h.

#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]

Definition at line 572 of file global.storage.h.

#define PTRDEFMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    (*PURENAME(name))[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 560 of file global.storage.h.

#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]

Definition at line 565 of file global.storage.h.

#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]

Definition at line 571 of file global.storage.h.

#define PTRDEFMACP3A0 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
 
)    (*PURENAME(name))[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 564 of file global.storage.h.

#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]

Definition at line 570 of file global.storage.h.

#define PTRDEFMACP4A0 (   name,
  argp1,
  argp2,
  argp3,
  argp4,
  i,
  j,
 
)    (*PURENAME(name))[argp2][argp3][argp4][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 569 of file global.storage.h.

#define PTRDEFMETMAC (   name,
  i,
  j,
 
)    (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 586 of file global.storage.h.

#define PTRDEFMETMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]

Definition at line 594 of file global.storage.h.

#define PTRDEFMETMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    (*PURENAME(name))[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]

Definition at line 644 of file global.storage.h.

#define PTRDEFMETMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    (*PURENAME(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 602 of file global.storage.h.

#define PTRDEFMETMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    (*PURENAME(name))[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]

Definition at line 610 of file global.storage.h.

#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]

Definition at line 618 of file global.storage.h.

#define PTRDEFMETMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    (*PURENAME(name))[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 627 of file global.storage.h.

#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]

Definition at line 636 of file global.storage.h.

#define PTRMAC (   name,
  i,
  j,
 
)    (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

pointer shift header wrappers Originally just did, e.g., GLOBALPOINT(pglobal) = (FTYPE (*)[N2M][N3M][NPR]) (&(BASEPOINT(pglobal)[NSTOREBND1][NSTOREBND2][NSTOREBND3][0])); But this exposes the internal storage, so avoid, and easy to avoid Below is same structurly as above, but with name and the first index removed from resulting macro expansion, since that's how pointers are referenced in (e.g.) set_arrays_multidimen.c Force user to input name and all dimensions to structurly consistent with other related macros PTRMAC used for both shifting pointers and defining pointers (with different indicies) Note that we must use DEFDIM1,2,3 since different than STO in behavior when no CARTMINKMETRIC.

When [DEFDIM1(i,j,k)] does not appear, that could be any i,j,k so that's correct. Note we remove (always) first term of array to create its pointer reference

Definition at line 505 of file global.storage.h.

#define PTRMACP0A0 (   name,
  i,
  j,
 
)    PTRMAC(name,i,j,k)

Definition at line 506 of file global.storage.h.

#define PTRMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]

Definition at line 509 of file global.storage.h.

#define PTRMACP0A2 (   name,
  i,
  j,
  k,
  arga1,
  arga2 
)    (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]

Definition at line 513 of file global.storage.h.

#define PTRMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3]

Definition at line 518 of file global.storage.h.

#define PTRMACP0A4 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3,
  arga4 
)    (*)[DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2][arga3][arga4]

Definition at line 524 of file global.storage.h.

#define PTRMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 508 of file global.storage.h.

#define PTRMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]

Definition at line 512 of file global.storage.h.

#define PTRMACP1A2 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2 
)    (*)[DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1][arga2]

Definition at line 517 of file global.storage.h.

#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]

Definition at line 523 of file global.storage.h.

#define PTRMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    (*)[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 511 of file global.storage.h.

#define PTRMACP2A1 (   name,
  argp1,
  argp2,
  i,
  j,
  k,
  arga1 
)    (*)[argp2][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)][arga1]

Definition at line 516 of file global.storage.h.

#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]

Definition at line 522 of file global.storage.h.

#define PTRMACP3A0 (   name,
  argp1,
  argp2,
  argp3,
  i,
  j,
 
)    (*)[argp2][argp3][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 515 of file global.storage.h.

#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]

Definition at line 521 of file global.storage.h.

#define PTRMACP4A0 (   name,
  argp1,
  argp2,
  argp3,
  argp4,
  i,
  j,
 
)    (*)[argp2][argp3][argp4][DEFDIM1(i,j,k)][DEFDIM2(i,j,k)][DEFDIM3(i,j,k)]

Definition at line 520 of file global.storage.h.

#define PTRMETMAC (   name,
  i,
  j,
 
)    (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 584 of file global.storage.h.

#define PTRMETMACP0A1 (   name,
  i,
  j,
  k,
  arga1 
)    (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]

Definition at line 592 of file global.storage.h.

#define PTRMETMACP0A3 (   name,
  i,
  j,
  k,
  arga1,
  arga2,
  arga3 
)    (*)[DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2][arga3]

Definition at line 642 of file global.storage.h.

#define PTRMETMACP1A0 (   name,
  argp1,
  i,
  j,
 
)    (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 600 of file global.storage.h.

#define PTRMETMACP1A1 (   name,
  argp1,
  i,
  j,
  k,
  arga1 
)    (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1]

Definition at line 608 of file global.storage.h.

#define PTRMETMACP1A2 (   name,
  argp1,
  i,
  j,
  k,
  arga1,
  arga2 
)    (*)[DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)][arga1][arga2]

Definition at line 616 of file global.storage.h.

#define PTRMETMACP2A0 (   name,
  argp1,
  argp2,
  i,
  j,
 
)    (*)[argp2][DEFDIMMET1(i,j,k)][DEFDIMMET2(i,j,k)][DEFDIMMET3(i,j,k)]

Definition at line 625 of file global.storage.h.

#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]

Definition at line 634 of file global.storage.h.

#define PURENAME (   name)    GENPOINT(,name)

Define pointers to multi-dimen arrays for non-global arrays (used in all other places except superdefs.pointers.h)

Definition at line 553 of file global.storage.h.

#define SHIFTSTORE1   SHIFT1

Definition at line 127 of file global.storage.h.

#define SHIFTSTORE2   SHIFT2

Definition at line 128 of file global.storage.h.

#define SHIFTSTORE3   SHIFT3

Definition at line 129 of file global.storage.h.

#define STO1 (   i,
  j,
 
)    (i)

Definition at line 134 of file global.storage.h.

#define STO2 (   i,
  j,
 
)    (j)

Definition at line 135 of file global.storage.h.

#define STO3 (   i,
  j,
 
)    (k)

Definition at line 136 of file global.storage.h.

#define STOMET1 (   i,
  j,
 
)    (0)

Definition at line 149 of file global.storage.h.

#define STOMET2 (   i,
  j,
 
)    (0)

Definition at line 150 of file global.storage.h.

#define STOMET3 (   i,
  j,
 
)    (0)

Definition at line 151 of file global.storage.h.