Function for computing the strain rates on a stretched grid.
62 Box domain_xy = convert(domain, tbxxy.ixType());
63 Box domain_xz = convert(domain, tbxxz.ixType());
64 Box domain_yz = convert(domain, tbxyz.ixType());
66 const auto& dom_lo = lbound(domain);
67 const auto& dom_hi = ubound(domain);
69 auto dz_ptr = stretched_dz_d.data();
75 const int nz_dz =
static_cast<int>(stretched_dz_d.size());
81 xl_v_dir = ( xl_v_dir && (tbxxy.smallEnd(0) == domain_xy.smallEnd(0)) );
86 xh_v_dir = ( xh_v_dir && (tbxxy.bigEnd(0) == domain_xy.bigEnd(0)) );
91 xl_w_dir = ( xl_w_dir && (tbxxz.smallEnd(0) == domain_xz.smallEnd(0)) );
96 xh_w_dir = ( xh_w_dir && (tbxxz.bigEnd(0) == domain_xz.bigEnd(0)) );
102 yl_u_dir = ( yl_u_dir && (tbxxy.smallEnd(1) == domain_xy.smallEnd(1)) );
107 yh_u_dir = ( yh_u_dir && (tbxxy.bigEnd(1) == domain_xy.bigEnd(1)) );
112 yl_w_dir = ( yl_w_dir && (tbxyz.smallEnd(1) == domain_yz.smallEnd(1)) );
117 yh_w_dir = ( yh_w_dir && (tbxyz.bigEnd(1) == domain_yz.bigEnd(1)) );
122 zl_u_dir = ( zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) );
126 zh_u_dir = ( zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2)) );
130 zl_v_dir = ( zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2)) );
134 zh_v_dir = ( zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2)) );
140 Box planexy = tbxxy; planexy.setBig(0, planexy.smallEnd(0) );
144 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
145 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
146 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
148 if (!need_to_test || u(dom_lo.x,j,k) >=
zero) {
153 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx);
159 Box planexy = tbxxy; planexy.setSmall(0, planexy.bigEnd(0) );
163 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
164 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
165 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
167 if (!need_to_test || u(dom_hi.x+1,j,k) <=
zero) {
172 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx);
179 Box planexz = tbxxz; planexz.setBig(0, planexz.smallEnd(0) );
180 planexz.setSmall(2, planexz.smallEnd(2)+1 ); planexz.setBig(2, planexz.bigEnd(2)-1 );
184 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
185 Real mfx = mf_ux(i,j,0);
187 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
188 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
189 :
two / (dz_ptr[k] + dz_ptr[k-1]);
191 Real du_dz = (u(i, j, k) - u(i, j, k-1))*dz_inv;
192 if (!need_to_test || u(dom_lo.x,j,k) >=
zero) {
197 + (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0] * mfx );
201 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
206 Box planexz = tbxxz; planexz.setSmall(0, planexz.bigEnd(0) );
207 planexz.setSmall(2, planexz.smallEnd(2)+1 ); planexz.setBig(2, planexz.bigEnd(2)-1 );
211 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
212 Real mfx = mf_ux(i,j,0);
214 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
215 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
216 :
two / (dz_ptr[k] + dz_ptr[k-1]);
218 Real du_dz = (u(i, j, k) - u(i, j, k-1))*dz_inv;
219 if (!need_to_test || u(dom_hi.x+1,j,k) <=
zero) {
224 + (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0] * mfx );
228 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
236 Box planexy = tbxxy; planexy.setBig(1, planexy.smallEnd(1) );
240 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
241 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
242 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
244 if (!need_to_test || v(i,dom_lo.y,k) >=
zero) {
246 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx);
249 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx);
255 Box planexy = tbxxy; planexy.setSmall(1, planexy.bigEnd(1) );
259 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
260 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
261 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
263 if (!need_to_test || v(i,dom_hi.y+1,k) <=
zero) {
265 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx);
268 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx);
275 Box planeyz = tbxyz; planeyz.setBig(1, planeyz.smallEnd(1) );
276 planeyz.setSmall(2, planeyz.smallEnd(2)+1 ); planeyz.setBig(2, planeyz.bigEnd(2)-1 );
280 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
281 Real mfy = mf_vy(i,j,0);
283 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
284 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
285 :
two / (dz_ptr[k] + dz_ptr[k-1]);
287 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*dz_inv;
288 if (!need_to_test || v(i,dom_lo.y,k) >=
zero) {
293 + (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1] * mfy );
297 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
301 Box planeyz = tbxyz; planeyz.setSmall(1, planeyz.bigEnd(1) );
302 planeyz.setSmall(2, planeyz.smallEnd(2)+1 ); planeyz.setBig(2, planeyz.bigEnd(2)-1 );
306 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
307 Real mfy = mf_vy(i,j,0);
309 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
310 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
311 :
two / (dz_ptr[k] + dz_ptr[k-1]);
313 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*dz_inv;
314 if (!need_to_test || v(i,dom_hi.y+1,k) <=
zero) {
319 + (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1] * mfy );
323 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
331 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2) );
334 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
336 Real dz0 = dz_ptr[k];
337 Real dz1 = dz_ptr[k+1];
345 Real mfx = mf_ux(i,j,0);
347 Real du_dz = (
c1 * u(i,j,k-1) +
c2 * u(i,j,k) + c3 * u(i,j,k+1))*idz0;
349 + (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0] * mfx );
352 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
357 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
360 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
362 Real dz0 = dz_ptr[k-1];
363 Real dz1 = dz_ptr[k-2];
371 Real mfx = mf_ux(i,j,0);
373 Real du_dz = -(
c1 * u(i,j,k) +
c2 * u(i,j,k-1) + c3 * u(i,j,k-2))*idz0;
375 + (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0]*mfx );
378 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
383 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
386 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
388 Real dz0 = dz_ptr[k];
389 Real dz1 = dz_ptr[k+1];
397 Real mfy = mf_vy(i,j,0);
399 Real dv_dz = (
c1 * v(i,j,k-1) +
c2 * v(i,j,k ) + c3 * v(i,j,k+1))*idz0;
401 + (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1] * mfy );
404 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
407 if (zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2))) {
409 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
412 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
414 Real dz0 = dz_ptr[k-1];
415 Real dz1 = dz_ptr[k-2];
423 Real mfy = mf_vy(i,j,0);
425 Real dv_dz = -(
c1 * v(i,j,k ) +
c2 * v(i,j,k-1) + c3 * v(i,j,k-2))*idz0;
427 + (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1]*mfy );
430 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
435 if (zl_u_dir && zl_v_dir) {
436 Box planecc = bxcc; planecc.setBig(2, planecc.smallEnd(2) );
439 ParallelFor(planecc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
440 Real dz0 = dz_ptr[k];
443 Real mfx = mf_mx(i,j,0);
444 Real mfy = mf_my(i,j,0);
446 tau11(i,j,k) = ( (u(i+1, j, k) - u(i, j, k) )*
dxInv[0]) * mfx;
447 tau22(i,j,k) = ( (v(i, j+1, k) - v(i, j, k) )*
dxInv[1]) * mfy;
448 tau33(i,j,k) = (
w(i, j, k+1) -
w(i, j, k) )*idz0;
451 Box planexy = tbxxy; planexy.setBig(2, planexy.smallEnd(2) );
454 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
455 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
456 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
459 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx);
467 if (!zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) ) {
468 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2));
471 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
472 Real mfx = mf_ux(i,j,0);
474 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
475 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
476 :
two / (dz_ptr[k] + dz_ptr[k-1]);
478 Real du_dz = (u(i, j, k) - u(i , j, k-1))*dz_inv;
480 + (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0] * mfx );
483 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
486 if (!zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2))) {
487 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
490 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
491 Real mfy = mf_vy(i,j,0);
493 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
494 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
495 :
two / (dz_ptr[k] + dz_ptr[k-1]);
497 Real dv_dz = (v(i, j, k) - v(i, j , k-1))*dz_inv;
499 + (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1] * mfy );
502 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
509 if (!zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2))) {
510 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
513 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
514 Real mfx = mf_ux(i,j,0);
516 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
517 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
518 :
two / (dz_ptr[k] + dz_ptr[k-1]);
520 Real du_dz = (u(i, j, k) - u(i , j, k-1))*dz_inv;
522 + (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0]*mfx );
525 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
528 if (!zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2))) {
529 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
532 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
533 Real mfy = mf_vy(i,j,0);
535 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
536 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
537 :
two / (dz_ptr[k] + dz_ptr[k-1]);
539 Real dv_dz = (v(i, j, k) - v(i, j , k-1))*dz_inv;
541 + (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1]*mfy );
544 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
552 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
553 Real mfx = mf_mx(i,j,0);
554 Real mfy = mf_my(i,j,0);
558 tau11(i,j,k) = (u(i+1, j, k) - u(i, j, k))*
dxInv[0] * mfx;
559 tau22(i,j,k) = (v(i, j+1, k) - v(i, j, k))*
dxInv[1] * mfy;
560 tau33(i,j,k) = (
w(i, j, k+1) -
w(i, j, k))*dz_inv;
565 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
566 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
567 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
570 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx);
573 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
574 Real mfx = mf_ux(i,j,0);
576 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
577 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
578 :
two / (dz_ptr[k] + dz_ptr[k-1]);
580 Real du_dz = (u(i, j, k) - u(i , j, k-1))*dz_inv;
582 + (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0] * mfx );
585 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
587 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
588 Real mfy = mf_vy(i,j,0);
590 Real dz_inv = (k == 0) ?
one / dz_ptr[0]
591 : (k >= nz_dz) ?
one / dz_ptr[nz_dz-1]
592 :
two / (dz_ptr[k] + dz_ptr[k-1]);
594 Real dv_dz = (v(i, j, k) - v(i, j , k-1))*dz_inv;
596 + (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1] * mfy );
599 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 one
Definition: ERF_Constants.H:9
constexpr amrex::Real zero
Definition: ERF_Constants.H:8
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13
@ 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
@ tau32
Definition: ERF_DataStruct.H:38
@ tau31
Definition: ERF_DataStruct.H:38
@ tau21
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
@ 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
real(c_double), parameter c2
Definition: ERF_module_model_constants.F90:35
real(c_double), private c1
Definition: ERF_module_mp_morr_two_moment.F90:212