Function for computing the strain rates with terrain.
58 Box domain_xy = convert(domain, tbxxy.ixType());
59 Box domain_xz = convert(domain, tbxxz.ixType());
60 Box domain_yz = convert(domain, tbxyz.ixType());
62 const auto&
dom_lo = lbound(domain);
63 const auto&
dom_hi = ubound(domain);
69 xl_v_dir = ( xl_v_dir && (tbxxy.smallEnd(0) == domain_xy.smallEnd(0)) );
74 xh_v_dir = ( xh_v_dir && (tbxxy.bigEnd(0) == domain_xy.bigEnd(0)) );
79 xl_w_dir = ( xl_w_dir && (tbxxz.smallEnd(0) == domain_xz.smallEnd(0)) );
84 xh_w_dir = ( xh_w_dir && (tbxxz.bigEnd(0) == domain_xz.bigEnd(0)) );
90 yl_u_dir = ( yl_u_dir && (tbxxy.smallEnd(1) == domain_xy.smallEnd(1)) );
95 yh_u_dir = ( yh_u_dir && (tbxxy.bigEnd(1) == domain_xy.bigEnd(1)) );
100 yl_w_dir = ( yl_w_dir && (tbxyz.smallEnd(1) == domain_yz.smallEnd(1)) );
105 yh_w_dir = ( yh_w_dir && (tbxyz.bigEnd(1) == domain_yz.bigEnd(1)) );
110 zl_u_dir = ( zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) );
114 zh_u_dir = ( zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2)) );
118 zl_v_dir = ( zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2)) );
122 zh_v_dir = ( zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2)) );
129 Box planexy = tbxxy; planexy.setBig(0, planexy.smallEnd(0) );
133 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
134 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k-1) );
135 Real idz0 = 1.0 / dz0;
137 Real GradUz = 0.5 * idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
138 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
139 Real GradVz = 0.5 * idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
140 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
142 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
143 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
148 if (!need_to_test || u(
dom_lo.x,j,k) >= 0.) {
149 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k) )*dxInv[1]*mfy
150 + (-(8./3.) * v(i-1,j,k) + 3. * v(i,j,k) - (1./3.) * v(i+1,j,k))*dxInv[0]*mfx
151 - (met_h_eta)*GradUz*mfy
152 - (met_h_xi )*GradVz*mfx );
154 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j-1, k))*dxInv[1]*mfy
155 + (v(i, j, k) - v(i-1, j , k))*dxInv[0]*mfx
156 - (met_h_eta)*GradUz*mfy
157 - (met_h_xi )*GradVz*mfx );
164 Box planexy = tbxxy; planexy.setSmall(0, planexy.bigEnd(0) );
168 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
169 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k-1) );
170 Real idz0 = 1.0 / dz0;
172 Real GradUz = 0.5 * idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
173 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
174 Real GradVz = 0.5 * idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
175 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
177 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
178 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
183 if (!need_to_test || u(
dom_hi.x+1,j,k) <= 0.) {
184 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k) )*dxInv[1]*mfy
185 - (-(8./3.) * v(i,j,k) + 3. * v(i-1,j,k) - (1./3.) * v(i-2,j,k))*dxInv[0]*mfx
186 - (met_h_eta)*GradUz*mfy
187 - (met_h_xi )*GradVz*mfx );
189 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j-1, k))*dxInv[1]*mfy
190 + (v(i, j, k) - v(i-1, j , k))*dxInv[0]*mfx
191 - (met_h_eta)*GradUz*mfy
192 - (met_h_xi )*GradVz*mfx );
200 Box planexz = tbxxz; planexz.setBig(0, planexz.smallEnd(0) );
201 planexz.setSmall(2, planexz.smallEnd(2)+1 ); planexz.setBig(2, planexz.bigEnd(2)-1 );
205 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
206 Real dz0 = 0.5 * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
207 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
208 Real idz0 = 1.0 / dz0;
210 Real GradWz = 0.5 * idz0 * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
211 - w(i ,j ,k-1) - w(i-1,j ,k-1) );
212 Real mfx = mf_ux(i,j,0);
217 if (!need_to_test || u(
dom_lo.x,j,k) <= 0.) {
218 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]/met_h_zeta
219 + ( (-(8./3.) * w(i-1,j,k) + 3. * w(i,j,k) - (1./3.) * w(i+1,j,k))*dxInv[0]
220 - (met_h_xi)*GradWz ) * mfx );
222 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
223 + ( (w(i, j, k) - w(i-1, j, k ))*dxInv[0]
224 - (met_h_xi)*GradWz ) * mfx );
232 Box planexz = tbxxz; planexz.setSmall(0, planexz.bigEnd(0) );
233 planexz.setSmall(2, planexz.smallEnd(2)+1 ); planexz.setBig(2, planexz.bigEnd(2)-1 );
237 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
238 Real dz0 = 0.5 * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
239 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
240 Real idz0 = 1.0 / dz0;
242 Real GradWz = 0.5 * idz0 * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
243 - w(i ,j ,k-1) - w(i-1,j ,k-1) );
245 Real mfx = mf_ux(i,j,0);
250 if (!need_to_test || u(
dom_hi.x+1,j,k) <= 0.) {
251 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]/met_h_zeta
252 - ( (-(8./3.) * w(i,j,k) + 3. * w(i-1,j,k) - (1./3.) * w(i-2,j,k))*dxInv[0]
253 - (met_h_xi)*GradWz ) * mfx );
255 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
256 + ( (w(i, j, k) - w(i-1, j, k ))*dxInv[0]
257 - (met_h_xi)*GradWz ) * mfx );
267 Box planexy = tbxxy; planexy.setBig(1, planexy.smallEnd(1) );
271 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
272 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k-1) );
273 Real idz0 = 1.0 / dz0;
275 Real GradUz = 0.5 * idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
276 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
277 Real GradVz = 0.5 * idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
278 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
280 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
281 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
286 if (!need_to_test || v(i,
dom_lo.y,k) >= 0.) {
287 tau12(i,j,k) = 0.5 * ( (-(8./3.) * u(i,j-1,k) + 3. * u(i,j,k) - (1./3.) * u(i,j+1,k))*dxInv[1]*mfy
288 + (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx
289 - (met_h_eta)*GradUz*mfy
290 - (met_h_xi )*GradVz*mfx );
292 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j-1, k))*dxInv[1]*mfy
293 + (v(i, j, k) - v(i-1, j , k))*dxInv[0]*mfx
294 - (met_h_eta)*GradUz*mfy
295 - (met_h_xi )*GradVz*mfx );
301 Box planexy = tbxxy; planexy.setSmall(1, planexy.bigEnd(1) );
305 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
306 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k-1) );
307 Real idz0 = 1.0 / dz0;
309 Real GradUz = 0.5 * idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
310 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
311 Real GradVz = 0.5 * idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
312 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
314 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
315 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
320 if (!need_to_test || v(i,
dom_hi.y+1,k) >= 0.) {
321 tau12(i,j,k) = 0.5 * ( -(-(8./3.) * u(i,j,k) + 3. * u(i,j-1,k) - (1./3.) * u(i,j-2,k))*dxInv[1]*mfy +
322 + (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx
323 - (met_h_eta)*GradUz*mfy
324 - (met_h_xi )*GradVz*mfx );
326 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j-1, k))*dxInv[1]*mfy
327 + (v(i, j, k) - v(i-1, j , k))*dxInv[0]*mfx
328 - (met_h_eta)*GradUz*mfy
329 - (met_h_xi )*GradVz*mfx );
336 Box planeyz = tbxyz; planeyz.setBig(1, planeyz.smallEnd(1) );
337 planeyz.setSmall(2, planeyz.smallEnd(2)+1 ); planeyz.setBig(2, planeyz.bigEnd(2)-1 );
341 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
342 Real dz0 = 0.5 * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
343 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
344 Real idz0 = 1.0 / dz0;
346 Real GradWz = 0.5 * idz0 * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
347 - w(i ,j ,k-1) - w(i ,j-1,k-1) );
349 Real mfy = mf_vy(i,j,0);
354 if (!need_to_test || v(i,
dom_lo.y,k) >= 0.) {
355 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]/met_h_zeta
356 + ( (-(8./3.) * w(i,j-1,k) + 3. * w(i,j ,k) - (1./3.) * w(i,j+1,k))*dxInv[1]
357 - (met_h_eta)*GradWz ) * mfy );
359 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
360 + ( (w(i, j, k) - w(i, j-1, k ))*dxInv[1]
361 - (met_h_eta)*GradWz ) * mfy );
367 Box planeyz = tbxyz; planeyz.setSmall(1, planeyz.bigEnd(1) );
368 planeyz.setSmall(2, planeyz.smallEnd(2)+1 ); planeyz.setBig(2, planeyz.bigEnd(2)-1 );
372 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
373 Real dz0 = 0.5 * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
374 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
375 Real idz0 = 1.0 / dz0;
377 Real GradWz = 0.5 * idz0 * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
378 - w(i ,j ,k-1) - w(i ,j-1,k-1) );
380 Real mfy = mf_vy(i,j,0);
385 if (!need_to_test || v(i,
dom_hi.y+1,k) >= 0.) {
386 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]/met_h_zeta
387 - ( (-(8./3.) * w(i,j ,k) + 3. * w(i,j-1,k) - (1./3.) * w(i,j-2,k))*dxInv[1]
388 - (met_h_eta)*GradWz ) * mfy );
390 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
391 + ( (w(i, j, k) - w(i, j-1, k ))*dxInv[1]
392 - (met_h_eta)*GradWz ) * mfy );
402 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2) );
404 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
406 Real dz0 = 0.5 * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
407 - z_nd(i,j,k ) - z_nd(i,j+1,k ) );
408 Real dz1 = 0.5 * ( z_nd(i,j,k+2) + z_nd(i,j+1,k+2)
409 - z_nd(i,j,k+1) - z_nd(i,j+1,k+1) );
410 Real idz0 = 1.0 / dz0;
411 Real f = (dz1 / dz0) + 2.0;
413 Real c3 = 2.0 / (f - f2);
415 Real
c1 = -(1.0-f2)*c3;
417 Real GradWz = 0.5 * idz0 * ( w(i,j,k+1) + w(i-1,j,k+1)
418 - w(i,j,k ) - w(i-1,j,k ) );
420 Real mfx = mf_ux(i,j,0);
427 tau13(i,j,k) = 0.5 * ( (
c1 * u(i,j,k-1) +
c2 * u(i,j,k) + c3 * u(i,j,k+1))*idz0
428 + ( (w(i, j, k) - w(i-1, j, k))*dxInv[0]
429 - (met_h_xi)*GradWz ) * mfx );
435 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
437 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
439 Real dz0 = 0.5 * ( z_nd(i,j,k ) + z_nd(i,j+1,k )
440 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
441 Real dz1 = 0.5 * ( z_nd(i,j,k-1) + z_nd(i,j+1,k-1)
442 - z_nd(i,j,k-2) - z_nd(i,j+1,k-2) );
443 Real idz0 = 1.0 / dz0;
444 Real f = (dz1 / dz0) + 2.0;
446 Real c3 = 2.0 / (f - f2);
448 Real
c1 = -(1.0-f2)*c3;
450 Real mfx = mf_ux(i,j,0);
452 tau13(i,j,k) = 0.5 * ( -(
c1 * u(i,j,k) +
c2 * u(i,j,k-1) + c3 * u(i,j,k-2))*idz0
453 + (w(i, j, k) - w(i-1, j, k))*dxInv[0]*mfx );
459 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
461 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
463 Real dz0 = 0.5 * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
464 - z_nd(i,j,k ) - z_nd(i+1,j,k ) );
465 Real dz1 = 0.5 * ( z_nd(i,j,k+2) + z_nd(i+1,j,k+2)
466 - z_nd(i,j,k+1) - z_nd(i+1,j,k+1) );
467 Real idz0 = 1.0 / dz0;
468 Real f = (dz1 / dz0) + 2.0;
470 Real c3 = 2.0 / (f - f2);
472 Real
c1 = -(1.0-f2)*c3;
474 Real GradWz = 0.5 * idz0 * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
475 - w(i ,j ,k ) - w(i ,j-1,k ) );
477 Real mfy = mf_vy(i,j,0);
484 tau23(i,j,k) = 0.5 * ( (
c1 * v(i,j,k-1) +
c2 * v(i,j,k ) + c3 * v(i,j,k+1))*idz0
485 + ( (w(i, j, k) - w(i, j-1, k))*dxInv[1]
486 - (met_h_eta)*GradWz ) * mfy );
490 if (zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2))) {
492 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
494 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
496 Real dz0 = 0.5 * ( z_nd(i,j,k ) + z_nd(i+1,j,k )
497 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
498 Real dz1 = 0.5 * ( z_nd(i,j,k-1) + z_nd(i+1,j,k-1)
499 - z_nd(i,j,k-2) - z_nd(i+1,j,k-2) );
500 Real idz0 = 1.0 / dz0;
501 Real f = (dz1 / dz0) + 2.0;
503 Real c3 = 2.0 / (f - f2);
505 Real
c1 = -(1.0-f2)*c3;
507 Real mfy = mf_vy(i,j,0);
509 tau23(i,j,k) = 0.5 * ( -(
c1 * v(i,j,k ) +
c2 * v(i,j,k-1) + c3 * v(i,j,k-2))*idz0
510 + (w(i, j, k) - w(i, j-1, k))*dxInv[1]*mfy );
516 if (zl_u_dir && zl_v_dir) {
517 Box planecc = bxcc; planecc.setBig(2, planecc.smallEnd(2) );
519 ParallelFor(planecc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
521 Real dz0 = 0.25 * ( 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)
522 - z_nd(i,j,k ) - z_nd(i,j+1,k ) - z_nd(i+1,j,k ) - z_nd(i+1,j+1,k ) );
523 Real dz1 = 0.25 * ( 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)
524 - 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) );
525 Real idz0 = 1.0 / dz0;
526 Real f = (dz1 / dz0) + 2.0;
528 Real c3 = 2.0 / (f - f2);
530 Real
c1 = -(1.0-f2)*c3;
532 Real GradUz = 0.5 * idz0 * ( (
c1 * u(i ,j,k-1) +
c2 * u(i ,j,k) + c3 * u(i ,j,k+1))
533 + (
c1 * u(i-1,j,k-1) +
c2 * u(i-1,j,k) + c3 * u(i-1,j,k+1)) );
534 Real GradVz = 0.5 * idz0 * ( (
c1 * v(i,j ,k-1) +
c2 * v(i,j ,k) + c3 * v(i,j ,k+1))
535 + (
c1 * v(i,j-1,k-1) +
c2 * v(i,j-1,k) + c3 * v(i,j-1,k+1)) );
537 Real mfx = mf_mx(i,j,0);
538 Real mfy = mf_my(i,j,0);
540 Real met_h_xi,met_h_eta;
544 tau11(i,j,k) = ( (u(i+1, j, k) - u(i, j, k) )*dxInv[0]
545 - (met_h_xi)*GradUz ) * mfx;
546 tau22(i,j,k) = ( (v(i, j+1, k) - v(i, j, k) )*dxInv[1]
547 - (met_h_eta)*GradVz ) * mfy;
548 tau33(i,j,k) = ( w(i, j, k+1) - w(i, j, k) )*idz0;
551 Box planexy = tbxxy; planexy.setBig(2, planexy.smallEnd(2) );
553 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
555 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k ) );
556 Real dz1 = ( z_nd(i,j,k+2) - z_nd(i,j,k+1) );
557 Real idz0 = 1.0 / dz0;
558 Real f = (dz1 / dz0) + 2.0;
560 Real c3 = 2.0 / (f - f2);
562 Real
c1 = -(1.0-f2)*c3;
564 Real GradUz = 0.5 * idz0 * ( (
c1 * u(i,j ,k-1) +
c2 * u(i,j ,k) + c3 * u(i,j ,k+1))
565 + (
c1 * u(i,j-1,k-1) +
c2 * u(i,j-1,k) + c3 * u(i,j-1,k+1)) );
566 Real GradVz = 0.5 * idz0 * ( (
c1 * v(i ,j,k-1) +
c2 * v(i ,j,k) + c3 * v(i ,j,k+1))
567 + (
c1 * v(i-1,j,k-1) +
c2 * v(i-1,j,k) + c3 * v(i-1,j,k+1)) );
569 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
570 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
572 Real met_h_xi,met_h_eta;
576 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j-1, k))*dxInv[1]*mfy
577 + (v(i, j, k) - v(i-1, j , k))*dxInv[0]*mfx
578 - (met_h_eta)*GradUz*mfy
579 - (met_h_xi )*GradVz*mfx );
587 if (!zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) ) {
588 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2));
590 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
591 Real GradWz = 0.5 * dxInv[2] * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
592 - w(i ,j ,k ) - w(i-1,j ,k ) );
594 Real mfx = mf_ux(i,j,0);
596 Real met_h_xi,met_h_zeta;
600 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
601 + ( (w(i, j, k) - w(i-1, j, k ))*dxInv[0]
602 - (met_h_xi/met_h_zeta)*GradWz ) * mfx);
606 if (!zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2))) {
607 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
609 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
610 Real GradWz = 0.5 * dxInv[2] * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
611 - w(i ,j ,k ) - w(i ,j-1,k ) );
613 Real mfy = mf_vy(i,j,0);
615 Real met_h_eta,met_h_zeta;
619 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
620 + ( (w(i, j, k) - w(i, j-1, k ))*dxInv[1]
621 - (met_h_eta/met_h_zeta)*GradWz ) * mfy );
629 if (!zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2))) {
630 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
632 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
633 Real mfx = mf_ux(i,j,0);
638 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
639 + (w(i, j, k) - w(i-1, j, k ))*dxInv[0]*mfx );
643 if (!zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2))) {
644 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
646 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
647 Real mfy = mf_vy(i,j,0);
652 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
653 + (w(i, j, k) - w(i, j-1, k ))*dxInv[1]*mfy );
662 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
663 Real dz0 = 0.25 * ( 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)
664 - 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) );
665 Real idz0 = 1.0 / dz0;
667 Real GradUz = 0.5 * idz0 * ( u(i ,j ,k+1) + u(i-1,j ,k+1)
668 - u(i ,j ,k-1) - u(i-1,j ,k-1) );
669 Real GradVz = 0.5 * idz0 * ( v(i ,j ,k+1) + v(i ,j-1,k+1)
670 - v(i ,j ,k-1) - v(i ,j-1,k-1) );
672 Real mfx = mf_mx(i,j,0);
673 Real mfy = mf_my(i,j,0);
675 Real met_h_xi,met_h_eta,met_h_zeta;
678 met_h_zeta = detJ(i,j,k);
680 tau11(i,j,k) = ( (u(i+1, j, k) - u(i, j, k))*dxInv[0] - met_h_xi*GradUz ) * mfx;
681 tau22(i,j,k) = ( (v(i, j+1, k) - v(i, j, k))*dxInv[1] - met_h_eta*GradVz ) * mfy;
682 tau33(i,j,k) = ( w(i, j, k+1) - w(i, j, k) )*dxInv[2]/met_h_zeta;
686 ParallelFor(tbxxy,tbxxz,tbxyz,
687 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
688 Real dz0 = ( z_nd(i,j,k+1) - z_nd(i,j,k-1) );
689 Real idz0 = 1.0 / dz0;
691 Real GradUz = 0.5 * idz0 * ( u(i ,j ,k+1) + u(i ,j-1,k+1)
692 - u(i ,j ,k-1) - u(i ,j-1,k-1) );
693 Real GradVz = 0.5 * idz0 * ( v(i ,j ,k+1) + v(i-1,j ,k+1)
694 - v(i ,j ,k-1) - v(i-1,j ,k-1) );
696 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
697 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
699 Real met_h_xi,met_h_eta;
703 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j-1, k))*dxInv[1]*mfy
704 + (v(i, j, k) - v(i-1, j , k))*dxInv[0]*mfx
705 - (met_h_eta)*GradUz*mfy
706 - (met_h_xi)*GradVz*mfx );
709 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
710 Real dz0 = 0.5 * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
711 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
712 Real idz0 = 1.0 / dz0;
714 Real GradWz = 0.5 * idz0 * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
715 - w(i ,j ,k-1) - w(i-1,j ,k-1) );
717 Real mfx = mf_ux(i,j,0);
719 Real met_h_xi,met_h_zeta;
723 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
724 + ( (w(i, j, k) - w(i-1, j, k ))*dxInv[0]
725 - (met_h_xi)*GradWz ) * mfx );
728 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
729 Real dz0 = 0.5 * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
730 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
731 Real idz0 = 1.0 / dz0;
733 Real GradWz = 0.5 * idz0 * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
734 - w(i ,j ,k-1) - w(i ,j-1,k-1) );
736 Real mfy = mf_vy(i,j,0);
738 Real met_h_eta,met_h_zeta;
742 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
743 + ( (w(i, j, k) - w(i, j-1, k ))*dxInv[1]
744 - (met_h_eta)*GradWz ) * mfy );
@ tau12
Definition: ERF_DataStruct.H:30
@ tau23
Definition: ERF_DataStruct.H:30
@ tau33
Definition: ERF_DataStruct.H:30
@ tau22
Definition: ERF_DataStruct.H:30
@ tau11
Definition: ERF_DataStruct.H:30
@ tau32
Definition: ERF_DataStruct.H:30
@ tau31
Definition: ERF_DataStruct.H:30
@ tau21
Definition: ERF_DataStruct.H:30
@ tau13
Definition: ERF_DataStruct.H:30
const auto & dom_hi
Definition: ERF_DiffSetup.H:10
const auto & dom_lo
Definition: ERF_DiffSetup.H:9
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:244
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:290
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:276
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:320
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:77
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:259
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:62
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:347
@ zvel_bc
Definition: ERF_IndexDefines.H:89
@ yvel_bc
Definition: ERF_IndexDefines.H:88
@ xvel_bc
Definition: ERF_IndexDefines.H:87
@ ext_dir_ingested
Definition: ERF_IndexDefines.H:212
@ ext_dir
Definition: ERF_IndexDefines.H:209
@ ext_dir_upwind
Definition: ERF_IndexDefines.H:217
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:211