HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
global.loops.manypoints.h
Go to the documentation of this file.
1 
9 
10 
11 
12 
13 
14 
15 
16 
17 
19 #define USE_MEMCPY 1
20 
22 #if(USE_MEMCPY)
23 // iter not used
24 #define GENFORALL(iter,src,dest,numelem) memcpy(dest, src, numelem*sizeof(src[0]))
25 #define GENFORALLOVERLAP(iter,src,dest,numelem) memmove(dest, src, numelem*sizeof(src[0]))
26 #else
27 
28 #define GENFORALL(iter,src,dest,numelem) \
29  for (iter = 0; iter < numelem; iter++) \
30  { \
31  dest[iter] = src[iter]; \
32  }
33 #define GENFORALLOVERLAP(iter,src,dest,numelem) GENFORALL(iter,src,dest,numelem)
34 #endif
35 
36 
44 
45 
46 
52 
53 
55 #define LOOPF3 for(k=INFULL3;k<=OUTFULL3;k++)
56 #define LOOPF2 for(j=INFULL2;j<=OUTFULL2;j++)
57 #define LOOPF1 for(i=INFULL1;i<=OUTFULL1;i++)
58 
60 #define LOOPFPM3 for(k=INFULL3-SHIFT3;k<=OUTFULL3+SHIFT3;k++)
61 #define LOOPFPM2 for(j=INFULL2-SHIFT2;j<=OUTFULL2+SHIFT2;j++)
62 #define LOOPFPM1 for(i=INFULL1-SHIFT1;i<=OUTFULL1+SHIFT1;i++)
63 
64 
66 #define LOOPFP13 for(k=INFULL3;k<=OUTFULLP13;k++)
67 #define LOOPFP12 for(j=INFULL2;j<=OUTFULLP12;j++)
68 #define LOOPFP11 for(i=INFULL1;i<=OUTFULLP11;i++)
69 
70 
72 //#define LOOPINFP13 for(k=INFULLP13;k<=OUTFULL3;k++)
73 //#define LOOPINFP12 for(j=INFULLP12;j<=OUTFULL2;j++)
74 //#define LOOPINFP11 for(i=INFULLP11;i<=OUTFULL1;i++)
75 
76 
77 //#define LOOPOUTFM13 for(k=INFULL3;k<=OUTFULLM13;k++)
78 //#define LOOPOUTFM12 for(j=INFULL2;j<=OUTFULLM12;j++)
79 //#define LOOPOUTFM11 for(i=INFULL1;i<=OUTFULLM11;i++)
80 
81 #define LOOPH3 for(k=INHALF3;k<=OUTHALF3;k++)
82 #define LOOPH2 for(j=INHALF2;j<=OUTHALF2;j++)
83 #define LOOPH1 for(i=INHALF1;i<=OUTHALF1;i++)
84 
85 #define LOOPP13 for(k=INP13;k<=OUTP13;k++)
86 #define LOOPP12 for(j=INP12;j<=OUTP12;j++)
87 #define LOOPP11 for(i=INP11;i<=OUTP11;i++)
88 
89 #define LOOPN3 for(k=0;k<=N3-1;k++)
90 #define LOOPN2 for(j=0;j<=N2-1;j++)
91 #define LOOPN1 for(i=0;i<=N1-1;i++)
92 
93 #define LOOPFMHP3 for(k=INFULL3;k<=OUTHALF3;k++)
94 #define LOOPFMHP2 for(j=INFULL2;j<=OUTHALF2;j++)
95 #define LOOPFMHP1 for(i=INFULL1;i<=OUTHALF1;i++)
96 
97 #define LOOPHMFP3 for(k=INHALF3;k<=OUTFULL3;k++)
98 #define LOOPHMFP2 for(j=INHALF2;j<=OUTFULL2;j++)
99 #define LOOPHMFP1 for(i=INHALF1;i<=OUTFULL1;i++)
100 
101 #define LOOPHP3 for(k=0;k<=OUTHALF3;k++)
102 #define LOOPHP2 for(j=0;j<=OUTHALF2;j++)
103 #define LOOPHP1 for(i=0;i<=OUTHALF1;i++)
104 
105 #define LOOPINT3 for(k=intix3;k<intox3;k++)
106 #define LOOPINT2 for(j=intix2;j<intox2;j++)
107 #define LOOPINT1 for(i=intix1;i<intox1;i++)
108 
113 #define SUPERGENLOOP1(i,istart,istop,di) for((i)=(istart);(di>0 ? (i)<=(istop) : (i)>=(istop)); (i)+=(di))
114 #define SUPERGENLOOP2(j,jstart,jstop,dj) for((j)=(jstart);(dj>0 ? (j)<=(jstop) : (j)>=(jstop)); (j)+=(dj))
115 #define SUPERGENLOOP3(k,kstart,kstop,dk) for((k)=(kstart);(dk>0 ? (k)<=(kstop) : (k)>=(kstop)); (k)+=(dk))
116 
117 #define GENLOOP1(i,istart,istop) SUPERGENLOOP1(i,istart,istop,1)
118 #define GENLOOP2(j,jstart,jstop) SUPERGENLOOP2(j,jstart,jstop,1)
119 #define GENLOOP3(k,kstart,kstop) SUPERGENLOOP3(k,kstart,kstop,1)
120 
121 #define ZSLOOP1(istart,istop) SUPERGENLOOP1(i,istart,istop,1)
122 #define ZSLOOP2(jstart,jstop) SUPERGENLOOP2(j,jstart,jstop,1)
123 #define ZSLOOP3(kstart,kstop) SUPERGENLOOP3(k,kstart,kstop,1)
124 
125 #define LOOPC3 LOOPN3
126 #define LOOPC2 LOOPN2
127 #define LOOPC1 LOOPN1
128 
129 
130 
131 
132 
133 
139 
140 
141 
143 #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))
144 
145 #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))
146 
147 #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))
148 
149 #define LOOPF LOOPORDER1(LOOPF1,LOOPF2,LOOPF3) LOOPORDER2(LOOPF1,LOOPF2,LOOPF3) LOOPORDER3(LOOPF1,LOOPF2,LOOPF3)
150 
151 #define LOOPFPM LOOPORDER1(LOOPF1,LOOPFPM2,LOOPFPM3) LOOPORDER2(LOOPFPM1,LOOPFPM2,LOOPFPM3) LOOPORDER3(LOOPFPM1,LOOPFPM2,LOOPFPM3)
152 
153 #define FULLLOOPPM LOOPFPM
154 
155 #define LOOPF_12 LOOPORDER1(LOOPF1,LOOPF2,) LOOPORDER2(LOOPF1,LOOPF2,) LOOPORDER3(LOOPF1,LOOPF2,)
156 #define LOOPF_13 LOOPORDER1(LOOPF1,,LOOPF3) LOOPORDER2(LOOPF1,,LOOPF3) LOOPORDER3(LOOPF1,,LOOPF3)
157 #define LOOPF_23 LOOPORDER1(,LOOPF2,LOOPF3) LOOPORDER2(,LOOPF2,LOOPF3) LOOPORDER3(,LOOPF2,LOOPF3)
158 #define LOOPH LOOPORDER1(LOOPH1,LOOPH2,LOOPH3) LOOPORDER2(LOOPH1,LOOPH2,LOOPH3) LOOPORDER3(LOOPH1,LOOPH2,LOOPH3)
159 #define LOOPP1 LOOPORDER1(LOOPP11,LOOPP12,LOOPP13) LOOPORDER2(LOOPP11,LOOPP12,LOOPP13) LOOPORDER3(LOOPP11,LOOPP12,LOOPP13)
160 #define LOOP LOOPORDER1(LOOPN1,LOOPN2,LOOPN3) LOOPORDER2(LOOPN1,LOOPN2,LOOPN3) LOOPORDER3(LOOPN1,LOOPN2,LOOPN3)
161 #define LOOPFMHP LOOPORDER1(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3) LOOPORDER2(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3) LOOPORDER3(LOOPFMHP1,LOOPFMHP2,LOOPFMHP3)
162 #define LOOPHMFP LOOPORDER1(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3) LOOPORDER2(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3) LOOPORDER3(LOOPHMFP1,LOOPHMFP2,LOOPHMFP3)
163 #define LOOPHP LOOPORDER1(LOOPHP1,LOOPHP2,LOOPHP3) LOOPORDER2(LOOPHP1,LOOPHP2,LOOPHP3) LOOPORDER3(LOOPHP1,LOOPHP2,LOOPHP3)
164 #define LOOPC LOOPORDER1(LOOPC1,LOOPC2,LOOPC3) LOOPORDER2(LOOPC1,LOOPC2,LOOPC3) LOOPORDER3(LOOPC1,LOOPC2,LOOPC3)
165 #define FULLLOOP LOOPF
166 
167 #define FULLLOOPP1 LOOPORDER1(LOOPFP11,LOOPFP12,LOOPFP13) LOOPORDER2(LOOPFP11,LOOPFP12,LOOPFP13) LOOPORDER3(LOOPFP11,LOOPFP12,LOOPFP13)
168 
169 //#define LOOPDIVB LOOPORDER1(LOOPP11,LOOPP12,LOOPP13) LOOPORDER2(LOOPP11,LOOPP12,LOOPP13) LOOPORDER3(LOOPP11,LOOPP12,LOOPP13)
171 #define LOOPDIVB LOOPORDER1(LOOPC1,LOOPC2,LOOPC3) LOOPORDER2(LOOPC1,LOOPC2,LOOPC3) LOOPORDER3(LOOPC1,LOOPC2,LOOPC3)
172 
173 
174 
175 
176 
177 
178 
179 
180 
186 #define LOOPFC LOOPF
187 #define LOOPHC LOOPH
188 #define LOOPFMHPC LOOPFMHP
189 #define LOOPHMFPC LOOPHMFP
190 #define LOOPHPC LOOPHP
191 #define ZLOOP ZSLOOP(0,N1-1,0,N2-1,0,N3-1)
192 
193 
194 
195 
196 
197 
198 
199 
200 
201 
202 
204 //
205 // Below are deprecated -- if activate ensure proper general loop behavior as above
206 //
208 
209 //#if(BOUNDPLPR&&NOFLUXCTONX1DN)
210 //#define FULLLOOPflux1 LOOPF1 LOOPF2 LOOPF3 if(!(startpos[1]+i==0))
211 //#else
212 //#define FULLLOOPflux1 LOOPF1 LOOPF2 LOOPF3
213 //#endif
214 
215 // computing emf for FLUXCT
216 //#define LOOPINFP1 LOOPINFP11 LOOPINFP12 LOOPINFP13
217 
218 //#define LOOPINFP1dir1full LOOPF1 LOOPINFP12 LOOPINFP13
219 
220 //#define LOOPINFP1dir2full LOOPINFP11 LOOPF2 LOOPINFP13
221 
222 //#define LOOPINFP1dir3full LOOPINFP11 LOOPINFP12 LOOPF3
223 
224 //#define LOOPINFP1dir23full LOOPINFP11 LOOPF2 LOOPF3
225 
226 //#define LOOPINFP1dir13full LOOPF1 LOOPINFP12 LOOPF3
227 
228 //#define LOOPINFP1dir12full LOOPF1 LOOPF2 LOOPINFP13
229 
230 
231 // computing emf for FLUXCD
232 //#define LOOPOUTFM1 LOOPOUTFM11 LOOPOUTFM12 LOOPOUTFM13
233 
234 //#if(BOUNDPLPR&&NOFLUXCTONX1DN)
235 //#define LOOPOUTFM1dir1fullflux LOOPF1 LOOPOUTFM12 LOOPOUTFM13 if(!(startpos[1]+i==0))
236 //#else
237 //#define LOOPOUTFM1dir1fullflux LOOPF1 LOOPOUTFM12 LOOPOUTFM13
238 //#endif
239 
240 //#define LOOPOUTFM1dir1full LOOPF1 LOOPOUTFM12 LOOPOUTFM13
241 
242 //#define LOOPOUTFM1dir2full LOOPOUTFM11 LOOPF2 LOOPOUTFM13
243 
244 //#define LOOPOUTFM1dir3full LOOPOUTFM11 LOOPOUTFM12 LOOPF3
245 
246 //#define WSPEEDLOOP ZSLOOP(-SHIFT1,N1-1+2*SHIFT1,-SHIFT2,N2-1+2*SHIFT2,-SHIFT3,N3-1+2*SHIFT3)
247 
248 //#define PLUSLOOP ZSLOOP(-1, N1, -1, N2, -1, N3)
249 
250 // below same as FULLLOOP if NBND=2
251 //#define PLUSPLUSLOOP ZSLOOP(-2, N1+1, -2, N2+1, -2, N3+1)
252 
253 
254 
255 
256 
257