Function for computing the advective tendency for the momentum equations when using constant dz with no EB and no terrain-fitted coordinates.
71 auto dxInv = cellSizeInv[0], dyInv = cellSizeInv[1], dzInv = cellSizeInv[2];
73 const bool use_terrain_fitted_coords = ( terrain_type == TerrainType::StaticFittedMesh ||
74 terrain_type == TerrainType::MovingFittedMesh);
79 Box box2d_u(bxx); box2d_u.setRange(2,0); box2d_u.grow({3,3,0});
80 Box box2d_v(bxy); box2d_v.setRange(2,0); box2d_v.grow({3,3,0});
82 FArrayBox mf_ux_invFAB(box2d_u,1,The_Async_Arena());
83 FArrayBox mf_uy_invFAB(box2d_u,1,The_Async_Arena());
84 const Array4<Real>& mf_ux_inv = mf_ux_invFAB.array();
85 const Array4<Real>& mf_uy_inv = mf_uy_invFAB.array();
87 FArrayBox mf_vx_invFAB(box2d_v,1,The_Async_Arena());
88 FArrayBox mf_vy_invFAB(box2d_v,1,The_Async_Arena());
89 const Array4<Real>& mf_vx_inv = mf_vx_invFAB.array();
90 const Array4<Real>& mf_vy_inv = mf_vy_invFAB.array();
93 [=] AMREX_GPU_DEVICE (
int i,
int j,
int) noexcept
95 mf_ux_inv(i,j,0) =
one / mf_ux(i,j,0);
96 mf_uy_inv(i,j,0) =
one / mf_uy(i,j,0);
98 [=] AMREX_GPU_DEVICE (
int i,
int j,
int) noexcept
100 mf_vx_inv(i,j,0) =
one / mf_vx(i,j,0);
101 mf_vy_inv(i,j,0) =
one / mf_vy(i,j,0);
108 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
110 Real xflux_hi =
fourth * (rho_u(i, j , k) * mf_uy_inv(i,j,0) + rho_u(i+1, j , k) * mf_uy_inv(i+1,j,0)) * (u(i+1,j,k) + u(i,j,k));
111 Real xflux_lo =
fourth * (rho_u(i, j , k) * mf_uy_inv(i,j,0) + rho_u(i-1, j , k) * mf_uy_inv(i-1,j,0)) * (u(i-1,j,k) + u(i,j,k));
113 Real yflux_hi =
fourth * (rho_v(i, j+1, k) * mf_vx_inv(i,j+1,0) + rho_v(i-1, j+1, k) * mf_vx_inv(i-1,j+1,0)) * (u(i,j+1,k) + u(i,j,k));
114 Real yflux_lo =
fourth * (rho_v(i, j , k) * mf_vx_inv(i,j ,0) + rho_v(i-1, j , k) * mf_vx_inv(i-1,j ,0)) * (u(i,j-1,k) + u(i,j,k));
119 Real mfsq = mf_ux(i,j,0) * mf_uy(i,j,0);
121 Real advectionSrc = (xflux_hi - xflux_lo) *
dxInv * mfsq
122 + (yflux_hi - yflux_lo) * dyInv * mfsq
123 + (zflux_hi - zflux_lo) * dzInv;
124 rho_u_rhs(i, j, k) = -advectionSrc;
126 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
128 Real xflux_hi =
fourth * (rho_u(i+1, j, k) * mf_uy_inv(i+1,j,0) + rho_u(i+1, j-1, k) * mf_uy_inv(i+1,j-1,0)) * (v(i+1,j,k) + v(i,j,k));
129 Real xflux_lo =
fourth * (rho_u(i , j, k) * mf_uy_inv(i ,j,0) + rho_u(i , j-1, k) * mf_uy_inv(i ,j-1,0)) * (v(i-1,j,k) + v(i,j,k));
131 Real yflux_hi =
fourth * (rho_v(i ,j+1,k) * mf_vx_inv(i,j+1,0) + rho_v(i ,j ,k) * mf_vx_inv(i,j ,0)) * (v(i,j+1,k) + v(i,j,k));
132 Real yflux_lo =
fourth * (rho_v(i ,j ,k) * mf_vx_inv(i,j ,0) + rho_v(i ,j-1,k) * mf_vx_inv(i,j-1,0)) * (v(i,j-1,k) + v(i,j,k));
137 Real mfsq = mf_vx(i,j,0) * mf_vy(i,j,0);
139 Real advectionSrc = (xflux_hi - xflux_lo) *
dxInv * mfsq
140 + (yflux_hi - yflux_lo) * dyInv * mfsq
141 + (zflux_hi - zflux_lo) * dzInv;
142 rho_v_rhs(i, j, k) = -advectionSrc;
144 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
146 Real xflux_hi =
fourth*(rho_u(i+1,j ,k) + rho_u(i+1, j, k-1)) * mf_uy_inv(i+1,j ,0) * (
w(i+1,j,k) +
w(i,j,k));
147 Real xflux_lo =
fourth*(rho_u(i ,j ,k) + rho_u(i , j, k-1)) * mf_uy_inv(i ,j ,0) * (
w(i-1,j,k) +
w(i,j,k));
149 Real yflux_hi =
fourth*(rho_v(i ,j+1,k) + rho_v(i, j+1, k-1)) * mf_vx_inv(i ,j+1,0) * (
w(i,j+1,k) +
w(i,j,k));
150 Real yflux_lo =
fourth*(rho_v(i ,j ,k) + rho_v(i, j , k-1)) * mf_vx_inv(i ,j ,0) * (
w(i,j-1,k) +
w(i,j,k));
154 Real zflux_hi = (k == hi_z_face) ?
omega(i,j,k) *
w(i,j,k) :
157 Real mfsq = mf_mx(i,j,0) * mf_my(i,j,0);
159 Real advectionSrc = (xflux_hi - xflux_lo) *
dxInv * mfsq
160 + (yflux_hi - yflux_lo) * dyInv * mfsq
161 + (zflux_hi - zflux_lo) * dzInv;
162 rho_w_rhs(i, j, k) = -advectionSrc;
168 AdvectionSrcForMomVert_N<CENTERED2>(bxx, bxy, bxz,
169 rho_u_rhs, rho_v_rhs, rho_w_rhs,
170 rho_u, rho_v,
omega, u, v,
w,
171 cellSizeInv, stretched_dz_d,
172 mf_mx, mf_ux_inv, mf_vx_inv,
173 mf_my, mf_uy_inv, mf_vy_inv,
174 horiz_upw_frac, vert_upw_frac,
175 vert_adv_type, lo_z_face, hi_z_face);
177 AdvectionSrcForMomVert_N<UPWIND3>(bxx, bxy, bxz,
178 rho_u_rhs, rho_v_rhs, rho_w_rhs,
179 rho_u, rho_v,
omega, u, v,
w,
180 cellSizeInv, stretched_dz_d,
181 mf_mx, mf_ux_inv, mf_vx_inv,
182 mf_my, mf_uy_inv, mf_vy_inv,
183 horiz_upw_frac, vert_upw_frac,
184 vert_adv_type, lo_z_face, hi_z_face);
186 AdvectionSrcForMomVert_N<CENTERED4>(bxx, bxy, bxz,
187 rho_u_rhs, rho_v_rhs, rho_w_rhs,
188 rho_u, rho_v,
omega, u, v,
w,
189 cellSizeInv, stretched_dz_d,
190 mf_mx, mf_ux_inv, mf_vx_inv,
191 mf_my, mf_uy_inv, mf_vy_inv,
192 horiz_upw_frac, vert_upw_frac,
193 vert_adv_type, lo_z_face, hi_z_face);
195 AdvectionSrcForMomVert_N<UPWIND5>(bxx, bxy, bxz,
196 rho_u_rhs, rho_v_rhs, rho_w_rhs,
197 rho_u, rho_v,
omega, u, v,
w,
198 cellSizeInv, stretched_dz_d,
199 mf_mx, mf_ux_inv, mf_vx_inv,
200 mf_my, mf_uy_inv, mf_vy_inv,
201 horiz_upw_frac, vert_upw_frac,
202 vert_adv_type, lo_z_face, hi_z_face);
204 AdvectionSrcForMomVert_N<CENTERED6>(bxx, bxy, bxz,
205 rho_u_rhs, rho_v_rhs, rho_w_rhs,
206 rho_u, rho_v,
omega, u, v,
w,
207 cellSizeInv, stretched_dz_d,
208 mf_mx, mf_ux_inv, mf_vx_inv,
209 mf_my, mf_uy_inv, mf_vy_inv,
210 horiz_upw_frac, vert_upw_frac,
211 vert_adv_type, lo_z_face, hi_z_face);
213 AdvectionSrcForMomVert_N<WENO3>(bxx, bxy, bxz,
214 rho_u_rhs, rho_v_rhs, rho_w_rhs,
215 rho_u, rho_v,
omega, u, v,
w,
216 cellSizeInv, stretched_dz_d,
217 mf_mx, mf_ux_inv, mf_vx_inv,
218 mf_my, mf_uy_inv, mf_vy_inv,
219 horiz_upw_frac, vert_upw_frac,
220 vert_adv_type, lo_z_face, hi_z_face);
222 AdvectionSrcForMomVert_N<WENO_Z3>(bxx, bxy, bxz,
223 rho_u_rhs, rho_v_rhs, rho_w_rhs,
224 rho_u, rho_v,
omega, u, v,
w,
225 cellSizeInv, stretched_dz_d,
226 mf_mx, mf_ux_inv, mf_vx_inv,
227 mf_my, mf_uy_inv, mf_vy_inv,
228 horiz_upw_frac, vert_upw_frac,
229 vert_adv_type, lo_z_face, hi_z_face);
231 AdvectionSrcForMomVert_N<WENO_MZQ3>(bxx, bxy, bxz,
232 rho_u_rhs, rho_v_rhs, rho_w_rhs,
233 rho_u, rho_v,
omega, u, v,
w,
234 cellSizeInv, stretched_dz_d,
235 mf_mx, mf_ux_inv, mf_vx_inv,
236 mf_my, mf_uy_inv, mf_vy_inv,
237 horiz_upw_frac, vert_upw_frac,
238 vert_adv_type, lo_z_face, hi_z_face);
240 AdvectionSrcForMomVert_N<WENO5>(bxx, bxy, bxz,
241 rho_u_rhs, rho_v_rhs, rho_w_rhs,
242 rho_u, rho_v,
omega, u, v,
w,
243 cellSizeInv, stretched_dz_d,
244 mf_mx, mf_ux_inv, mf_vx_inv,
245 mf_my, mf_uy_inv, mf_vy_inv,
246 horiz_upw_frac, vert_upw_frac,
247 vert_adv_type, lo_z_face, hi_z_face);
249 AdvectionSrcForMomVert_N<WENO_Z5>(bxx, bxy, bxz,
250 rho_u_rhs, rho_v_rhs, rho_w_rhs,
251 rho_u, rho_v,
omega, u, v,
w,
252 cellSizeInv, stretched_dz_d,
253 mf_mx, mf_ux_inv, mf_vx_inv,
254 mf_my, mf_uy_inv, mf_vy_inv,
255 horiz_upw_frac, vert_upw_frac,
256 vert_adv_type, lo_z_face, hi_z_face);
258 AdvectionSrcForMomVert_N<WENO7>(bxx, bxy, bxz,
259 rho_u_rhs, rho_v_rhs, rho_w_rhs,
260 rho_u, rho_v,
omega, u, v,
w,
261 cellSizeInv, stretched_dz_d,
262 mf_mx, mf_ux_inv, mf_vx_inv,
263 mf_my, mf_uy_inv, mf_vy_inv,
264 horiz_upw_frac, vert_upw_frac,
265 vert_adv_type, lo_z_face, hi_z_face);
267 AdvectionSrcForMomVert_N<WENO_Z7>(bxx, bxy, bxz,
268 rho_u_rhs, rho_v_rhs, rho_w_rhs,
269 rho_u, rho_v,
omega, u, v,
w,
270 cellSizeInv, stretched_dz_d,
271 mf_mx, mf_ux_inv, mf_vx_inv,
272 mf_my, mf_uy_inv, mf_vy_inv,
273 horiz_upw_frac, vert_upw_frac,
274 vert_adv_type, lo_z_face, hi_z_face);
constexpr amrex::Real one
Definition: ERF_Constants.H:9
constexpr amrex::Real fourth
Definition: ERF_Constants.H:14
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
ParallelFor(fab_box, [=] AMREX_GPU_DEVICE(int i, int j, int k) { qrcuten_arr(i, j, k)=Real(0);qscuten_arr(i, j, k)=Real(0);qicuten_arr(i, j, k)=Real(0);})
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:22
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_ASSERT_WITH_MESSAGE(wbar_cutoff_min > wbar_cutoff_max, "ERROR: wbar_cutoff_min < wbar_cutoff_max")
@ omega
Definition: ERF_Morrison.H:54