Function for computing the strain rates with terrain.
57 Box domain_xy = convert(domain, tbxxy.ixType());
58 Box domain_xz = convert(domain, tbxxz.ixType());
59 Box domain_yz = convert(domain, tbxyz.ixType());
61 const auto& dom_lo = lbound(domain);
62 const auto& dom_hi = ubound(domain);
68 xl_v_dir = ( xl_v_dir && (tbxxy.smallEnd(0) == domain_xy.smallEnd(0)) );
73 xh_v_dir = ( xh_v_dir && (tbxxy.bigEnd(0) == domain_xy.bigEnd(0)) );
78 xl_w_dir = ( xl_w_dir && (tbxxz.smallEnd(0) == domain_xz.smallEnd(0)) );
83 xh_w_dir = ( xh_w_dir && (tbxxz.bigEnd(0) == domain_xz.bigEnd(0)) );
89 yl_u_dir = ( yl_u_dir && (tbxxy.smallEnd(1) == domain_xy.smallEnd(1)) );
94 yh_u_dir = ( yh_u_dir && (tbxxy.bigEnd(1) == domain_xy.bigEnd(1)) );
99 yl_w_dir = ( yl_w_dir && (tbxyz.smallEnd(1) == domain_yz.smallEnd(1)) );
104 yh_w_dir = ( yh_w_dir && (tbxyz.bigEnd(1) == domain_yz.bigEnd(1)) );
109 zl_u_dir = ( zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) );
113 zh_u_dir = ( zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2)) );
117 zl_v_dir = ( zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2)) );
121 zh_v_dir = ( zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2)) );
128 Box planexy = tbxxy; planexy.setBig(0, planexy.smallEnd(0) );
132 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
133 Real GradUz = 0.25 * dxInv[2] * ( u(i ,j ,k+1)/mf_uy(i,j,0) + u(i ,j-1,k+1)/mf_uy(i,j-1,0)
134 -u(i ,j ,k-1)/mf_uy(i,j,0) - u(i ,j-1,k-1)/mf_uy(i,j-1,0) );
135 Real GradVz = 0.25 * dxInv[2] * ( v(i ,j ,k+1)/mf_vx(i,j,0) + v(i-1,j ,k+1)/mf_vx(i-1,j,0)
136 -v(i ,j ,k-1)/mf_vx(i,j,0) - v(i-1,j ,k-1)/mf_vx(i-1,j,0) );
142 if (!need_to_test || u(dom_lo.x,j,k) >= 0.) {
143 tau12(i,j,k) = 0.5 * ( (u(i, j, k)/mf_uy(i,j,0) - u(i, j-1, k)/mf_uy(i,j-1,0))*dxInv[1]
144 + (-(8./3.) * v(i-1,j,k)/mf_vx(i-1,j,0) + 3. * v(i,j,k)/mf_vx(i,j,0) - (1./3.) * v(i+1,j,k)/mf_vx(i+1,j,0))*dxInv[0]
145 - (met_h_eta/met_h_zeta)*GradUz
146 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
148 tau12(i,j,k) = 0.5 * ( (u(i, j, k)/mf_uy(i,j,0) - u(i , j-1, k)/mf_uy(i,j-1,0))*dxInv[1]
149 + (v(i, j, k)/mf_vx(i,j,0) - v(i-1, j , k)/mf_vx(i-1,j,0))*dxInv[0]
150 - (met_h_eta/met_h_zeta)*GradUz
151 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
158 Box planexy = tbxxy; planexy.setSmall(0, planexy.bigEnd(0) );
162 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
163 Real GradUz = 0.25 * dxInv[2] * ( u(i ,j ,k+1)/mf_uy(i,j,0) + u(i ,j-1,k+1)/mf_uy(i,j-1,0)
164 -u(i ,j ,k-1)/mf_uy(i,j,0) - u(i ,j-1,k-1)/mf_uy(i,j-1,0) );
165 Real GradVz = 0.25 * dxInv[2] * ( v(i ,j ,k+1)/mf_vx(i,j,0) + v(i-1,j ,k+1)/mf_vx(i-1,j,0)
166 -v(i ,j ,k-1)/mf_vx(i,j,0) - v(i-1,j ,k-1)/mf_vx(i-1,j,0) );
172 if (!need_to_test || u(dom_hi.x+1,j,k) <= 0.) {
173 tau12(i,j,k) = 0.5 * ( (u(i, j, k)/mf_uy(i,j,0) - u(i, j-1, k)/mf_uy(i,j-1,0))*dxInv[1]
174 - (-(8./3.) * v(i,j,k)/mf_vx(i,j,0) + 3. * v(i-1,j,k)/mf_vx(i-1,j,0) - (1./3.) * v(i-2,j,k)/mf_vx(i-2,j,0))*dxInv[0]
175 - (met_h_eta/met_h_zeta)*GradUz
176 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
178 tau12(i,j,k) = 0.5 * ( (u(i, j, k)/mf_uy(i,j,0) - u(i , j-1, k)/mf_uy(i,j-1,0))*dxInv[1]
179 + (v(i, j, k)/mf_vx(i,j,0) - v(i-1, j , k)/mf_vx(i-1,j,0))*dxInv[0]
180 - (met_h_eta/met_h_zeta)*GradUz
181 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
189 Box planexz = tbxxz; planexz.setBig(0, planexz.smallEnd(0) );
190 planexz.setSmall(2, planexz.smallEnd(2)+1 ); planexz.setBig(2, planexz.bigEnd(2)-1 );
194 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
195 Real GradWz = 0.25 * dxInv[2] * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
196 - w(i ,j ,k-1) - w(i-1,j ,k-1) );
201 if (!need_to_test || u(dom_lo.x,j,k) <= 0.) {
202 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]/met_h_zeta
203 +( (-(8./3.) * w(i-1,j,k) + 3. * w(i,j,k) - (1./3.) * w(i+1,j,k))*dxInv[0]
204 -(met_h_xi/met_h_zeta)*GradWz) * mf_ux(i,j,0) );
206 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
207 + ( (w(i, j, k) - w(i-1, j, k ))*dxInv[0]
208 - (met_h_xi/met_h_zeta)*GradWz ) * mf_ux(i,j,0) );
216 Box planexz = tbxxz; planexz.setSmall(0, planexz.bigEnd(0) );
217 planexz.setSmall(2, planexz.smallEnd(2)+1 ); planexz.setBig(2, planexz.bigEnd(2)-1 );
221 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
222 Real GradWz = 0.25 * dxInv[2] * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
223 - w(i ,j ,k-1) - w(i-1,j ,k-1) );
228 if (!need_to_test || u(dom_hi.x+1,j,k) <= 0.) {
229 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]/met_h_zeta
230 - ( (-(8./3.) * w(i,j,k) + 3. * w(i-1,j,k) - (1./3.) * w(i-2,j,k))*dxInv[0]
231 - (met_h_xi/met_h_zeta)*GradWz ) * mf_ux(i,j,0) );
233 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
234 + ( (w(i, j, k) - w(i-1, j, k ))*dxInv[0]
235 - (met_h_xi/met_h_zeta)*GradWz ) * mf_ux(i,j,0) );
245 Box planexy = tbxxy; planexy.setBig(1, planexy.smallEnd(1) );
249 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
250 Real GradUz = 0.25 * dxInv[2] * ( u(i ,j ,k+1)/mf_uy(i,j,0) + u(i ,j-1,k+1)/mf_uy(i,j-1,0)
251 -u(i ,j ,k-1)/mf_uy(i,j,0) - u(i ,j-1,k-1)/mf_uy(i,j-1,0) );
252 Real GradVz = 0.25 * dxInv[2] * ( v(i ,j ,k+1)/mf_vx(i,j,0) + v(i-1,j ,k+1)/mf_vx(i-1,j,0)
253 -v(i ,j ,k-1)/mf_vx(i,j,0) - v(i-1,j ,k-1)/mf_vx(i-1,j,0) );
259 if (!need_to_test || v(i,dom_lo.y,k) >= 0.) {
260 tau12(i,j,k) = 0.5 * ( (-(8./3.) * u(i,j-1,k)/mf_uy(i,j-1,0) + 3. * u(i,j,k)/mf_uy(i,j,0) - (1./3.) * u(i,j+1,k)/mf_uy(i,j+1,0))*dxInv[1]
261 + (v(i, j, k)/mf_vx(i,j,0) - v(i-1, j, k)/mf_vx(i,j,0))*dxInv[0]
262 - (met_h_eta/met_h_zeta)*GradUz
263 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
265 tau12(i,j,k) = 0.5 * ( (u(i, j, k)/mf_uy(i,j,0) - u(i , j-1, k)/mf_uy(i,j-1,0))*dxInv[1]
266 + (v(i, j, k)/mf_vx(i,j,0) - v(i-1, j , k)/mf_vx(i-1,j,0))*dxInv[0]
267 - (met_h_eta/met_h_zeta)*GradUz
268 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
274 Box planexy = tbxxy; planexy.setSmall(1, planexy.bigEnd(1) );
278 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
279 Real GradUz = 0.25 * dxInv[2] * ( u(i ,j ,k+1)/mf_uy(i,j,0) + u(i ,j-1,k+1)/mf_uy(i,j-1,0)
280 -u(i ,j ,k-1)/mf_uy(i,j,0) - u(i ,j-1,k-1)/mf_uy(i,j-1,0) );
281 Real GradVz = 0.25 * dxInv[2] * ( v(i ,j ,k+1)/mf_vx(i,j,0) + v(i-1,j ,k+1)/mf_vx(i-1,j,0)
282 -v(i ,j ,k-1)/mf_vx(i,j,0) - v(i-1,j ,k-1)/mf_vx(i-1,j,0) );
288 if (!need_to_test || v(i,dom_hi.y+1,k) >= 0.) {
289 tau12(i,j,k) = 0.5 * ( -(-(8./3.) * u(i,j,k)/mf_uy(i,j,0) + 3. * u(i,j-1,k)/mf_uy(i,j-1,0) - (1./3.) * u(i,j-2,k)/mf_uy(i,j-2,0))*dxInv[1] +
290 + (v(i, j, k)/mf_vx(i,j,0) - v(i-1, j, k)/mf_vx(i-1,j,0))*dxInv[0]
291 - (met_h_eta/met_h_zeta)*GradUz
292 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
294 tau12(i,j,k) = 0.5 * ( (u(i, j, k)/mf_uy(i,j,0) - u(i , j-1, k)/mf_uy(i,j-1,0))*dxInv[1]
295 + (v(i, j, k)/mf_vx(i,j,0) - v(i-1, j , k)/mf_vx(i-1,j,0))*dxInv[0]
296 - (met_h_eta/met_h_zeta)*GradUz
297 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
304 Box planeyz = tbxyz; planeyz.setBig(1, planeyz.smallEnd(1) );
305 planeyz.setSmall(2, planeyz.smallEnd(2)+1 ); planeyz.setBig(2, planeyz.bigEnd(2)-1 );
309 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
310 Real GradWz = 0.25 * dxInv[2] * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
311 - w(i ,j ,k-1) - w(i ,j-1,k-1) );
316 if (!need_to_test || v(i,dom_lo.y,k) >= 0.) {
317 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]/met_h_zeta
318 + ( (-(8./3.) * w(i,j-1,k) + 3. * w(i,j ,k) - (1./3.) * w(i,j+1,k))*dxInv[1]*mf_vy(i,j,0)
319 - (met_h_eta/met_h_zeta)*GradWz ) * mf_vy(i,j,0) );
321 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
322 + ( (w(i, j, k) - w(i, j-1, k ))*dxInv[1]
323 - (met_h_eta/met_h_zeta)*GradWz ) * mf_vy(i,j,0) );
329 Box planeyz = tbxyz; planeyz.setSmall(1, planeyz.bigEnd(1) );
330 planeyz.setSmall(2, planeyz.smallEnd(2)+1 ); planeyz.setBig(2, planeyz.bigEnd(2)-1 );
334 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
335 Real GradWz = 0.25 * dxInv[2] * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
336 - w(i ,j ,k-1) - w(i ,j-1,k-1) );
341 if (!need_to_test || v(i,dom_hi.y+1,k) >= 0.) {
342 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]/met_h_zeta
343 - ( (-(8./3.) * w(i,j ,k) + 3. * w(i,j-1,k) - (1./3.) * w(i,j-2,k))*dxInv[1]
344 - (met_h_eta/met_h_zeta)*GradWz ) * mf_vy(i,j,0) );
346 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
347 + ( (w(i, j, k) - w(i, j-1, k ))*dxInv[1]
348 - (met_h_eta/met_h_zeta)*GradWz ) * mf_vy(i,j,0) );
358 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2) );
360 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
361 Real GradWz = 0.5 * dxInv[2] * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
362 - w(i ,j ,k ) - w(i-1,j ,k ) );
364 Real met_h_xi,met_h_zeta;
368 tau13(i,j,k) = 0.5 * ( (-(8./3.) * u(i,j,k-1) + 3. * u(i,j,k) - (1./3.) * u(i,j,k+1))*dxInv[2]/met_h_zeta
369 + ( (w(i, j, k) - w(i-1, j, k))*dxInv[0]
370 - (met_h_xi/met_h_zeta)*GradWz ) * mf_ux(i,j,0) );
375 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
377 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
381 tau13(i,j,k) = 0.5 * ( -(-(8./3.) * u(i,j,k) + 3. * u(i,j,k-1) - (1./3.) * u(i,j,k-2))*dxInv[2]/met_h_zeta
382 + (w(i, j, k) - w(i-1, j, k))*dxInv[0]*mf_ux(i,j,0) );
388 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
390 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
391 Real GradWz = 0.5 * dxInv[2] * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
392 - w(i ,j ,k ) - w(i ,j-1,k ) );
394 Real met_h_eta,met_h_zeta;
398 tau23(i,j,k) = 0.5 * ( (-(8./3.) * v(i,j,k-1) + 3. * v(i,j,k ) - (1./3.) * v(i,j,k+1))*dxInv[2]/met_h_zeta
399 + ( (w(i, j, k) - w(i, j-1, k))*dxInv[1]
400 - (met_h_eta/met_h_zeta)*GradWz ) * mf_vy(i,j,0) );
404 if (zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2))) {
405 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
407 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
411 tau23(i,j,k) = 0.5 * ( -(-(8./3.) * v(i,j,k ) + 3. * v(i,j,k-1) - (1./3.) * v(i,j,k-2))*dxInv[2]/met_h_zeta
412 + (w(i, j, k) - w(i, j-1, k))*dxInv[1]*mf_vy(i,j,0) );
418 if (zl_u_dir && zl_v_dir) {
419 Box planecc = bxcc; planecc.setBig(2, planecc.smallEnd(2) );
421 ParallelFor(planecc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
422 Real GradUz = 0.5 * dxInv[2] * ( (-(8./3.) * u(i ,j,k-1) + 3. * u(i ,j,k) - (1./3.) * u(i ,j,k+1))
423 + (-(8./3.) * u(i-1,j,k-1) + 3. * u(i-1,j,k) - (1./3.) * u(i-1,j,k+1)) );
424 Real GradVz = 0.5 * dxInv[2] * ( (-(8./3.) * v(i,j ,k-1) + 3. * v(i,j ,k) - (1./3.) * v(i,j ,k+1))
425 + (-(8./3.) * v(i,j-1,k-1) + 3. * v(i,j-1,k) - (1./3.) * v(i,j-1,k+1)) );
427 Real met_h_xi,met_h_eta,met_h_zeta;
430 met_h_zeta = detJ(i,j,k);
432 tau11(i,j,k) = ( (u(i+1, j, k)/mf_ux(i+1,j,0) - u(i, j, k)/mf_ux(i,j,0))*dxInv[0]
433 - (met_h_xi/met_h_zeta)*GradUz ) * mf_ux(i,j,0)*mf_ux(i,j,0);
434 tau22(i,j,k) = ( (v(i, j+1, k)/mf_vy(i,j+1,0) - v(i, j, k)/mf_vy(i,j,0))*dxInv[1]
435 - (met_h_eta/met_h_zeta)*GradVz ) * mf_vy(i,j,0)*mf_vy(i,j,0);
436 tau33(i,j,k) = (w(i, j, k+1) - w(i, j, k))*dxInv[2]/met_h_zeta;
439 Box planexy = tbxxy; planexy.setBig(2, planexy.smallEnd(2) );
441 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
442 Real GradUz = 0.5 * dxInv[2] * ( (-(8./3.) * u(i,j ,k-1) + 3. * u(i,j ,k) - (1./3.) * u(i,j ,k+1))
443 + (-(8./3.) * u(i,j-1,k-1) + 3. * u(i,j-1,k) - (1./3.) * u(i,j-1,k+1)) );
444 Real GradVz = 0.5 * dxInv[2] * ( (-(8./3.) * v(i ,j,k-1) + 3. * v(i ,j,k) - (1./3.) * v(i ,j,k+1))
445 + (-(8./3.) * v(i-1,j,k-1) + 3. * v(i-1,j,k) - (1./3.) * v(i-1,j,k+1)) );
447 Real met_h_xi,met_h_eta,met_h_zeta;
452 tau12(i,j,k) = 0.5 * ( (u(i, j, k)/mf_uy(i,j,0) - u(i , j-1, k)/mf_uy(i,j-1,0))*dxInv[1]
453 + (v(i, j, k)/mf_vx(i,j,0) - v(i-1, j , k)/mf_vx(i-1,j,0))*dxInv[0]
454 - (met_h_eta/met_h_zeta)*GradUz
455 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_uy(i,j,0);
463 if (!zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) ) {
464 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2));
466 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
467 Real GradWz = 0.5 * dxInv[2] * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
468 - w(i ,j ,k ) - w(i-1,j ,k ) );
470 Real met_h_xi,met_h_zeta;
474 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
475 + ( (w(i, j, k) - w(i-1, j, k ))*dxInv[0]
476 - (met_h_xi/met_h_zeta)*GradWz ) * mf_ux(i,j,0) );
480 if (!zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2))) {
481 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
483 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
484 Real GradWz = 0.5 * dxInv[2] * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
485 - w(i ,j ,k ) - w(i ,j-1,k ) );
487 Real met_h_eta,met_h_zeta;
491 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
492 + ( (w(i, j, k) - w(i, j-1, k ))*dxInv[1]
493 - (met_h_eta/met_h_zeta)*GradWz ) * mf_vy(i,j,0) );
501 if (!zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2))) {
502 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
504 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
508 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
509 + (w(i, j, k) - w(i-1, j, k ))*dxInv[0]*mf_ux(i,j,0) );
513 if (!zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2))) {
514 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
516 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
520 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
521 + (w(i, j, k) - w(i, j-1, k ))*dxInv[1]*mf_vy(i,j,0) );
530 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
531 Real GradUz = 0.25 * dxInv[2] * ( u(i ,j ,k+1)/mf_ux(i,j,0) + u(i-1,j ,k+1)/mf_ux(i-1,j,0)
532 -u(i ,j ,k-1)/mf_ux(i,j,0) - u(i-1,j ,k-1)/mf_ux(i-1,j,0) );
533 Real GradVz = 0.25 * dxInv[2] * ( v(i ,j ,k+1)/mf_vy(i,j,0) + v(i ,j-1,k+1)/mf_vy(i,j-1,0)
534 -v(i ,j ,k-1)/mf_vy(i,j,0) - v(i ,j-1,k-1)/mf_vy(i,j-1,0) );
536 Real met_h_xi,met_h_eta,met_h_zeta;
539 met_h_zeta = detJ(i,j,k);
541 tau11(i,j,k) = ( (u(i+1, j, k)/mf_ux(i+1,j,0) - u(i, j, k)/mf_ux(i,j,0))*dxInv[0]
542 - (met_h_xi/met_h_zeta)*GradUz ) * mf_mx(i,j,0)*mf_mx(i,j,0);
543 tau22(i,j,k) = ( (v(i, j+1, k)/mf_vy(i,j+1,0) - v(i, j, k)/mf_vy(i,j,0))*dxInv[1]
544 - (met_h_eta/met_h_zeta)*GradVz ) * mf_my(i,j,0)*mf_my(i,j,0);
545 tau33(i,j,k) = (w(i, j, k+1) - w(i, j, k))*dxInv[2]/met_h_zeta;
549 ParallelFor(tbxxy,tbxxz,tbxyz,
550 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
551 Real GradUz = 0.25 * dxInv[2] * ( u(i ,j ,k+1)/mf_uy(i,j,0) + u(i ,j-1,k+1)/mf_uy(i,j-1,0)
552 -u(i ,j ,k-1)/mf_uy(i,j,0) - u(i ,j-1,k-1)/mf_uy(i,j-1,0) );
553 Real GradVz = 0.25 * dxInv[2] * ( v(i ,j ,k+1)/mf_vx(i,j,0) + v(i-1,j ,k+1)/mf_vx(i-1,j,0)
554 -v(i ,j ,k-1)/mf_vx(i,j,0) - v(i-1,j ,k-1)/mf_vx(i-1,j,0) );
556 Real met_h_xi,met_h_eta,met_h_zeta;
561 tau12(i,j,k) = 0.5 * ( (u(i, j, k)/mf_uy(i,j,0) - u(i , j-1, k)/mf_uy(i,j-1,0))*dxInv[1]
562 + (v(i, j, k)/mf_vx(i,j,0) - v(i-1, j , k)/mf_vx(i-1,j,0))*dxInv[0]
563 - (met_h_eta/met_h_zeta)*GradUz
564 - (met_h_xi /met_h_zeta)*GradVz ) * mf_ux(i,j,0)*mf_ux(i,j,0);
567 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
568 Real GradWz = 0.25 * dxInv[2] * ( w(i ,j ,k+1) + w(i-1,j ,k+1)
569 - w(i ,j ,k-1) - w(i-1,j ,k-1) );
571 Real met_h_xi,met_h_zeta;
575 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i , j, k-1))*dxInv[2]/met_h_zeta
576 + ( (w(i, j, k) - w(i-1, j, k ))*dxInv[0]
577 - (met_h_xi/met_h_zeta)*GradWz ) * mf_ux(i,j,0) );
580 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
581 Real GradWz = 0.25 * dxInv[2] * ( w(i ,j ,k+1) + w(i ,j-1,k+1)
582 - w(i ,j ,k-1) - w(i ,j-1,k-1) );
584 Real met_h_eta,met_h_zeta;
588 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j , k-1))*dxInv[2]/met_h_zeta
589 + ( (w(i, j, k) - w(i, j-1, k ))*dxInv[1]
590 - (met_h_eta/met_h_zeta)*GradWz ) * mf_vy(i,j,0) );
@ tau12
Definition: ERF_DataStruct.H:26
@ tau23
Definition: ERF_DataStruct.H:26
@ tau33
Definition: ERF_DataStruct.H:26
@ tau22
Definition: ERF_DataStruct.H:26
@ tau11
Definition: ERF_DataStruct.H:26
@ tau32
Definition: ERF_DataStruct.H:26
@ tau31
Definition: ERF_DataStruct.H:26
@ tau21
Definition: ERF_DataStruct.H:26
@ tau13
Definition: ERF_DataStruct.H:26
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_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:231
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