Function for computing the strain rates with terrain.
64 Box domain_xy = convert(domain, tbxxy.ixType());
65 Box domain_xz = convert(domain, tbxxz.ixType());
66 Box domain_yz = convert(domain, tbxyz.ixType());
68 const auto& dom_lo = lbound(domain);
69 const auto& dom_hi = ubound(domain);
75 xl_v_dir = ( xl_v_dir && (tbxxy.smallEnd(0) == domain_xy.smallEnd(0)) );
80 xh_v_dir = ( xh_v_dir && (tbxxy.bigEnd(0) == domain_xy.bigEnd(0)) );
85 xl_w_dir = ( xl_w_dir && (tbxxz.smallEnd(0) == domain_xz.smallEnd(0)) );
90 xh_w_dir = ( xh_w_dir && (tbxxz.bigEnd(0) == domain_xz.bigEnd(0)) );
96 yl_u_dir = ( yl_u_dir && (tbxxy.smallEnd(1) == domain_xy.smallEnd(1)) );
101 yh_u_dir = ( yh_u_dir && (tbxxy.bigEnd(1) == domain_xy.bigEnd(1)) );
106 yl_w_dir = ( yl_w_dir && (tbxyz.smallEnd(1) == domain_yz.smallEnd(1)) );
111 yh_w_dir = ( yh_w_dir && (tbxyz.bigEnd(1) == domain_yz.bigEnd(1)) );
116 zl_u_dir = ( zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) );
120 zh_u_dir = ( zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2)) );
124 zl_v_dir = ( zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2)) );
128 zh_v_dir = ( zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2)) );
134 Box planexy = tbxxy; planexy.setBig(0, planexy.smallEnd(0) );
138 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
139 Real inv_dist = (k == 0) ?
two / (z_nd(i,j,k+2) - z_nd(i,j,k )) :
140 two / (z_nd(i,j,k+2) + z_nd(i,j,k+1) - z_nd(i,j,k) - z_nd(i,j,k-1));
142 Real GradUz = (k == 0) ?
143 inv_dist * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
144 - u(i ,j ,k ) - u(i ,j-1,k ) ) :
145 inv_dist * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
146 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
147 Real GradVz = (k == 0) ?
148 inv_dist * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
149 - v(i ,j ,k ) - v(i-1,j ,k ) ) :
150 inv_dist * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
151 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
153 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
154 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
159 if (!need_to_test || u(dom_lo.x,j,k) >=
zero) {
162 - (met_h_eta)*GradUz*mfy
163 - (met_h_xi )*GradVz*mfx );
174 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx
175 - (met_h_eta)*GradUz*mfy
176 - (met_h_xi )*GradVz*mfx );
182 Box planexy = tbxxy; planexy.setSmall(0, planexy.bigEnd(0) );
186 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
187 Real inv_dist = (k == 0) ?
two / (z_nd(i,j,k+2) - z_nd(i,j,k )) :
188 two / (z_nd(i,j,k+2) + z_nd(i,j,k+1) - z_nd(i,j,k) - z_nd(i,j,k-1));
190 Real GradUz = (k == 0) ?
191 inv_dist * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
192 - u(i ,j ,k ) - u(i ,j-1,k ) ) :
193 inv_dist * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
194 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
195 Real GradVz = (k == 0) ?
196 inv_dist * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
197 - v(i ,j ,k ) - v(i-1,j ,k ) ) :
198 inv_dist * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
199 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
201 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
202 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
207 if (!need_to_test || u(dom_hi.x+1,j,k) <=
zero) {
210 - (met_h_eta)*GradUz*mfy
211 - (met_h_xi )*GradVz*mfx );
214 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx
215 - (met_h_eta)*GradUz*mfy
216 - (met_h_xi )*GradVz*mfx );
223 Box planexz = tbxxz; planexz.setBig(0, planexz.smallEnd(0) );
224 planexz.setSmall(2, planexz.smallEnd(2)+1 ); planexz.setBig(2, planexz.bigEnd(2)-1 );
228 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
229 Real dz0 =
myhalf * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
230 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
233 Real GradWz =
myhalf * idz0 * (
w(i ,j ,k+1) +
w(i-1,j ,k+1)
234 -
w(i ,j ,k-1) -
w(i-1,j ,k-1) );
235 Real mfx = mf_ux(i,j,0);
240 Real du_dz = (u(i, j, k) - u(i, j, k-1))*
dxInv[2]/met_h_zeta;
241 if (!need_to_test || u(dom_lo.x,j,k) >=
zero) {
244 - (met_h_xi)*GradWz ) * mfx );
254 + ( (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0]
255 - (met_h_xi)*GradWz ) * mfx );
259 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
264 Box planexz = tbxxz; planexz.setSmall(0, planexz.bigEnd(0) );
265 planexz.setSmall(2, planexz.smallEnd(2)+1 ); planexz.setBig(2, planexz.bigEnd(2)-1 );
269 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
270 Real dz0 =
myhalf * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
271 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
274 Real GradWz =
myhalf * idz0 * (
w(i ,j ,k+1) +
w(i-1,j ,k+1)
275 -
w(i ,j ,k-1) -
w(i-1,j ,k-1) );
277 Real mfx = mf_ux(i,j,0);
282 Real du_dz = (u(i, j, k) - u(i, j, k-1))*
dxInv[2]/met_h_zeta;
283 if (!need_to_test || u(dom_hi.x+1,j,k) <=
zero) {
286 - (met_h_xi)*GradWz ) * mfx );
289 + ( (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0]
290 - (met_h_xi)*GradWz ) * mfx );
294 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
302 Box planexy = tbxxy; planexy.setBig(1, planexy.smallEnd(1) );
306 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
307 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k-1) );
310 Real GradUz = (k == 0) ?
311 idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
312 - u(i ,j ,k ) - u(i ,j-1,k ) ) :
313 myhalf * idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
314 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
315 Real GradVz = (k == 0) ?
316 idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
317 - v(i ,j ,k ) - v(i-1,j ,k ) ) :
318 myhalf * idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
319 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
321 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
322 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
327 if (!need_to_test || v(i,dom_lo.y,k) >=
zero) {
329 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx
330 - (met_h_eta)*GradUz*mfy
331 - (met_h_xi )*GradVz*mfx );
334 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx
335 - (met_h_eta)*GradUz*mfy
336 - (met_h_xi )*GradVz*mfx );
342 Box planexy = tbxxy; planexy.setSmall(1, planexy.bigEnd(1) );
346 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
347 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k-1) );
350 Real GradUz = (k == 0) ?
351 idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
352 - u(i ,j ,k ) - u(i ,j-1,k ) ) :
353 myhalf * idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
354 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
355 Real GradVz = (k == 0) ?
356 idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
357 - v(i ,j ,k ) - v(i-1,j ,k ) ) :
358 myhalf * idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
359 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
361 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
362 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
367 if (!need_to_test || v(i,dom_hi.y+1,k) <=
zero) {
369 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx
370 - (met_h_eta)*GradUz*mfy
371 - (met_h_xi )*GradVz*mfx );
374 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx
375 - (met_h_eta)*GradUz*mfy
376 - (met_h_xi )*GradVz*mfx );
383 Box planeyz = tbxyz; planeyz.setBig(1, planeyz.smallEnd(1) );
384 planeyz.setSmall(2, planeyz.smallEnd(2)+1 ); planeyz.setBig(2, planeyz.bigEnd(2)-1 );
388 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
389 Real dz0 =
myhalf * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
390 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
393 Real GradWz =
myhalf * idz0 * (
w(i ,j ,k+1) +
w(i ,j-1,k+1)
394 -
w(i ,j ,k-1) -
w(i ,j-1,k-1) );
396 Real mfy = mf_vy(i,j,0);
401 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*
dxInv[2]/met_h_zeta;
402 if (!need_to_test || v(i,dom_lo.y,k) >=
zero) {
405 - (met_h_eta)*GradWz ) * mfy );
415 + ( (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1]
416 - (met_h_eta)*GradWz ) * mfy );
420 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
424 Box planeyz = tbxyz; planeyz.setSmall(1, planeyz.bigEnd(1) );
425 planeyz.setSmall(2, planeyz.smallEnd(2)+1 ); planeyz.setBig(2, planeyz.bigEnd(2)-1 );
429 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
430 Real dz0 =
myhalf * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
431 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
434 Real GradWz =
myhalf * idz0 * (
w(i ,j ,k+1) +
w(i ,j-1,k+1)
435 -
w(i ,j ,k-1) -
w(i ,j-1,k-1) );
437 Real mfy = mf_vy(i,j,0);
442 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*
dxInv[2]/met_h_zeta;
443 if (!need_to_test || v(i,dom_hi.y+1,k) <=
zero) {
446 - (met_h_eta)*GradWz ) * mfy );
449 + ( (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1]
450 - (met_h_eta)*GradWz ) * mfy );
454 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
462 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2) );
465 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
467 Real dz0 =
myhalf * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
468 - z_nd(i,j,k ) - z_nd(i,j+1,k ) );
469 Real dz1 =
myhalf * ( z_nd(i,j,k+2) + z_nd(i,j+1,k+2)
470 - z_nd(i,j,k+1) - z_nd(i,j+1,k+1) );
478 Real GradWz =
myhalf * idz0 * (
w(i,j,k+1) +
w(i-1,j,k+1)
479 -
w(i,j,k ) -
w(i-1,j,k ) );
481 Real mfx = mf_ux(i,j,0);
487 Real du_dz = (
c1 * u(i,j,k-1) +
c2 * u(i,j,k) + c3 * u(i,j,k+1))*idz0;
489 + ( (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0]
490 - (met_h_xi)*GradWz ) * mfx );
493 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
498 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
501 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
503 Real dz0 =
myhalf * ( z_nd(i,j,k ) + z_nd(i,j+1,k )
504 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
505 Real dz1 =
myhalf * ( z_nd(i,j,k-1) + z_nd(i,j+1,k-1)
506 - z_nd(i,j,k-2) - z_nd(i,j+1,k-2) );
514 Real mfx = mf_ux(i,j,0);
516 Real du_dz = -(
c1 * u(i,j,k) +
c2 * u(i,j,k-1) + c3 * u(i,j,k-2))*idz0;
518 + (
w(i, j, k) -
w(i-1, j, k))*
dxInv[0]*mfx );
521 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
526 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
529 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
531 Real dz0 =
myhalf * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
532 - z_nd(i,j,k ) - z_nd(i+1,j,k ) );
533 Real dz1 =
myhalf * ( z_nd(i,j,k+2) + z_nd(i+1,j,k+2)
534 - z_nd(i,j,k+1) - z_nd(i+1,j,k+1) );
542 Real GradWz =
myhalf * idz0 * (
w(i ,j ,k+1) +
w(i ,j-1,k+1)
543 -
w(i ,j ,k ) -
w(i ,j-1,k ) );
545 Real mfy = mf_vy(i,j,0);
552 Real dv_dz = (
c1 * v(i,j,k-1) +
c2 * v(i,j,k ) + c3 * v(i,j,k+1))*idz0;
554 + ( (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1]
555 - (met_h_eta)*GradWz ) * mfy );
558 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
561 if (zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2))) {
563 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
566 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
568 Real dz0 =
myhalf * ( z_nd(i,j,k ) + z_nd(i+1,j,k )
569 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
570 Real dz1 =
myhalf * ( z_nd(i,j,k-1) + z_nd(i+1,j,k-1)
571 - z_nd(i,j,k-2) - z_nd(i+1,j,k-2) );
579 Real mfy = mf_vy(i,j,0);
581 Real dv_dz = -(
c1 * v(i,j,k ) +
c2 * v(i,j,k-1) + c3 * v(i,j,k-2))*idz0;
583 + (
w(i, j, k) -
w(i, j-1, k))*
dxInv[1]*mfy );
586 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
591 if (zl_u_dir && zl_v_dir) {
592 Box planecc = bxcc; planecc.setBig(2, planecc.smallEnd(2) );
595 ParallelFor(planecc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
597 Real dz0 =
fourth * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1) + z_nd(i+1,j,k+1) + z_nd(i+1,j+1,k+1)
598 - z_nd(i,j,k ) - z_nd(i,j+1,k ) - z_nd(i+1,j,k ) - z_nd(i+1,j+1,k ) );
599 Real dz1 =
fourth * ( z_nd(i,j,k+2) + z_nd(i,j+1,k+2) + z_nd(i+1,j,k+2) + z_nd(i+1,j+1,k+2)
600 - z_nd(i,j,k+1) - z_nd(i,j+1,k+1) - z_nd(i+1,j,k+1) - z_nd(i+1,j+1,k+1) );
608 Real GradUz =
myhalf * idz0 * ( (
c1 * u(i ,j,k-1) +
c2 * u(i ,j,k) + c3 * u(i ,j,k+1))
609 + (
c1 * u(i-1,j,k-1) +
c2 * u(i-1,j,k) + c3 * u(i-1,j,k+1)) );
610 Real GradVz =
myhalf * idz0 * ( (
c1 * v(i,j ,k-1) +
c2 * v(i,j ,k) + c3 * v(i,j ,k+1))
611 + (
c1 * v(i,j-1,k-1) +
c2 * v(i,j-1,k) + c3 * v(i,j-1,k+1)) );
613 Real mfx = mf_mx(i,j,0);
614 Real mfy = mf_my(i,j,0);
616 Real met_h_xi,met_h_eta;
620 tau11(i,j,k) = ( (u(i+1, j, k) - u(i, j, k) )*
dxInv[0]
621 - (met_h_xi)*GradUz ) * mfx;
622 tau22(i,j,k) = ( (v(i, j+1, k) - v(i, j, k) )*
dxInv[1]
623 - (met_h_eta)*GradVz ) * mfy;
624 tau33(i,j,k) = (
w(i, j, k+1) -
w(i, j, k) )*idz0;
628 Box planexy = tbxxy; planexy.setBig(2, planexy.smallEnd(2) );
631 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
633 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k ) );
634 Real dz1 = ( z_nd(i,j,k+2) - z_nd(i,j,k+1) );
642 Real GradUz =
myhalf * idz0 * ( (
c1 * u(i,j ,k-1) +
c2 * u(i,j ,k) + c3 * u(i,j ,k+1))
643 + (
c1 * u(i,j-1,k-1) +
c2 * u(i,j-1,k) + c3 * u(i,j-1,k+1)) );
644 Real GradVz =
myhalf * idz0 * ( (
c1 * v(i ,j,k-1) +
c2 * v(i ,j,k) + c3 * v(i ,j,k+1))
645 + (
c1 * v(i-1,j,k-1) +
c2 * v(i-1,j,k) + c3 * v(i-1,j,k+1)) );
647 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
648 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
650 Real met_h_xi,met_h_eta;
655 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx
656 - (met_h_eta)*GradUz*mfy
657 - (met_h_xi )*GradVz*mfx );
665 if (!zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) ) {
666 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2));
669 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
670 Real mfx = mf_ux(i,j,0);
672 Real met_h_xi,met_h_zeta;
677 -
w(i ,j ,k ) -
w(i-1,j ,k ) );
678 GradWz /= met_h_zeta;
680 Real du_dz = (u(i, j, k) - u(i , j, k-1))*
dxInv[2]/met_h_zeta;
682 + ( (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0]
683 - (met_h_xi)*GradWz ) * mfx);
686 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
689 if (!zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2))) {
690 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
693 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
694 Real mfy = mf_vy(i,j,0);
696 Real met_h_eta,met_h_zeta;
701 -
w(i ,j ,k ) -
w(i ,j-1,k ) );
702 GradWz /= met_h_zeta;
704 Real dv_dz = (v(i, j, k) - v(i, j , k-1))*
dxInv[2]/met_h_zeta;
706 + ( (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1]
707 - (met_h_eta)*GradWz ) * mfy );
710 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
717 if (!zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2))) {
718 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
721 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
722 Real mfx = mf_ux(i,j,0);
727 Real du_dz = (u(i, j, k) - u(i , j, k-1))*
dxInv[2]/met_h_zeta;
729 + (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0]*mfx );
732 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
735 if (!zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2))) {
736 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
739 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
740 Real mfy = mf_vy(i,j,0);
745 Real dv_dz = (v(i, j, k) - v(i, j , k-1))*
dxInv[2]/met_h_zeta;
747 + (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1]*mfy );
750 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
758 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
759 Real dz0 =
fourth * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1) + z_nd(i+1,j,k+1) + z_nd(i+1,j+1,k+1)
760 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) - z_nd(i+1,j,k-1) - z_nd(i+1,j+1,k-1) );
763 Real GradUz = (k == 0) ?
764 idz0 * ( u(i ,j ,k+1) + u(i-1,j ,k+1)
765 - u(i ,j ,k ) - u(i-1,j ,k ) ) :
766 myhalf * idz0 * ( u(i ,j ,k+1) + u(i-1,j ,k+1)
767 - u(i ,j ,k-1) - u(i-1,j ,k-1) );
768 Real GradVz = (k == 0) ?
769 idz0 * ( v(i ,j ,k+1) + v(i ,j-1,k+1)
770 - v(i ,j ,k ) - v(i ,j-1,k ) ) :
771 myhalf * idz0 * ( v(i ,j ,k+1) + v(i ,j-1,k+1)
772 - v(i ,j ,k-1) - v(i ,j-1,k-1) );
774 Real mfx = mf_mx(i,j,0);
775 Real mfy = mf_my(i,j,0);
777 Real met_h_xi,met_h_eta,met_h_zeta;
780 met_h_zeta = detJ(i,j,k);
782 tau11(i,j,k) = ( (u(i+1, j, k) - u(i, j, k))*
dxInv[0] - met_h_xi*GradUz ) * mfx;
783 tau22(i,j,k) = ( (v(i, j+1, k) - v(i, j, k))*
dxInv[1] - met_h_eta*GradVz ) * mfy;
784 tau33(i,j,k) = (
w(i, j, k+1) -
w(i, j, k) )*
dxInv[2]/met_h_zeta;
789 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
790 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k-1) );
793 Real GradUz = (k == 0) ?
794 idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
795 - u(i ,j ,k ) - u(i ,j-1,k ) ) :
796 myhalf * idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
797 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
798 Real GradVz = (k == 0) ?
799 idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
800 - v(i ,j ,k ) - v(i-1,j ,k ) ) :
801 myhalf * idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
802 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
804 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
805 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
807 Real met_h_xi,met_h_eta;
812 + (v(i, j, k) - v(i-1, j , k))*
dxInv[0]*mfx
813 - (met_h_eta)*GradUz*mfy
814 - (met_h_xi )*GradVz*mfx );
817 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
818 Real dz0 =
myhalf * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
819 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
822 Real GradWz =
myhalf * idz0 * (
w(i ,j ,k+1) +
w(i-1,j ,k+1)
823 -
w(i ,j ,k-1) -
w(i-1,j ,k-1) );
825 Real mfx = mf_ux(i,j,0);
827 Real met_h_xi,met_h_zeta;
831 Real du_dz = (u(i, j, k) - u(i , j, k-1))*
dxInv[2]/met_h_zeta;
833 + ( (
w(i, j, k) -
w(i-1, j, k ))*
dxInv[0]
834 - (met_h_xi)*GradWz ) * mfx );
837 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
839 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
840 Real dz0 =
myhalf * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
841 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
844 Real GradWz =
myhalf * idz0 * (
w(i ,j ,k+1) +
w(i ,j-1,k+1)
845 -
w(i ,j ,k-1) -
w(i ,j-1,k-1) );
847 Real mfy = mf_vy(i,j,0);
849 Real met_h_eta,met_h_zeta;
853 Real dv_dz = (v(i, j, k) - v(i, j , k-1))*
dxInv[2]/met_h_zeta;
855 + ( (
w(i, j, k) -
w(i, j-1, k ))*
dxInv[1]
856 - (met_h_eta)*GradWz ) * mfy );
859 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 fourth
Definition: ERF_Constants.H:14
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
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtEdgeCenterK(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:243
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtEdgeCenterJ(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:289
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtEdgeCenterJ(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:275
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtEdgeCenterI(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:319
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtCellCenter(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:85
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtEdgeCenterK(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:258
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtCellCenter(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:70
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtEdgeCenterI(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:346
@ 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