166 Real h_xi, h_eta, h_zeta;
173 Real px_hi = (
x(i+1,j,k) -
x(i,j,k)) * dxinv;
176 Real pz_hi_md_hi = Real(0.5) * (
x(i+1,j ,k+1) +
x(i ,j ,k+1)
177 -
x(i+1,j ,k ) -
x(i ,j ,k ) );
178 h_xi = Real(0.25) * ( zp(i+1,j ,k+1) - zp(i-1,j ,k+1)
179 +zp(i+1,j+1,k+1) - zp(i-1,j+1,k+1) ) * dxinv;
180 h_zeta = Real(0.25) * ( zp(i+1,j ,k+2) - zp(i+1,j ,k )
181 +zp(i+1,j+1,k+2) - zp(i+1,j+1,k ) );
182 pz_hi_md_hi *= h_xi / h_zeta;
185 Real pz_hi_md_lo = Real(0.5) * (
x(i+1,j ,k ) +
x(i ,j ,k )
186 -
x(i+1,j ,k-1) -
x(i ,j ,k-1) );
187 h_xi = Real(0.25) * ( zp(i+1,j ,k ) - zp(i-1,j ,k )
188 +zp(i+1,j+1,k ) - zp(i-1,j+1,k ) ) * dxinv;
189 h_zeta = Real(0.25) * ( zp(i+1,j ,k+1) - zp(i+1,j ,k-1)
190 +zp(i+1,j+1,k+1) - zp(i+1,j+1,k-1) );
191 pz_hi_md_lo *= h_xi / h_zeta;
194 px_hi -= Real(0.5) * ( pz_hi_md_hi + pz_hi_md_lo );
199 Real px_lo = (
x(i,j,k) -
x(i-1,j,k)) * dxinv;
202 Real pz_lo_md_hi = Real(0.5) * (
x(i,j,k+1) +
x(i-1,j,k+1)
203 -
x(i,j,k ) -
x(i-1,j,k ) );
204 h_xi = Real(0.25) * ( zp(i,j ,k+1) - zp(i-2,j ,k+1)
205 +zp(i,j+1,k+1) - zp(i-2,j+1,k+1) ) * dxinv;
206 h_zeta = Real(0.25) * ( zp(i,j ,k+2) - zp(i ,j ,k )
207 +zp(i,j+1,k+2) - zp(i ,j+1,k ) );
208 pz_lo_md_hi *= h_xi / h_zeta;
211 Real pz_lo_md_lo = Real(0.5) * (
x(i,j,k ) +
x(i-1,j,k )
212 -
x(i,j,k-1) -
x(i-1,j,k-1) );
213 h_xi = Real(0.25) * ( zp(i,j ,k ) - zp(i-2,j ,k )
214 +zp(i,j+1,k ) - zp(i-2,j+1,k ) ) * dxinv;
215 h_zeta = Real(0.25) * ( zp(i,j ,k+1) - zp(i ,j ,k-1)
216 +zp(i,j+1,k+1) - zp(i ,j+1,k-1) );
217 pz_lo_md_lo *= h_xi / h_zeta;
220 px_lo -= Real(0.5) * ( pz_lo_md_hi + pz_lo_md_lo );
226 Real py_hi = (
x(i,j+1,k) -
x(i,j,k)) * dyinv;
229 Real pz_md_hi_hi = Real(0.5) * (
x(i,j+1,k+1) +
x(i,j,k+1)
230 -
x(i,j+1,k ) -
x(i,j,k ) );
231 h_eta = Real(0.25) * ( zp(i ,j+1,k+1) - zp(i ,j-1,k+1)
232 +zp(i+1,j+1,k+1) - zp(i+1,j-1,k+1) ) * dyinv;
233 h_zeta = Real(0.25) * ( zp(i ,j+1,k+2) - zp(i ,j+1,k )
234 +zp(i+1,j+1,k+2) - zp(i+1,j+1,k ) );
235 pz_md_hi_hi *= h_eta/ h_zeta;
238 Real pz_md_hi_lo = Real(0.5) * (
x(i,j+1,k ) +
x(i,j,k )
239 -
x(i,j+1,k-1) -
x(i,j,k-1) );
240 h_eta = Real(0.25) * ( zp(i ,j+1,k ) - zp(i ,j-1,k)
241 +zp(i+1,j+1,k ) - zp(i+1,j-1,k) ) * dyinv;
242 h_zeta = Real(0.25) * ( zp(i ,j+1,k+1) - zp(i ,j+1,k-1)
243 +zp(i+1,j+1,k+1) - zp(i+1,j+1,k-1) );
244 pz_md_hi_lo *= h_eta/ h_zeta;
247 py_hi -= Real(0.5) * ( pz_md_hi_hi + pz_md_hi_lo );
253 Real py_lo = (
x(i,j,k) -
x(i,j-1,k)) * dyinv;
256 Real pz_md_lo_hi = Real(0.5) * (
x(i ,j,k+1) +
x(i ,j-1,k+1)
257 -
x(i ,j,k ) -
x(i ,j-1,k ) );
258 h_eta = Real(0.25) * ( zp(i ,j,k+1) - zp(i ,j-2,k+1)
259 +zp(i+1,j,k+1) - zp(i+1,j-2,k+1) ) * dyinv;
260 h_zeta = Real(0.25) * ( zp(i ,j,k+2) - zp(i ,j ,k )
261 +zp(i+1,j,k+2) - zp(i+1,j ,k ) );
262 pz_md_lo_hi *= h_eta/ h_zeta;
265 Real pz_md_lo_lo = Real(0.5) * (
x(i ,j,k ) +
x(i ,j-1,k )
266 -
x(i ,j,k-1) -
x(i ,j-1,k-1) );
267 h_eta = Real(0.25) * ( zp(i ,j,k ) - zp(i ,j-2,k )
268 +zp(i+1,j,k ) - zp(i+1,j-2,k ) ) * dyinv;
269 h_zeta = Real(0.25) * ( zp(i ,j,k+1) - zp(i ,j ,k-1)
270 +zp(i+1,j,k+1) - zp(i+1,j ,k-1) );
271 pz_md_lo_lo *= h_eta/ h_zeta;
274 py_lo -= Real(0.5) * ( pz_md_lo_hi + pz_md_lo_lo );
280 Real pz_hi =
x(i,j,k+1) -
x(i,j,k );
281 Real hzeta_inv_on_zhi = 8.0 / ( (zp(i,j,k+2) + zp(i+1,j,k+2) + zp(i,j+1,k+2) + zp(i+1,j+1,k+2))
282 -(zp(i,j,k ) + zp(i+1,j,k ) + zp(i,j+1,k ) + zp(i+1,j+1,k )) );
283 pz_hi *= hzeta_inv_on_zhi;
286 Real px_hi_md_hi = Real(0.5) * (
x(i+1,j,k+1) -
x(i ,j ,k+1)
287 +
x(i+1,j,k ) -
x(i ,j ,k )) * dxinv;
288 Real px_lo_md_hi = Real(0.5) * (
x(i ,j,k+1) -
x(i-1,j ,k+1)
289 +
x(i ,j,k ) -
x(i-1,j ,k )) * dxinv;
290 Real py_md_hi_hi = Real(0.5) * (
x(i,j+1,k+1) -
x(i ,j ,k+1)
291 +
x(i,j+1,k ) -
x(i ,j ,k )) * dyinv;
292 Real py_md_lo_hi = Real(0.5) * (
x(i,j ,k+1) -
x(i ,j-1,k+1)
293 +
x(i,j ,k ) -
x(i ,j-1,k )) * dyinv;
296 Real h_xi_on_zhi = 0.5 * ( zp(i+1,j+1,k+1) + zp(i+1,j,k+1) - zp(i,j+1,k+1) - zp(i,j,k+1) ) * dxinv;
297 Real h_eta_on_zhi = 0.5 * ( zp(i+1,j+1,k+1) + zp(i,j+1,k+1) - zp(i+1,j,k+1) - zp(i,j,k+1) ) * dyinv;
301 pz_hi -= 0.5 * h_xi_on_zhi * ( (px_hi_md_hi + px_lo_md_hi) - (pz_hi_md_hi + pz_lo_md_hi) );
302 pz_hi -= 0.5 * h_eta_on_zhi * ( (py_md_hi_hi + py_md_lo_hi) - (pz_md_hi_hi + pz_md_lo_hi) );
308 Real pz_lo =
x(i,j,k ) -
x(i,j,k-1);
309 Real hzeta_inv_on_zlo = 8.0 / ( (zp(i,j,k+1) + zp(i+1,j,k+1) + zp(i,j+1,k+1) + zp(i+1,j+1,k+1))
310 -(zp(i,j,k-1) + zp(i+1,j,k-1) + zp(i,j+1,k-1) + zp(i+1,j+1,k-1)) );
311 pz_lo *= hzeta_inv_on_zlo;
314 Real px_hi_md_lo = Real(0.5) * (
x(i+1,j ,k ) -
x(i ,j ,k )
315 +
x(i+1,j ,k-1) -
x(i ,j ,k-1)) * dxinv;
316 Real px_lo_md_lo = Real(0.5) * (
x(i ,j ,k ) -
x(i-1,j ,k )
317 +
x(i ,j ,k-1) -
x(i-1,j ,k-1)) * dxinv;
318 Real py_md_hi_lo = Real(0.5) * (
x(i ,j+1,k ) -
x(i ,j ,k )
319 +
x(i ,j+1,k-1) -
x(i ,j ,k-1)) * dyinv;
320 Real py_md_lo_lo = Real(0.5) * (
x(i ,j ,k ) -
x(i ,j-1,k )
321 +
x(i ,j ,k-1) -
x(i ,j-1,k-1)) * dyinv;
324 Real h_xi_on_zlo = 0.5 * (zp(i+1,j+1,k) + zp(i+1,j,k) - zp(i,j+1,k) - zp(i,j,k)) * dxinv;
325 Real h_eta_on_zlo = 0.5 * (zp(i+1,j+1,k) + zp(i,j+1,k) - zp(i+1,j,k) - zp(i,j,k)) * dyinv;
329 pz_lo -= 0.5 * h_xi_on_zlo * ( (px_hi_md_lo + px_lo_md_lo) - (pz_hi_md_lo + pz_lo_md_lo) );
330 pz_lo -= 0.5 * h_eta_on_zlo * ( (py_md_hi_lo + py_md_lo_lo) - (pz_md_hi_lo + pz_md_lo_lo) );
353 if (k == 0) pz_lo = 0.0;
355 y(i,j,k) = (ax(i+1,j,k)*px_hi - ax(i,j,k)*px_lo) * dxinv
356 +(ay(i,j+1,k)*py_hi - ay(i,j,k)*py_lo) * dyinv
357 +( pz_hi - pz_lo) * dzinv;
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T terrpoisson_flux_x(int i, int j, int k, amrex::Array4< T const > const &sol, amrex::Array4< T const > const &zp, T dxinv) noexcept
Definition: ERF_TerrainPoisson_3D_K.H:8
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T terrpoisson_flux_z(int i, int j, int k, amrex::Array4< T const > const &sol, amrex::Array4< T const > const &zp, T dxinv, T dyinv) noexcept
Definition: ERF_TerrainPoisson_3D_K.H:83
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T terrpoisson_flux_y(int i, int j, int k, amrex::Array4< T const > const &sol, amrex::Array4< T const > const &zp, T dyinv) noexcept
Definition: ERF_TerrainPoisson_3D_K.H:46