Multi-point loop related definitions/macros. More...
Go to the source code of this file.
Macros | |
#define | USE_MEMCPY 1 |
MOST GENERAL LOOP copy. More... | |
#define | GENFORALL(iter, src, dest, numelem) memcpy(dest, src, numelem*sizeof(src[0])) |
applies to continugous memory regions (i.e. feed single pointer for source, size of data to copy in its own dimensions) More... | |
#define | GENFORALLOVERLAP(iter, src, dest, numelem) memmove(dest, src, numelem*sizeof(src[0])) |
#define | LOOPF3 for(k=INFULL3;k<=OUTFULL3;k++) |
Many-point loops (but not computational) More... | |
#define | LOOPF2 for(j=INFULL2;j<=OUTFULL2;j++) |
#define | LOOPF1 for(i=INFULL1;i<=OUTFULL1;i++) |
#define | LOOPFPM3 for(k=INFULL3-SHIFT3;k<=OUTFULL3+SHIFT3;k++) |
only used to initialize emf[] More... | |
#define | LOOPFPM2 for(j=INFULL2-SHIFT2;j<=OUTFULL2+SHIFT2;j++) |
#define | LOOPFPM1 for(i=INFULL1-SHIFT1;i<=OUTFULL1+SHIFT1;i++) |
#define | LOOPFP13 for(k=INFULL3;k<=OUTFULLP13;k++) |
full loop + 1 on outer edge for emf or corner quantities More... | |
#define | LOOPFP12 for(j=INFULL2;j<=OUTFULLP12;j++) |
#define | LOOPFP11 for(i=INFULL1;i<=OUTFULLP11;i++) |
#define | LOOPH3 for(k=INHALF3;k<=OUTHALF3;k++) |
full loop + 1 (shift away from boundary) on inner edge for comptuing emf or corner quantities More... | |
#define | LOOPH2 for(j=INHALF2;j<=OUTHALF2;j++) |
#define | LOOPH1 for(i=INHALF1;i<=OUTHALF1;i++) |
#define | LOOPP13 for(k=INP13;k<=OUTP13;k++) |
#define | LOOPP12 for(j=INP12;j<=OUTP12;j++) |
#define | LOOPP11 for(i=INP11;i<=OUTP11;i++) |
#define | LOOPN3 for(k=0;k<=N3-1;k++) |
#define | LOOPN2 for(j=0;j<=N2-1;j++) |
#define | LOOPN1 for(i=0;i<=N1-1;i++) |
#define | LOOPFMHP3 for(k=INFULL3;k<=OUTHALF3;k++) |
#define | LOOPFMHP2 for(j=INFULL2;j<=OUTHALF2;j++) |
#define | LOOPFMHP1 for(i=INFULL1;i<=OUTHALF1;i++) |
#define | LOOPHMFP3 for(k=INHALF3;k<=OUTFULL3;k++) |
#define | LOOPHMFP2 for(j=INHALF2;j<=OUTFULL2;j++) |
#define | LOOPHMFP1 for(i=INHALF1;i<=OUTFULL1;i++) |
#define | LOOPHP3 for(k=0;k<=OUTHALF3;k++) |
#define | LOOPHP2 for(j=0;j<=OUTHALF2;j++) |
#define | LOOPHP1 for(i=0;i<=OUTHALF1;i++) |
#define | LOOPINT3 for(k=intix3;k<intox3;k++) |
#define | LOOPINT2 for(j=intix2;j<intox2;j++) |
#define | LOOPINT1 for(i=intix1;i<intox1;i++) |
#define | SUPERGENLOOP1(i, istart, istop, di) for((i)=(istart);(di>0 ? (i)<=(istop) : (i)>=(istop)); (i)+=(di)) |
SUPERGEN and GEN are super general and general, but still to be used with only spatial arrays related to spatial (N1,N2,N3) directions in i,j,k. More... | |
#define | SUPERGENLOOP2(j, jstart, jstop, dj) for((j)=(jstart);(dj>0 ? (j)<=(jstop) : (j)>=(jstop)); (j)+=(dj)) |
#define | SUPERGENLOOP3(k, kstart, kstop, dk) for((k)=(kstart);(dk>0 ? (k)<=(kstop) : (k)>=(kstop)); (k)+=(dk)) |
#define | GENLOOP1(i, istart, istop) SUPERGENLOOP1(i,istart,istop,1) |
#define | GENLOOP2(j, jstart, jstop) SUPERGENLOOP2(j,jstart,jstop,1) |
#define | GENLOOP3(k, kstart, kstop) SUPERGENLOOP3(k,kstart,kstop,1) |
#define | ZSLOOP1(istart, istop) SUPERGENLOOP1(i,istart,istop,1) |
#define | ZSLOOP2(jstart, jstop) SUPERGENLOOP2(j,jstart,jstop,1) |
#define | ZSLOOP3(kstart, kstop) SUPERGENLOOP3(k,kstart,kstop,1) |
#define | LOOPC3 LOOPN3 |
#define | LOOPC2 LOOPN2 |
#define | LOOPC1 LOOPN1 |
#define | SUPERGENLOOP(i, j, k, istart, istop, jstart, jstop, kstart, kstop, di, dj, dk) LOOPORDER1(SUPERGENLOOP1(i,istart,istop,di),SUPERGENLOOP2(j,jstart,jstop,dj),SUPERGENLOOP3(k,kstart,kstop,dk)) LOOPORDER2(SUPERGENLOOP1(i,istart,istop,di),SUPERGENLOOP2(j,jstart,jstop,dj),SUPERGENLOOP3(k,kstart,kstop,dk)) LOOPORDER3(SUPERGENLOOP1(i,istart,istop,di),SUPERGENLOOP2(j,jstart,jstop,dj),SUPERGENLOOP3(k,kstart,kstop,dk)) |
below are different ways of combining each spatial direction More... | |
#define | GENLOOP(i, j, k, istart, istop, jstart, jstop, kstart, kstop) LOOPORDER1(GENLOOP1(i,istart,istop),GENLOOP2(j,jstart,jstop),GENLOOP3(k,kstart,kstop)) LOOPORDER2(GENLOOP1(i,istart,istop),GENLOOP2(j,jstart,jstop),GENLOOP3(k,kstart,kstop)) LOOPORDER3(GENLOOP1(i,istart,istop),GENLOOP2(j,jstart,jstop),GENLOOP3(k,kstart,kstop)) |
general loop for any indicies More... | |
#define | ZSLOOP(istart, istop, jstart, jstop, kstart, kstop) LOOPORDER1(ZSLOOP1(istart,istop),ZSLOOP2(jstart,jstop),ZSLOOP3(kstart,kstop)) LOOPORDER2(ZSLOOP1(istart,istop),ZSLOOP2(jstart,jstop),ZSLOOP3(kstart,kstop)) LOOPORDER3(ZSLOOP1(istart,istop),ZSLOOP2(jstart,jstop),ZSLOOP3(kstart,kstop)) |
general loop, but assumes i,j,k used More... | |
#define | LOOPF LOOPORDER1(LOOPF1,LOOPF2,LOOPF3) LOOPORDER2(LOOPF1,LOOPF2,LOOPF3) LOOPORDER3(LOOPF1,LOOPF2,LOOPF3) |
below used for initialization and such, not a computational issue More... | |
#define | LOOPFPM LOOPORDER1(LOOPF1,LOOPFPM2,LOOPFPM3) LOOPORDER2(LOOPFPM1,LOOPFPM2,LOOPFPM3) LOOPORDER3(LOOPFPM1,LOOPFPM2,LOOPFPM3) |
#define | FULLLOOPPM LOOPFPM |
#define | LOOPF_12 LOOPORDER1(LOOPF1,LOOPF2,) LOOPORDER2(LOOPF1,LOOPF2,) LOOPORDER3(LOOPF1,LOOPF2,) |
#define | LOOPF_13 LOOPORDER1(LOOPF1,,LOOPF3) LOOPORDER2(LOOPF1,,LOOPF3) LOOPORDER3(LOOPF1,,LOOPF3) |
#define | LOOPF_23 LOOPORDER1(,LOOPF2,LOOPF3) LOOPORDER2(,LOOPF2,LOOPF3) LOOPORDER3(,LOOPF2,LOOPF3) |
#define | LOOPH LOOPORDER1(LOOPH1,LOOPH2,LOOPH3) LOOPORDER2(LOOPH1,LOOPH2,LOOPH3) LOOPORDER3(LOOPH1,LOOPH2,LOOPH3) |
#define | LOOPP1 LOOPORDER1(LOOPP11,LOOPP12,LOOPP13) LOOPORDER2(LOOPP11,LOOPP12,LOOPP13) LOOPORDER3(LOOPP11,LOOPP12,LOOPP13) |
#define | LOOP LOOPORDER1(LOOPN1,LOOPN2,LOOPN3) LOOPORDER2(LOOPN1,LOOPN2,LOOPN3) LOOPORDER3(LOOPN1,LOOPN2,LOOPN3) |
#define | LOOPFMHP LOOPORDER1(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3) LOOPORDER2(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3) LOOPORDER3(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3) |
#define | LOOPHMFP LOOPORDER1(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3) LOOPORDER2(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3) LOOPORDER3(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3) |
#define | LOOPHP LOOPORDER1(LOOPHP1,LOOPHP2,LOOPHP3) LOOPORDER2(LOOPHP1,LOOPHP2,LOOPHP3) LOOPORDER3(LOOPHP1,LOOPHP2,LOOPHP3) |
#define | LOOPC LOOPORDER1(LOOPC1,LOOPC2,LOOPC3) LOOPORDER2(LOOPC1,LOOPC2,LOOPC3) LOOPORDER3(LOOPC1,LOOPC2,LOOPC3) |
#define | FULLLOOP LOOPF |
#define | FULLLOOPP1 LOOPORDER1(LOOPFP11,LOOPFP12,LOOPFP13) LOOPORDER2(LOOPFP11,LOOPFP12,LOOPFP13) LOOPORDER3(LOOPFP11,LOOPFP12,LOOPFP13) |
larger loop than full for cornered quantities such as emf defined on corners that need to be initialized for boundary condition reasons More... | |
#define | LOOPDIVB LOOPORDER1(LOOPC1,LOOPC2,LOOPC3) LOOPORDER2(LOOPC1,LOOPC2,LOOPC3) LOOPORDER3(LOOPC1,LOOPC2,LOOPC3) |
divb loop (for diagnostics only) More... | |
#define | LOOPFC LOOPF |
below are not original multi-D combindations, just renamings that have no control over order of dimensions More... | |
#define | LOOPHC LOOPH |
#define | LOOPFMHPC LOOPFMHP |
#define | LOOPHMFPC LOOPHMFP |
#define | LOOPHPC LOOPHP |
#define | ZLOOP ZSLOOP(0,N1-1,0,N2-1,0,N3-1) |
Multi-point loop related definitions/macros.
LOOPS (not computational, but not per-point. So still over i,j,k but diagnostic or other).
Definition in file global.loops.manypoints.h.
#define FULLLOOP LOOPF |
Definition at line 165 of file global.loops.manypoints.h.
#define FULLLOOPP1 LOOPORDER1(LOOPFP11,LOOPFP12,LOOPFP13) LOOPORDER2(LOOPFP11,LOOPFP12,LOOPFP13) LOOPORDER3(LOOPFP11,LOOPFP12,LOOPFP13) |
larger loop than full for cornered quantities such as emf defined on corners that need to be initialized for boundary condition reasons
Definition at line 167 of file global.loops.manypoints.h.
#define FULLLOOPPM LOOPFPM |
Definition at line 153 of file global.loops.manypoints.h.
#define GENFORALL | ( | iter, | |
src, | |||
dest, | |||
numelem | |||
) | memcpy(dest, src, numelem*sizeof(src[0])) |
applies to continugous memory regions (i.e. feed single pointer for source, size of data to copy in its own dimensions)
Definition at line 24 of file global.loops.manypoints.h.
#define GENFORALLOVERLAP | ( | iter, | |
src, | |||
dest, | |||
numelem | |||
) | memmove(dest, src, numelem*sizeof(src[0])) |
Definition at line 25 of file global.loops.manypoints.h.
#define GENLOOP | ( | i, | |
j, | |||
k, | |||
istart, | |||
istop, | |||
jstart, | |||
jstop, | |||
kstart, | |||
kstop | |||
) | LOOPORDER1(GENLOOP1(i,istart,istop),GENLOOP2(j,jstart,jstop),GENLOOP3(k,kstart,kstop)) LOOPORDER2(GENLOOP1(i,istart,istop),GENLOOP2(j,jstart,jstop),GENLOOP3(k,kstart,kstop)) LOOPORDER3(GENLOOP1(i,istart,istop),GENLOOP2(j,jstart,jstop),GENLOOP3(k,kstart,kstop)) |
general loop for any indicies
Definition at line 145 of file global.loops.manypoints.h.
#define GENLOOP1 | ( | i, | |
istart, | |||
istop | |||
) | SUPERGENLOOP1(i,istart,istop,1) |
Definition at line 117 of file global.loops.manypoints.h.
#define GENLOOP2 | ( | j, | |
jstart, | |||
jstop | |||
) | SUPERGENLOOP2(j,jstart,jstop,1) |
Definition at line 118 of file global.loops.manypoints.h.
#define GENLOOP3 | ( | k, | |
kstart, | |||
kstop | |||
) | SUPERGENLOOP3(k,kstart,kstop,1) |
Definition at line 119 of file global.loops.manypoints.h.
#define LOOP LOOPORDER1(LOOPN1,LOOPN2,LOOPN3) LOOPORDER2(LOOPN1,LOOPN2,LOOPN3) LOOPORDER3(LOOPN1,LOOPN2,LOOPN3) |
Definition at line 160 of file global.loops.manypoints.h.
#define LOOPC LOOPORDER1(LOOPC1,LOOPC2,LOOPC3) LOOPORDER2(LOOPC1,LOOPC2,LOOPC3) LOOPORDER3(LOOPC1,LOOPC2,LOOPC3) |
Definition at line 164 of file global.loops.manypoints.h.
#define LOOPC1 LOOPN1 |
Definition at line 127 of file global.loops.manypoints.h.
#define LOOPC2 LOOPN2 |
Definition at line 126 of file global.loops.manypoints.h.
#define LOOPC3 LOOPN3 |
Definition at line 125 of file global.loops.manypoints.h.
#define LOOPDIVB LOOPORDER1(LOOPC1,LOOPC2,LOOPC3) LOOPORDER2(LOOPC1,LOOPC2,LOOPC3) LOOPORDER3(LOOPC1,LOOPC2,LOOPC3) |
divb loop (for diagnostics only)
boundary zones may not require divb=0 since proxy for flux
Definition at line 171 of file global.loops.manypoints.h.
#define LOOPF LOOPORDER1(LOOPF1,LOOPF2,LOOPF3) LOOPORDER2(LOOPF1,LOOPF2,LOOPF3) LOOPORDER3(LOOPF1,LOOPF2,LOOPF3) |
below used for initialization and such, not a computational issue
Definition at line 149 of file global.loops.manypoints.h.
Definition at line 57 of file global.loops.manypoints.h.
Definition at line 56 of file global.loops.manypoints.h.
Many-point loops (but not computational)
below are each per-spatial-dimension loops used later to contruct a multi-dimensionan loop of any orderthese loops used for general purposes
Definition at line 55 of file global.loops.manypoints.h.
#define LOOPF_12 LOOPORDER1(LOOPF1,LOOPF2,) LOOPORDER2(LOOPF1,LOOPF2,) LOOPORDER3(LOOPF1,LOOPF2,) |
Definition at line 155 of file global.loops.manypoints.h.
#define LOOPF_13 LOOPORDER1(LOOPF1,,LOOPF3) LOOPORDER2(LOOPF1,,LOOPF3) LOOPORDER3(LOOPF1,,LOOPF3) |
Definition at line 156 of file global.loops.manypoints.h.
#define LOOPF_23 LOOPORDER1(,LOOPF2,LOOPF3) LOOPORDER2(,LOOPF2,LOOPF3) LOOPORDER3(,LOOPF2,LOOPF3) |
Definition at line 157 of file global.loops.manypoints.h.
#define LOOPFC LOOPF |
below are not original multi-D combindations, just renamings that have no control over order of dimensions
Definition at line 186 of file global.loops.manypoints.h.
#define LOOPFMHP LOOPORDER1(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3) LOOPORDER2(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3) LOOPORDER3(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3) |
Definition at line 161 of file global.loops.manypoints.h.
Definition at line 95 of file global.loops.manypoints.h.
Definition at line 94 of file global.loops.manypoints.h.
Definition at line 93 of file global.loops.manypoints.h.
#define LOOPFMHPC LOOPFMHP |
Definition at line 188 of file global.loops.manypoints.h.
#define LOOPFP11 for(i=INFULL1;i<=OUTFULLP11;i++) |
Definition at line 68 of file global.loops.manypoints.h.
#define LOOPFP12 for(j=INFULL2;j<=OUTFULLP12;j++) |
Definition at line 67 of file global.loops.manypoints.h.
#define LOOPFP13 for(k=INFULL3;k<=OUTFULLP13;k++) |
full loop + 1 on outer edge for emf or corner quantities
Definition at line 66 of file global.loops.manypoints.h.
#define LOOPFPM LOOPORDER1(LOOPF1,LOOPFPM2,LOOPFPM3) LOOPORDER2(LOOPFPM1,LOOPFPM2,LOOPFPM3) LOOPORDER3(LOOPFPM1,LOOPFPM2,LOOPFPM3) |
Definition at line 151 of file global.loops.manypoints.h.
Definition at line 62 of file global.loops.manypoints.h.
Definition at line 61 of file global.loops.manypoints.h.
only used to initialize emf[]
Definition at line 60 of file global.loops.manypoints.h.
#define LOOPH LOOPORDER1(LOOPH1,LOOPH2,LOOPH3) LOOPORDER2(LOOPH1,LOOPH2,LOOPH3) LOOPORDER3(LOOPH1,LOOPH2,LOOPH3) |
Definition at line 158 of file global.loops.manypoints.h.
Definition at line 83 of file global.loops.manypoints.h.
Definition at line 82 of file global.loops.manypoints.h.
full loop + 1 (shift away from boundary) on inner edge for comptuing emf or corner quantities
Definition at line 81 of file global.loops.manypoints.h.
#define LOOPHC LOOPH |
Definition at line 187 of file global.loops.manypoints.h.
#define LOOPHMFP LOOPORDER1(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3) LOOPORDER2(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3) LOOPORDER3(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3) |
Definition at line 162 of file global.loops.manypoints.h.
Definition at line 99 of file global.loops.manypoints.h.
Definition at line 98 of file global.loops.manypoints.h.
Definition at line 97 of file global.loops.manypoints.h.
#define LOOPHMFPC LOOPHMFP |
Definition at line 189 of file global.loops.manypoints.h.
#define LOOPHP LOOPORDER1(LOOPHP1,LOOPHP2,LOOPHP3) LOOPORDER2(LOOPHP1,LOOPHP2,LOOPHP3) LOOPORDER3(LOOPHP1,LOOPHP2,LOOPHP3) |
Definition at line 163 of file global.loops.manypoints.h.
#define LOOPHP3 for(k=0;k<=OUTHALF3;k++) |
Definition at line 101 of file global.loops.manypoints.h.
#define LOOPHPC LOOPHP |
Definition at line 190 of file global.loops.manypoints.h.
Definition at line 107 of file global.loops.manypoints.h.
Definition at line 106 of file global.loops.manypoints.h.
Definition at line 105 of file global.loops.manypoints.h.
#define LOOPN3 for(k=0;k<=N3-1;k++) |
Definition at line 89 of file global.loops.manypoints.h.
#define LOOPP1 LOOPORDER1(LOOPP11,LOOPP12,LOOPP13) LOOPORDER2(LOOPP11,LOOPP12,LOOPP13) LOOPORDER3(LOOPP11,LOOPP12,LOOPP13) |
Definition at line 159 of file global.loops.manypoints.h.
Definition at line 85 of file global.loops.manypoints.h.
#define SUPERGENLOOP | ( | i, | |
j, | |||
k, | |||
istart, | |||
istop, | |||
jstart, | |||
jstop, | |||
kstart, | |||
kstop, | |||
di, | |||
dj, | |||
dk | |||
) | LOOPORDER1(SUPERGENLOOP1(i,istart,istop,di),SUPERGENLOOP2(j,jstart,jstop,dj),SUPERGENLOOP3(k,kstart,kstop,dk)) LOOPORDER2(SUPERGENLOOP1(i,istart,istop,di),SUPERGENLOOP2(j,jstart,jstop,dj),SUPERGENLOOP3(k,kstart,kstop,dk)) LOOPORDER3(SUPERGENLOOP1(i,istart,istop,di),SUPERGENLOOP2(j,jstart,jstop,dj),SUPERGENLOOP3(k,kstart,kstop,dk)) |
below are different ways of combining each spatial direction
general loop for any indicies
Definition at line 143 of file global.loops.manypoints.h.
#define SUPERGENLOOP1 | ( | i, | |
istart, | |||
istop, | |||
di | |||
) | for((i)=(istart);(di>0 ? (i)<=(istop) : (i)>=(istop)); (i)+=(di)) |
SUPERGEN and GEN are super general and general, but still to be used with only spatial arrays related to spatial (N1,N2,N3) directions in i,j,k.
Can create non-spatial general loop if required PACKLOOP() in boundmpi.c and PACKLOOP_INT() boundmpiint.c uses these correctly since refer to i,j,k in correct order SUPERGENLOOP() as used in interpline.c is correct since always refer to i,j,k in correct order GENLOOP() in diag.c correctly uses i,j,k in order
Definition at line 113 of file global.loops.manypoints.h.
#define SUPERGENLOOP2 | ( | j, | |
jstart, | |||
jstop, | |||
dj | |||
) | for((j)=(jstart);(dj>0 ? (j)<=(jstop) : (j)>=(jstop)); (j)+=(dj)) |
Definition at line 114 of file global.loops.manypoints.h.
#define SUPERGENLOOP3 | ( | k, | |
kstart, | |||
kstop, | |||
dk | |||
) | for((k)=(kstart);(dk>0 ? (k)<=(kstop) : (k)>=(kstop)); (k)+=(dk)) |
Definition at line 115 of file global.loops.manypoints.h.
#define USE_MEMCPY 1 |
MOST GENERAL LOOP copy.
While fast, does not allow for control over loop order in memory.Sasha's dad and google say memcopy() and memmove() can be much faster than loop if compiler doesn't recognize this optimization. So best to force it in simple cases
Definition at line 19 of file global.loops.manypoints.h.
Definition at line 191 of file global.loops.manypoints.h.
#define ZSLOOP | ( | istart, | |
istop, | |||
jstart, | |||
jstop, | |||
kstart, | |||
kstop | |||
) | LOOPORDER1(ZSLOOP1(istart,istop),ZSLOOP2(jstart,jstop),ZSLOOP3(kstart,kstop)) LOOPORDER2(ZSLOOP1(istart,istop),ZSLOOP2(jstart,jstop),ZSLOOP3(kstart,kstop)) LOOPORDER3(ZSLOOP1(istart,istop),ZSLOOP2(jstart,jstop),ZSLOOP3(kstart,kstop)) |
general loop, but assumes i,j,k used
Definition at line 147 of file global.loops.manypoints.h.
#define ZSLOOP1 | ( | istart, | |
istop | |||
) | SUPERGENLOOP1(i,istart,istop,1) |
Definition at line 121 of file global.loops.manypoints.h.
#define ZSLOOP2 | ( | jstart, | |
jstop | |||
) | SUPERGENLOOP2(j,jstart,jstop,1) |
Definition at line 122 of file global.loops.manypoints.h.
#define ZSLOOP3 | ( | kstart, | |
kstop | |||
) | SUPERGENLOOP3(k,kstart,kstop,1) |
Definition at line 123 of file global.loops.manypoints.h.