Function for computing the strain rates for EB.
48 Box domain_xy = convert(domain, tbxxy.ixType());
49 Box domain_xz = convert(domain, tbxxz.ixType());
50 Box domain_yz = convert(domain, tbxyz.ixType());
52 const auto& dom_lo = lbound(domain);
53 const auto& dom_hi = ubound(domain);
57 Array4<const EBCellFlag> u_cflag = (ebfact.
get_u_const_factory())->getMultiEBCellFlagFab()[mfi].const_array();
58 Array4<const EBCellFlag> v_cflag = (ebfact.
get_v_const_factory())->getMultiEBCellFlagFab()[mfi].const_array();
59 Array4<const EBCellFlag> w_cflag = (ebfact.
get_w_const_factory())->getMultiEBCellFlagFab()[mfi].const_array();
65 xl_v_dir = ( xl_v_dir && (tbxxy.smallEnd(0) == domain_xy.smallEnd(0)) );
70 xh_v_dir = ( xh_v_dir && (tbxxy.bigEnd(0) == domain_xy.bigEnd(0)) );
75 xl_w_dir = ( xl_w_dir && (tbxxz.smallEnd(0) == domain_xz.smallEnd(0)) );
80 xh_w_dir = ( xh_w_dir && (tbxxz.bigEnd(0) == domain_xz.bigEnd(0)) );
86 yl_u_dir = ( yl_u_dir && (tbxxy.smallEnd(1) == domain_xy.smallEnd(1)) );
91 yh_u_dir = ( yh_u_dir && (tbxxy.bigEnd(1) == domain_xy.bigEnd(1)) );
96 yl_w_dir = ( yl_w_dir && (tbxyz.smallEnd(1) == domain_yz.smallEnd(1)) );
101 yh_w_dir = ( yh_w_dir && (tbxyz.bigEnd(1) == domain_yz.bigEnd(1)) );
106 zl_u_dir = ( zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) );
110 zh_u_dir = ( zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2)) );
114 zl_v_dir = ( zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2)) );
118 zh_v_dir = ( zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2)) );
124 Box planexy = tbxxy; planexy.setBig(0, planexy.smallEnd(0) );
128 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
129 if (!need_to_test || u(dom_lo.x,j,k) >=
zero) {
130 tau12(i,j,k) = myhalf * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]
131 + (-(Real(8.)/three) * v(i-1,j,k) + three * v(i,j,k) - third * v(i+1,j,k))*dxInv[0] );
133 tau12(i,j,k) = myhalf * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1] +
134 (v(i, j, k) - v(i-1, j, k))*dxInv[0] );
140 Box planexy = tbxxy; planexy.setSmall(0, planexy.bigEnd(0) );
144 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
145 if (!need_to_test || u(dom_hi.x+1,j,k) <=
zero) {
146 tau12(i,j,k) = myhalf * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]
147 - (-(Real(8.)/three) * v(i,j,k) + three * v(i-1,j,k) - third * v(i-2,j,k))*dxInv[0] );
149 tau12(i,j,k) = myhalf * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1] +
150 (v(i, j, k) - v(i-1, j, k))*dxInv[0] );
156 Box planexz = tbxxz; planexz.setBig(0, planexz.smallEnd(0) );
160 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
161 Real du_dz = (u(i, j, k) - u(i, j, k-1))*
dxInv[2];
162 if (!need_to_test || u(dom_lo.x,j,k) >=
zero) {
167 + (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0] );
170 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
175 Box planexz = tbxxz; planexz.setSmall(0, planexz.bigEnd(0) );
179 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
180 Real du_dz = (u(i, j, k) - u(i, j, k-1))*
dxInv[2];
181 if (!need_to_test || u(dom_hi.x+1,j,k) <=
zero) {
186 + (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0] );
189 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
197 Box planexy = tbxxy; planexy.setBig(1, planexy.smallEnd(1) );
201 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
202 if (!need_to_test || v(i,dom_lo.y,k) >=
zero) {
203 tau12(i,j,k) = myhalf * ( (-(Real(8.)/three) * u(i,j-1,k) + three * u(i,j,k) - third * u(i,j+1,k))*dxInv[1]
204 + (v(i, j, k) - v(i-1, j, k))*dxInv[0] );
206 tau12(i,j,k) = myhalf * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]
207 + (v(i, j, k) - v(i-1, j, k))*dxInv[0] );
213 Box planexy = tbxxy; planexy.setSmall(1, planexy.bigEnd(1) );
217 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
218 if (!need_to_test || v(i,dom_hi.y+1,k) <=
zero) {
219 tau12(i,j,k) = myhalf * ( -(-(Real(8.)/three) * u(i,j,k) + three * u(i,j-1,k) - third * u(i,j-2,k))*dxInv[1]
220 + (v(i, j, k) - v(i-1, j, k))*dxInv[0] );
222 tau12(i,j,k) = myhalf * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]
223 + (v(i, j, k) - v(i-1, j, k))*dxInv[0] );
229 Box planeyz = tbxyz; planeyz.setBig(1, planeyz.smallEnd(1) );
233 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
234 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*
dxInv[2];
235 if (!need_to_test || v(i,dom_lo.y,k) >=
zero) {
240 + (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1] );
243 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
248 Box planeyz = tbxyz; planeyz.setSmall(1, planeyz.bigEnd(1) );
252 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
253 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*
dxInv[2];
254 if (!need_to_test || v(i,dom_hi.y+1,k) <=
zero) {
259 + (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1] );
262 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
270 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2) );
273 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
276 + (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0] );
278 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
283 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
286 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
289 + (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0] );
291 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
296 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
299 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
302 + (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1] );
304 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
309 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
312 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
315 + (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1] );
317 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
324 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
327 bool can_lo_x = (i-2 >= dom_lo.x);
328 bool can_hi_x = (i+3 <= dom_hi.x+1);
329 if (can_lo_x && u_cflag(i+1,j,k).isCovered() && u_cflag(i,j,k).isSingleValued()) {
330 du_dx = (
two*u(i, j, k) -
three*u(i-1, j, k) + u(i-2, j, k))*
dxInv[0];
331 }
else if (can_hi_x && u_cflag(i,j,k).isCovered() && u_cflag(i+1,j,k).isSingleValued()) {
332 du_dx = (-
two*u(i+1, j, k) +
three*u(i+2, j, k) - u(i+3, j, k))*
dxInv[0];
334 du_dx = (u(i+1, j, k) - u(i, j, k))*
dxInv[0];
338 bool can_lo_y = (j-2 >= dom_lo.y);
339 bool can_hi_y = (j+3 <= dom_hi.y+1);
340 if (can_lo_y && v_cflag(i,j+1,k).isCovered() && v_cflag(i,j,k).isSingleValued()) {
341 dv_dy = (
two*v(i, j, k) -
three*v(i, j-1, k) + v(i, j-2, k))*
dxInv[1];
342 }
else if (can_hi_y && v_cflag(i,j,k).isCovered() && v_cflag(i,j+1,k).isSingleValued()) {
343 dv_dy = (-
two*v(i, j+1, k) +
three*v(i, j+2, k) - v(i, j+3, k))*
dxInv[1];
345 dv_dy = (v(i, j+1, k) - v(i, j, k))*
dxInv[1];
349 bool can_lo_z = (k-2 >= dom_lo.z);
350 bool can_hi_z = (k+3 <= dom_hi.z+1);
351 if (can_lo_z && w_cflag(i,j,k+1).isCovered() && w_cflag(i,j,k).isSingleValued()) {
353 }
else if (can_hi_z && w_cflag(i,j,k).isCovered() && w_cflag(i,j,k+1).isSingleValued()) {
356 dw_dz = (
w(i, j, k+1) -
w(i, j, k))*
dxInv[2];
359 tau11(i,j,k) = du_dx;
360 tau22(i,j,k) = dv_dy;
361 tau33(i,j,k) = dw_dz;
366 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
369 bool can_lo_y_du = (j-3 >= dom_lo.y);
370 bool can_hi_y_du = (j+2 <= dom_hi.y);
371 if (can_lo_y_du && u_cflag(i,j,k).isCovered() && u_cflag(i,j-1,k).isSingleValued()) {
372 du_dy = (
two*u(i, j-1, k) -
three*u(i, j-2, k) + u(i, j-3, k))*
dxInv[1];
373 }
else if (can_hi_y_du && u_cflag(i,j-1,k).isCovered() && u_cflag(i,j,k).isSingleValued()) {
374 du_dy = (-
two*u(i, j, k) +
three*u(i, j+1, k) - u(i, j+2, k))*
dxInv[1];
376 du_dy = (u(i, j, k) - u(i, j-1, k))*
dxInv[1];
380 bool can_lo_x_dv = (i-3 >= dom_lo.x);
381 bool can_hi_x_dv = (i+2 <= dom_hi.x);
382 if (can_lo_x_dv && v_cflag(i,j,k).isCovered() && v_cflag(i-1,j,k).isSingleValued()) {
383 dv_dx = (
two*v(i-1, j, k) -
three*v(i-2, j, k) + v(i-3, j, k))*
dxInv[0];
384 }
else if (can_hi_x_dv && v_cflag(i-1,j,k).isCovered() && v_cflag(i,j,k).isSingleValued()) {
385 dv_dx = (-
two*v(i, j, k) +
three*v(i+1, j, k) - v(i+2, j, k))*
dxInv[0];
387 dv_dx = (v(i, j, k) - v(i-1, j, k))*
dxInv[0];
392 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
395 bool can_lo_z_du = (k-3 >= dom_lo.z);
396 bool can_hi_z_du = (k+2 <= dom_hi.z);
397 if (can_lo_z_du && u_cflag(i,j,k).isCovered() && u_cflag(i,j,k-1).isSingleValued()) {
398 du_dz = (
two*u(i, j, k-1) -
three*u(i, j, k-2) + u(i, j, k-3))*
dxInv[2];
399 }
else if (can_hi_z_du && u_cflag(i,j,k-1).isCovered() && u_cflag(i,j,k).isSingleValued()) {
400 du_dz = (-
two*u(i, j, k) +
three*u(i, j, k+1) - u(i, j, k+2))*
dxInv[2];
402 du_dz = (u(i, j, k) - u(i, j, k-1))*
dxInv[2];
406 bool can_lo_x_dw = (i-3 >= dom_lo.x);
407 bool can_hi_x_dw = (i+2 <= dom_hi.x);
408 if (can_lo_x_dw && w_cflag(i,j,k).isCovered() && w_cflag(i-1,j,k).isSingleValued()) {
410 }
else if (can_hi_x_dw && w_cflag(i-1,j,k).isCovered() && w_cflag(i,j,k).isSingleValued()) {
413 dw_dx = (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0];
418 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
420 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
423 bool can_lo_z_dv = (k-3 >= dom_lo.z);
424 bool can_hi_z_dv = (k+2 <= dom_hi.z);
425 if (can_lo_z_dv && v_cflag(i,j,k).isCovered() && v_cflag(i,j,k-1).isSingleValued()) {
426 dv_dz = (
two*v(i, j, k-1) -
three*v(i, j, k-2) + v(i, j, k-3))*
dxInv[2];
427 }
else if (can_hi_z_dv && v_cflag(i,j,k-1).isCovered() && v_cflag(i,j,k).isSingleValued()) {
428 dv_dz = (-
two*v(i, j, k) +
three*v(i, j, k+1) - v(i, j, k+2))*
dxInv[2];
430 dv_dz = (v(i, j, k) - v(i, j, k-1))*
dxInv[2];
434 bool can_lo_y_dw = (j-3 >= dom_lo.y);
435 bool can_hi_y_dw = (j+2 <= dom_hi.y);
436 if (can_lo_y_dw && w_cflag(i,j,k).isCovered() && w_cflag(i,j-1,k).isSingleValued()) {
438 }
else if (can_hi_y_dw && w_cflag(i,j-1,k).isCovered() && w_cflag(i,j,k).isSingleValued()) {
441 dw_dy = (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1];
447 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
constexpr amrex::Real three
Definition: ERF_Constants.H:11
constexpr amrex::Real two
Definition: ERF_Constants.H:10
constexpr amrex::Real zero
Definition: ERF_Constants.H:8
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13
constexpr amrex::Real third
Definition: ERF_Constants.H:15
@ tau12
Definition: ERF_DataStruct.H:38
@ tau23
Definition: ERF_DataStruct.H:38
@ tau33
Definition: ERF_DataStruct.H:38
@ tau22
Definition: ERF_DataStruct.H:38
@ tau11
Definition: ERF_DataStruct.H:38
@ tau13
Definition: ERF_DataStruct.H:38
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
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
eb_aux_ const * get_w_const_factory() const noexcept
Return the ERF auxiliary z-face EB factory.
Definition: ERF_EB.H:123
eb_aux_ const * get_v_const_factory() const noexcept
Return the ERF auxiliary y-face EB factory.
Definition: ERF_EB.H:121
eb_aux_ const * get_u_const_factory() const noexcept
Return the ERF auxiliary x-face EB factory.
Definition: ERF_EB.H:119
@ zvel_bc
Definition: ERF_IndexDefines.H:104
@ yvel_bc
Definition: ERF_IndexDefines.H:103
@ xvel_bc
Definition: ERF_IndexDefines.H:102
@ ext_dir_ingested
Definition: ERF_IndexDefines.H:253
@ ext_dir
Definition: ERF_IndexDefines.H:249
@ ext_dir_upwind
Definition: ERF_IndexDefines.H:257