HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
global.gridsectioning.h
Go to the documentation of this file.
1 
13 #if( DOGRIDSECTIONING )
14 
16 #define SHIFTX1DN (enerposreg[ACTIVEREGION][X1DN]-0)
17 #define SHIFTX1UP (enerposreg[ACTIVEREGION][X1UP]-(N1-1))
18 #define SHIFTX2DN (enerposreg[ACTIVEREGION][X2DN]-0)
19 #define SHIFTX2UP (enerposreg[ACTIVEREGION][X2UP]-(N2-1))
20 #define SHIFTX3DN (enerposreg[ACTIVEREGION][X3DN]-0)
21 #define SHIFTX3UP (enerposreg[ACTIVEREGION][X3UP]-(N3-1))
22 
23 #else
24 
26 #define SHIFTX1DN (0)
27 #define SHIFTX1UP (0)
28 #define SHIFTX2DN (0)
29 #define SHIFTX2UP (0)
30 #define SHIFTX3DN (0)
31 #define SHIFTX3UP (0)
32 
33 #endif
34 
35 
37 #if( DOGRIDSECTIONING )
38 #define WITHINACTIVESECTION(ri,rj,rk) ( ri >= enerposreg[ACTIVEREGION][X1DN] && ri <= enerposreg[ACTIVEREGION][X1UP] \
39  && rj >= enerposreg[ACTIVEREGION][X2DN] && rj <= enerposreg[ACTIVEREGION][X2UP] \
40  && rk >= enerposreg[ACTIVEREGION][X3DN] && rk <= enerposreg[ACTIVEREGION][X3UP] )
41 #else
42 #define WITHINACTIVESECTION(ri,rj,rk) (ri >=0 && ri<=N1-1 && rj>=0 && rj<=N2-1 && rk>=0 && rk<=N3-1 ) //always within active section since no sectioning (JCM: No, this is only comp cells not BC cells)
43 #endif
44 
45 
47 #if( DOGRIDSECTIONING )
48 
49 #define WITHINACTIVESECTIONEXPAND1(ri,rj,rk) ( ri >= enerposreg[ACTIVEREGION][X1DN]-SHIFT1 && ri <= enerposreg[ACTIVEREGION][X1UP]+SHIFT1 \
50  && rj >= enerposreg[ACTIVEREGION][X2DN]-SHIFT2 && rj <= enerposreg[ACTIVEREGION][X2UP]+SHIFT2 \
51  && rk >= enerposreg[ACTIVEREGION][X3DN]-SHIFT3 && rk <= enerposreg[ACTIVEREGION][X3UP]+SHIFT3 )
52 
53 #define LOOPWITHINACTIVESECTIONEXPAND1(ri,rj,rk) GENLOOP(ri,rj,rk,enerposreg[ACTIVEREGION][X1DN]-SHIFT1,enerposreg[ACTIVEREGION][X1UP]+SHIFT1,enerposreg[ACTIVEREGION][X2DN]-SHIFT2,enerposreg[ACTIVEREGION][X2UP]+SHIFT2,enerposreg[ACTIVEREGION][X3DN]-SHIFT3,enerposreg[ACTIVEREGION][X3UP]+SHIFT3)
54 
55 #define WITHINACTIVESECTIONEXPAND1IS (enerposreg[ACTIVEREGION][X1DN]-SHIFT1)
56 #define WITHINACTIVESECTIONEXPAND1IE (enerposreg[ACTIVEREGION][X1UP]+SHIFT1)
57 #define WITHINACTIVESECTIONEXPAND1JS (enerposreg[ACTIVEREGION][X2DN]-SHIFT2)
58 #define WITHINACTIVESECTIONEXPAND1JE (enerposreg[ACTIVEREGION][X2UP]+SHIFT2)
59 #define WITHINACTIVESECTIONEXPAND1KS (enerposreg[ACTIVEREGION][X3DN]-SHIFT3)
60 #define WITHINACTIVESECTIONEXPAND1KE (enerposreg[ACTIVEREGION][X3UP]+SHIFT3)
61 
62 #else
63 
64 #define WITHINACTIVESECTIONEXPAND1(ri,rj,rk) (ri >=-SHIFT1 && ri<=N1-1+SHIFT1 && rj>=-SHIFT2 && rj<=N2-1+SHIFT2 && rk>=-SHIFT3 && rk<=N3-1+SHIFT3 )
65 #define LOOPWITHINACTIVESECTIONEXPAND1(ri,rj,rk) GENLOOP(ri,rj,rk,-SHIFT1,N1-1+SHIFT1,-SHIFT2,N2-1+SHIFT2,-SHIFT3,N3-1+SHIFT3)
66 
67 #define WITHINACTIVESECTIONEXPAND1IS (-SHIFT1)
68 #define WITHINACTIVESECTIONEXPAND1IE (N1-1+SHIFT1)
69 #define WITHINACTIVESECTIONEXPAND1JS (-SHIFT2)
70 #define WITHINACTIVESECTIONEXPAND1JE (N2-1+SHIFT2)
71 #define WITHINACTIVESECTIONEXPAND1KS (-SHIFT3)
72 #define WITHINACTIVESECTIONEXPAND1KE (N3-1+SHIFT3)
73 
74 #endif
75 
76 
78 #if( DOGRIDSECTIONING )
79 #define WITHINACTIVEWITHBNDSECTION(ri,rj,rk) ( ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] \
80  && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] \
81  && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP] )
82 #else
83 #define WITHINACTIVEWITHBNDSECTION(ri,rj,rk) (ri >=-N1BND && ri<=N1-1+N1BND && rj>=-N2BND && rj<=N2-1+N2BND && rk>=-N3BND && rk<=N3-1+N3BND ) //always within active section since no sectioning (JCM: No, this is only comp+bnd cells)
84 #endif
85 
86 
88 #if( DOGRIDSECTIONING )
89 #define WITHINACTIVESTAGWITHBNDSECTIONX1(ri,rj,rk) ( ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= MIN(1+enerposreg[ACTIVEWITHBNDREGION][X1UP],N1-1+N1BND) \
90  && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] \
91  && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP] )
92 #define WITHINACTIVESTAGWITHBNDSECTIONX2(ri,rj,rk) ( ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] \
93  && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= MIN(1+enerposreg[ACTIVEWITHBNDREGION][X2UP],N2-1+N2BND) \
94  && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP] )
95 #define WITHINACTIVESTAGWITHBNDSECTIONX3(ri,rj,rk) ( ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] \
96  && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] \
97  && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= MIN(1+enerposreg[ACTIVEWITHBNDREGION][X3UP],N3-1+N3BND) )
98 #else
99 
100 #define WITHINACTIVESTAGWITHBNDSECTIONX1(ri,rj,rk) (ri >=-N1BND && ri<=N1-1+N1BND && rj>=-N2BND && rj<=N2-1+N2BND && rk>=-N3BND && rk<=N3-1+N3BND ) //always within active section since no sectioning (JCM: No, this is only comp+bnd cells)
101 #define WITHINACTIVESTAGWITHBNDSECTIONX2(ri,rj,rk) (ri >=-N1BND && ri<=N1-1+N1BND && rj>=-N2BND && rj<=N2-1+N2BND && rk>=-N3BND && rk<=N3-1+N3BND ) //always within active section since no sectioning (JCM: No, this is only comp+bnd cells)
102 #define WITHINACTIVESTAGWITHBNDSECTIONX3(ri,rj,rk) (ri >=-N1BND && ri<=N1-1+N1BND && rj>=-N2BND && rj<=N2-1+N2BND && rk>=-N3BND && rk<=N3-1+N3BND ) //always within active section since no sectioning (JCM: No, this is only comp+bnd cells)
103 #endif
104 
105 
106 
109 #if( DOGRIDSECTIONING )
110 #define WITHINACTIVEBNDSECTION(ri,rj,rk) ( \
111  (((ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri < enerposreg[ACTIVEREGION][X1DN]) || (ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && ri > enerposreg[ACTIVEREGION][X1UP])) && (rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP])) \
112  || (((rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj < enerposreg[ACTIVEREGION][X2DN]) || (rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rj > enerposreg[ACTIVEREGION][X2UP])) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP])) \
113  || (((rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk < enerposreg[ACTIVEREGION][X3DN]) || (rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP] && rk > enerposreg[ACTIVEREGION][X3UP])) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP])) \
114  )
115 #else
116 #define WITHINACTIVEBNDSECTION(ri,rj,rk) ( \
117  (((ri >= -N1BND && ri < 0) || (ri <= N1-1+N1BND && ri > N1-1)) && (rj >= -N2BND && rj <= N2-1+N2BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
118  || (((rj >= -N2BND && rj < 0) || (rj <= N2-1+N2BND && rj > N2-1)) && (ri >= -N1BND && ri <= N1-1+N1BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
119  || (((rk >= -N3BND && rk < 0) || (rk <= N3-1+N3BND && rk > N3-1)) && (rj >= -N2BND && rj <= N2-1+N2BND && ri >= -N1BND && ri <= N1-1+N1BND)) \
120  )
121 #endif
122 
125 #if( DOGRIDSECTIONING )
126 #define WITHINACTIVESTAGBNDSECTION(ri,rj,rk) ( \
127  (((ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEREGION][X1DN]) || (ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && ri > enerposreg[ACTIVEREGION][X1UP])) && (rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP])) \
128  || (((rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEREGION][X2DN]) || (rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rj > enerposreg[ACTIVEREGION][X2UP])) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP])) \
129  || (((rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEREGION][X3DN]) || (rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP] && rk > enerposreg[ACTIVEREGION][X3UP])) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP])) \
130  )
131 #else
132 #define WITHINACTIVESTAGBNDSECTION(ri,rj,rk) ( \
133  (((ri >= -N1BND && ri <= 0) || (ri <= N1-1+N1BND && ri > N1-1)) && (rj >= -N2BND && rj <= N2-1+N2BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
134  || (((rj >= -N2BND && rj <= 0) || (rj <= N2-1+N2BND && rj > N2-1)) && (ri >= -N1BND && ri <= N1-1+N1BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
135  || (((rk >= -N3BND && rk <= 0) || (rk <= N3-1+N3BND && rk > N3-1)) && (rj >= -N2BND && rj <= N2-1+N2BND && ri >= -N1BND && ri <= N1-1+N1BND)) \
136  )
137 #endif
138 
139 
140 
141 
142 
143 
144 
145 
146 
149 #if( DOGRIDSECTIONING )
150 #define WITHINACTIVEBNDSECTIONX1DN(ri,rj,rk) ( \
151  ( ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri < enerposreg[ACTIVEREGION][X1DN] ) && (rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP]) \
152  )
153 #define WITHINACTIVEBNDSECTIONX1UP(ri,rj,rk) ( \
154  ( ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && ri > enerposreg[ACTIVEREGION][X1UP] ) && (rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP]) \
155  )
156 
157 #define WITHINACTIVEBNDSECTIONX2DN(ri,rj,rk) ( \
158  ( rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj < enerposreg[ACTIVEREGION][X2DN]) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP]) \
159  )
160 #define WITHINACTIVEBNDSECTIONX2UP(ri,rj,rk) ( \
161  ( rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rj > enerposreg[ACTIVEREGION][X2UP]) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP]) \
162  )
163 
164 #define WITHINACTIVEBNDSECTIONX3DN(ri,rj,rk) ( \
165  ( rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk < enerposreg[ACTIVEREGION][X3DN]) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP]) \
166  )
167 #define WITHINACTIVEBNDSECTIONX3UP(ri,rj,rk) ( \
168  ( rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP] && rk > enerposreg[ACTIVEREGION][X3UP]) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP]) \
169  )
170 #else
171 #define WITHINACTIVEBNDSECTIONX1DN(ri,rj,rk) ( \
172  (((ri >= -N1BND && ri < 0) ) && (rj >= -N2BND && rj <= N2-1+N2BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
173  )
174 #define WITHINACTIVEBNDSECTIONX1UP(ri,rj,rk) ( \
175  (((ri <= N1-1+N1BND && ri > N1-1)) && (rj >= -N2BND && rj <= N2-1+N2BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
176  )
177 #define WITHINACTIVEBNDSECTIONX2DN(ri,rj,rk) ( \
178  (((rj >= -N2BND && rj < 0) ) && (ri >= -N1BND && ri <= N1-1+N1BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
179  )
180 #define WITHINACTIVEBNDSECTIONX2UP(ri,rj,rk) ( \
181  (((rj <= N2-1+N2BND && rj > N2-1)) && (ri >= -N1BND && ri <= N1-1+N1BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
182  )
183 #define WITHINACTIVEBNDSECTIONX3DN(ri,rj,rk) ( \
184  (((rk >= -N3BND && rk < 0) ) && (rj >= -N2BND && rj <= N2-1+N2BND && ri >= -N1BND && ri <= N1-1+N1BND)) \
185  )
186 #define WITHINACTIVEBNDSECTIONX3UP(ri,rj,rk) ( \
187  (((rk <= N3-1+N3BND && rk > N3-1)) && (rj >= -N2BND && rj <= N2-1+N2BND && ri >= -N1BND && ri <= N1-1+N1BND)) \
188  )
189 #endif
190 
191 
192 
195 #if( DOGRIDSECTIONING )
196 #define WITHINACTIVESTAGBNDSECTIONX1DN(ri,rj,rk) ( \
197  ( ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEREGION][X1DN] ) && (rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP]) \
198  )
199 #define WITHINACTIVESTAGBNDSECTIONX1UP(ri,rj,rk) ( \
200  ( ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && ri > enerposreg[ACTIVEREGION][X1UP] ) && (rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP]) \
201  )
202 
203 #define WITHINACTIVESTAGBNDSECTIONX2DN(ri,rj,rk) ( \
204  ( rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEREGION][X2DN]) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP]) \
205  )
206 #define WITHINACTIVESTAGBNDSECTIONX2UP(ri,rj,rk) ( \
207  ( rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP] && rj > enerposreg[ACTIVEREGION][X2UP]) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP]) \
208  )
209 
210 #define WITHINACTIVESTAGBNDSECTIONX3DN(ri,rj,rk) ( \
211  ( rk >= enerposreg[ACTIVEWITHBNDREGION][X3DN] && rk <= enerposreg[ACTIVEREGION][X3DN]) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP]) \
212  )
213 #define WITHINACTIVESTAGBNDSECTIONX3UP(ri,rj,rk) ( \
214  ( rk <= enerposreg[ACTIVEWITHBNDREGION][X3UP] && rk > enerposreg[ACTIVEREGION][X3UP]) && (ri >= enerposreg[ACTIVEWITHBNDREGION][X1DN] && ri <= enerposreg[ACTIVEWITHBNDREGION][X1UP] && rj >= enerposreg[ACTIVEWITHBNDREGION][X2DN] && rj <= enerposreg[ACTIVEWITHBNDREGION][X2UP]) \
215  )
216 #else
217 #define WITHINACTIVESTAGBNDSECTIONX1DN(ri,rj,rk) ( \
218  (((ri >= -N1BND && ri <= 0) ) && (rj >= -N2BND && rj <= N2-1+N2BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
219  )
220 #define WITHINACTIVESTAGBNDSECTIONX1UP(ri,rj,rk) ( \
221  (((ri <= N1-1+N1BND && ri > N1-1)) && (rj >= -N2BND && rj <= N2-1+N2BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
222  )
223 #define WITHINACTIVESTAGBNDSECTIONX2DN(ri,rj,rk) ( \
224  (((rj >= -N2BND && rj <= 0) ) && (ri >= -N1BND && ri <= N1-1+N1BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
225  )
226 #define WITHINACTIVESTAGBNDSECTIONX2UP(ri,rj,rk) ( \
227  (((rj <= N2-1+N2BND && rj > N2-1)) && (ri >= -N1BND && ri <= N1-1+N1BND && rk >= -N3BND && rk <= N3-1+N3BND)) \
228  )
229 #define WITHINACTIVESTAGBNDSECTIONX3DN(ri,rj,rk) ( \
230  (((rk >= -N3BND && rk <= 0) ) && (rj >= -N2BND && rj <= N2-1+N2BND && ri >= -N1BND && ri <= N1-1+N1BND)) \
231  )
232 #define WITHINACTIVESTAGBNDSECTIONX3UP(ri,rj,rk) ( \
233  (((rk <= N3-1+N3BND && rk > N3-1)) && (rj >= -N2BND && rj <= N2-1+N2BND && ri >= -N1BND && ri <= N1-1+N1BND)) \
234  )
235 #endif
236 
237 
238 
239 
240 
241 
242 
243 
244 extern int setsashawind_set_enerregiondef(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int (*enerregiondef)[NDIM] );
245 extern int sashawind_set_enerregionupdate(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int *updateeverynumsteps, int *everynumsteps);
246 
247 extern int torus_set_enerregiondef(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int (*enerregiondef)[NDIM] );
248 
249 extern int jet_set_enerregiondef(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int (*enerregiondef)[NDIM] );
250 extern int jet_set_myid(void);
251 
252 
254 extern int theproblem_set_enerregiondef(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int (*enerregiondef)[NDIM]);
255 extern int theproblem_set_enerregionupdate(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int *updateeverynumsteps, int *everynumsteps);
256 extern int theproblem_set_myid(void);
257 
258 
260 extern int init_gridsectioning(void);
261 extern int bound_gridsectioning(int ispstag, FTYPE (*prim)[NSTORE2][NSTORE3][NPR], FTYPE (*pstag)[NSTORE2][NSTORE3][NPR], FTYPE (*ucons)[NSTORE2][NSTORE3][NPR], int finalstep);
262 extern int findandsetactivesection(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime );
263 extern int findindexfromradius(FTYPE xr, int *xcpupos1, int *xi);
264 extern int setactivesection(int (*abs)[NDIM], int doprintout);
265 
266 extern void reset_dothisenerregion(int initialcall);
267 
268 extern int recompute_fluxpositions(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime );
269 extern int setgeneral_enerregion(int (*enerregiondef)[NDIM], int doprintout, int whichregion, int whichbndregion);
270 
271 
272 extern int setgridsectioning(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime );
273 
274 
275 
276 
277 
278 extern int setflux(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime );
279 extern int setflux_set_enerregiondef(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int (*enerregiondef)[NDIM] );
280 
281 extern int sethorizonflux(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime );
282 extern int sethorizonflux_set_enerregiondef(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int (*enerregiondef)[NDIM] );
283 
284 extern int settrueglobalregion(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime );
285 extern int settrueglobalregion_set_enerregiondef(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime, int (*enerregiondef)[NDIM]);
286 
287 extern int setjetflux(int initialcall, int timeorder, int numtimeorders, long int thenstep, FTYPE thetime );
288 
289 
290 
291 extern int compute_numcompzones(int (*sectiondef)[NDIM], long long int *localnumcompzones);
292