1 #ifndef ERF_TERRAIN_METRIC_H_
2 #define ERF_TERRAIN_METRIC_H_
5 #include <AMReX_Geometry.H>
6 #include <AMReX_MultiFab.H>
14 amrex::MultiFab& z_phys_nd, amrex::MultiFab& z_phys_cc);
22 init_zlevels (amrex::Vector<amrex::Vector<amrex::Real>>& zlevels_stag,
23 amrex::Vector<amrex::Vector<amrex::Real>>& stretched_dz_h,
24 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real>>& stretched_dz_d,
25 amrex::Vector<amrex::Geometry>
const& geom,
26 amrex::Vector<amrex::IntVect>
const& ref_ratio,
33 amrex::MultiFab& z_phys_nd,
34 amrex::Vector<amrex::Real>
const& z_levels_h,
35 amrex::GpuArray<ERF_BC, AMREX_SPACEDIM*2>& phys_bc_type);
39 amrex::MultiFab& z_phys_nd,
40 amrex::Vector<amrex::Real>
const& z_levels_h);
54 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
55 const amrex::Array4<const amrex::Real>& z_nd)
59 ( z_nd(i+1,j,k+1) + z_nd(i+1,j+1,k+1) + z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
60 -z_nd(i+1,j,k ) - z_nd(i+1,j+1,k ) - z_nd(i,j,k ) - z_nd(i,j+1,k ) );
69 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
70 const amrex::Array4<const amrex::Real>& z_nd)
74 ( z_nd(i+1,j,k) + z_nd(i+1,j+1,k) + z_nd(i+1,j,k+1) + z_nd(i+1,j+1,k+1)
75 -z_nd(i ,j,k) - z_nd(i ,j+1,k) - z_nd(i ,j,k+1) - z_nd(i ,j+1,k+1) );
84 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
85 const amrex::Array4<const amrex::Real>& z_nd)
89 ( z_nd(i,j+1,k) + z_nd(i+1,j+1,k) + z_nd(i,j+1,k+1) + z_nd(i+1,j+1,k+1)
90 -z_nd(i,j ,k) - z_nd(i+1,j ,k) - z_nd(i,j ,k+1) - z_nd(i+1,j ,k+1) );
103 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
104 const amrex::Array4<const amrex::Real>& z_nd)
106 amrex::Real met_h_zeta = 0.5 * cellSizeInv[2] * ( (z_nd(i,j ,k+1) - z_nd(i,j ,k))
107 + (z_nd(i,j+1,k+1) - z_nd(i,j+1,k)) );
116 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
117 const amrex::Array4<const amrex::Real>& z_nd)
120 (z_nd(i+1,j ,k ) - z_nd(i-1,j ,k )) + (z_nd(i+1,j ,k+1) - z_nd(i-1,j ,k+1)) +
121 (z_nd(i+1,j+1,k ) - z_nd(i-1,j+1,k )) + (z_nd(i+1,j+1,k+1) - z_nd(i-1,j+1,k+1)) );
130 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
131 const amrex::Array4<const amrex::Real>& z_nd)
133 amrex::Real met_h_eta = 0.5 * cellSizeInv[1] * ( (z_nd(i,j+1,k ) - z_nd(i,j,k ))
134 + (z_nd(i,j+1,k+1) - z_nd(i,j,k+1)) );
143 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
144 const amrex::Array4<const amrex::Real>& z_nd)
146 amrex::Real met_h_zeta = 0.5 * cellSizeInv[2] * ( (z_nd(i ,j,k+1) - z_nd(i ,j,k ))
147 + (z_nd(i+1,j,k+1) - z_nd(i+1,j,k )) );
156 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
157 const amrex::Array4<const amrex::Real>& z_nd)
159 amrex::Real met_h_xi = 0.5 * cellSizeInv[0] * ( (z_nd(i+1,j,k ) - z_nd(i,j,k ))
160 + (z_nd(i+1,j,k+1) - z_nd(i,j,k+1)) );
169 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
170 const amrex::Array4<const amrex::Real>& z_nd)
173 ( (z_nd(i ,j+1,k ) - z_nd(i ,j-1,k )) + (z_nd(i ,j+1,k+1) - z_nd(i ,j-1,k+1)) +
174 (z_nd(i+1,j+1,k ) - z_nd(i+1,j-1,k )) + (z_nd(i+1,j+1,k+1) - z_nd(i+1,j-1,k+1)) );
183 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
184 const amrex::Array4<const amrex::Real>& z_nd)
187 ( (z_nd(i ,j ,k+1) - z_nd(i ,j ,k-1)) + (z_nd(i+1,j ,k+1) - z_nd(i+1,j ,k-1)) +
188 (z_nd(i ,j+1,k+1) - z_nd( i,j+1,k-1)) + (z_nd(i+1,j+1,k+1) - z_nd(i+1,j+1,k-1)) );
197 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
198 const amrex::Array4<const amrex::Real>& z_nd)
200 amrex::Real met_h_xi = 0.5 * cellSizeInv[0] * ( (z_nd(i+1,j ,k) - z_nd(i,j ,k))
201 + (z_nd(i+1,j+1,k) - z_nd(i,j+1,k)) );
210 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
211 const amrex::Array4<const amrex::Real>& z_nd)
213 amrex::Real met_h_eta = 0.5 * cellSizeInv[1] * ( (z_nd(i ,j+1,k) - z_nd(i ,j,k))
214 + (z_nd(i+1,j+1,k) - z_nd(i+1,j,k)) );
229 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
230 const amrex::Array4<const amrex::Real>& z_nd)
233 amrex::Real met_h_zeta = dzInv * (z_nd(i,j,k+1) - z_nd(i,j,k));
242 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
243 const amrex::Array4<const amrex::Real>& z_nd)
247 ( z_nd(i+1,j,k) + z_nd(i+1,j,k+1)
248 -z_nd(i-1,j,k) - z_nd(i-1,j,k+1) );
257 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
258 const amrex::Array4<const amrex::Real>& z_nd)
262 ( z_nd(i,j+1,k) + z_nd(i,j+1,k+1)
263 -z_nd(i,j-1,k) - z_nd(i,j-1,k+1) );
274 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
275 const amrex::Array4<const amrex::Real>& z_nd)
278 amrex::Real met_h_zeta = 0.25 * dzInv * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
279 -z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
288 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
289 const amrex::Array4<const amrex::Real>& z_nd)
293 ( z_nd(i+1,j+1,k) + z_nd(i+1,j ,k)
294 -z_nd(i-1,j+1,k) - z_nd(i-1,j ,k) );
303 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
304 const amrex::Array4<const amrex::Real>& z_nd)
307 amrex::Real met_h_eta = dyInv * ( z_nd(i,j+1,k) - z_nd(i,j,k) );
318 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
319 const amrex::Array4<const amrex::Real>& z_nd)
322 amrex::Real met_h_zeta = 0.25 * dzInv * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
323 -z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
332 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
333 const amrex::Array4<const amrex::Real>& z_nd)
336 amrex::Real met_h_xi = dxInv * ( z_nd(i+1,j,k) - z_nd(i,j,k) );
345 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
346 const amrex::Array4<const amrex::Real>& z_nd)
350 ( z_nd(i+1,j+1,k) + z_nd(i,j+1,k)
351 -z_nd(i+1,j-1,k) - z_nd(i,j-1,k) );
360 const amrex::Array4<const amrex::Real>& z_nd)
362 const amrex::Real z_cc = 0.125*( z_nd(i ,j ,k ) + z_nd(i ,j ,k+1) +
363 + z_nd(i+1,j ,k ) + z_nd(i ,j ,k+1)
364 + z_nd(i ,j+1,k ) + z_nd(i ,j+1,k+1)
365 + z_nd(i+1,j+1,k ) + z_nd(i ,j+1,k+1));
375 const amrex::Array4<const amrex::Real>& z_nd)
377 const amrex::Real z_wf = 0.25*( z_nd(i ,j ,k ) + z_nd(i+1,j ,k )
378 + z_nd(i ,j+1,k ) + z_nd(i+1,j+1,k ) );
388 const amrex::Array4<const amrex::Real>& z_nd)
390 const amrex::Real z_cc = 0.125*( z_nd(i ,j ,k ) + z_nd(i ,j ,k+1) +
391 + z_nd(i+1,j ,k ) + z_nd(i+1,j ,k+1)
392 + z_nd(i ,j+1,k ) + z_nd(i ,j+1,k+1)
393 + z_nd(i+1,j+1,k ) + z_nd(i+1,j+1,k+1));
397 const amrex::Real z0_cc = 0.25*( z_nd(i ,j ,0) + z_nd(i ,j+1,0)
398 + z_nd(i+1,j ,0) + z_nd(i+1,j+1,0));
400 return (z_cc - z0_cc);
413 const amrex::Array4<const amrex::Real>& u_arr,
414 const amrex::Array4<const amrex::Real>& v_arr,
415 const amrex::Array4<const amrex::Real>& mf_u,
416 const amrex::Array4<const amrex::Real>& mf_v,
417 const amrex::Array4<const amrex::Real>& z_nd,
418 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv)
426 +
amrex::Real(8.0/12.0)*(z_x_p1 - z_x_m1)) * dxInv[0];
434 +
amrex::Real(8.0/12.0)*(z_y_p1 - z_y_m1)) * dxInv[1];
437 amrex::Real u_hi = (k == 0) ? 1.5 * u_arr(i+1,j ,k ) - 0.5 * u_arr(i+1,j ,k+1) :
438 0.5 * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
439 amrex::Real u_lo = (k == 0) ? 1.5 * u_arr(i ,j ,k ) - 0.5 * u_arr(i ,j ,k+1) :
440 0.5 * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
444 amrex::Real v_hi = (k == 0) ? 1.5 * v_arr(i ,j+1,k ) - 0.5 * v_arr(i ,j+1,k+1) :
445 0.5 * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
446 amrex::Real v_lo = (k == 0) ? 1.5 * v_arr(i ,j ,k ) - 0.5 * v_arr(i ,j ,k+1) :
447 0.5 * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
451 amrex::Real u_met = met_xi * 0.5 * ( u_hi*mf_u_hi + u_lo*mf_u_lo );
452 amrex::Real v_met = met_eta * 0.5 * ( v_hi*mf_v_hi + v_lo*mf_v_lo );
463 const amrex::Array4<const amrex::Real>& u_arr,
464 const amrex::Array4<const amrex::Real>& v_arr,
465 const amrex::Array4<const amrex::Real>& mf_u,
466 const amrex::Array4<const amrex::Real>& mf_v,
467 const amrex::Array4<const amrex::Real>& z_nd,
468 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv)
476 +
amrex::Real(8.0/12.0)*(z_x_p1 - z_x_m1)) * dxInv[0];
484 +
amrex::Real(8.0/12.0)*(z_y_p1 - z_y_m1)) * dxInv[1];
487 amrex::Real u_hi = (k == 0) ? 1.5 * u_arr(i+1,j ,k ) - 0.5 * u_arr(i+1,j ,k+1) :
488 0.5 * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
489 amrex::Real u_lo = (k == 0) ? 1.5 * u_arr(i ,j ,k ) - 0.5 * u_arr(i ,j ,k+1) :
490 0.5 * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
494 amrex::Real v_hi = (k == 0) ? 1.5 * v_arr(i ,j+1,k ) - 0.5 * v_arr(i ,j+1,k+1) :
495 0.5 * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
496 amrex::Real v_lo = (k == 0) ? 1.5 * v_arr(i ,j ,k ) - 0.5 * v_arr(i ,j ,k+1) :
497 0.5 * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
501 amrex::Real u_met = met_xi * 0.5 * ( u_hi*mf_u_hi + u_lo*mf_u_lo );
502 amrex::Real v_met = met_eta * 0.5 * ( v_hi*mf_v_hi + v_lo*mf_v_lo );
518 const amrex::Array4<const amrex::Real>& u_arr,
519 const amrex::Array4<const amrex::Real>& v_arr,
520 const amrex::Array4<const amrex::Real>& mf_u,
521 const amrex::Array4<const amrex::Real>& mf_v,
522 const amrex::Array4<const amrex::Real>& z_nd,
523 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv)
528 amrex::Real met_xi = 0.5 * (z_x_h - z_x_l) * dxInv[0];
533 amrex::Real met_eta = 0.5 * (z_y_h - z_y_l) * dxInv[1];
536 amrex::Real u_hi = (k == 0) ? 1.5 * u_arr(i+1,j ,k ) - 0.5 * u_arr(i+1,j ,k+1) :
537 0.5 * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
538 amrex::Real u_lo = (k == 0) ? 1.5 * u_arr(i ,j ,k ) - 0.5 * u_arr(i ,j ,k+1) :
539 0.5 * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
543 amrex::Real v_hi = (k == 0) ? 1.5 * v_arr(i ,j+1,k ) - 0.5 * v_arr(i ,j+1,k+1) :
544 0.5 * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
545 amrex::Real v_lo = (k == 0) ? 1.5 * v_arr(i ,j ,k ) - 0.5 * v_arr(i ,j ,k+1) :
546 0.5 * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
550 amrex::Real u_met = met_xi * 0.5 * ( u_hi*mf_u_hi + u_lo*mf_u_lo );
551 amrex::Real v_met = met_eta * 0.5 * ( v_hi*mf_v_hi + v_lo*mf_v_lo );
562 const amrex::Array4<const amrex::Real>& u_arr,
563 const amrex::Array4<const amrex::Real>& v_arr,
564 const amrex::Array4<const amrex::Real>& mf_u,
565 const amrex::Array4<const amrex::Real>& mf_v,
566 const amrex::Array4<const amrex::Real>& z_nd,
567 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv)
572 amrex::Real met_xi = 0.5 * (z_x_h - z_x_l) * dxInv[0];
577 amrex::Real met_eta = 0.5 * (z_y_h - z_y_l) * dxInv[1];
580 amrex::Real u_hi = (k == 0) ? 1.5 * u_arr(i+1,j ,k ) - 0.5 * u_arr(i+1,j ,k+1) :
581 0.5 * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
582 amrex::Real u_lo = (k == 0) ? 1.5 * u_arr(i ,j ,k ) - 0.5 * u_arr(i ,j ,k+1) :
583 0.5 * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
587 amrex::Real v_hi = (k == 0) ? 1.5 * v_arr(i ,j+1,k ) - 0.5 * v_arr(i ,j+1,k+1) :
588 0.5 * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
589 amrex::Real v_lo = (k == 0) ? 1.5 * v_arr(i ,j ,k ) - 0.5 * v_arr(i ,j ,k+1) :
590 0.5 * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
594 amrex::Real u_met = met_xi * 0.5 * ( u_hi*mf_u_hi + u_lo*mf_u_lo );
595 amrex::Real v_met = met_eta * 0.5 * ( v_hi*mf_v_hi + v_lo*mf_v_lo );
613 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv,
614 const amrex::Array4<const amrex::Real>& zphys_arr,
615 const amrex::Array4<amrex::Real>& phi1_arr,
616 const amrex::Array4<amrex::Real>& phi2_arr,
617 const amrex::Array4<amrex::Real>& phi3_arr)
621 amrex::Real InvNorm = 1.0 / std::sqrt(1.0 + h_xi*h_xi + h_eta*h_eta);
622 phi1_arr(i,j,klo) = -h_xi * flux * InvNorm;
623 phi2_arr(i,j,klo) = -h_eta * flux * InvNorm;
624 phi3_arr(i,j,klo) = flux * InvNorm;
634 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv,
635 const amrex::Array4<const amrex::Real>& zphys_arr,
636 const amrex::Array4<const amrex::Real>& u_arr,
637 const amrex::Array4<const amrex::Real>& v_arr,
638 const amrex::Array4<const amrex::Real>& w_arr,
639 const amrex::Array4<amrex::Real>& tau11_arr,
640 const amrex::Array4<amrex::Real>& tau22_arr,
641 const amrex::Array4<amrex::Real>& tau33_arr,
642 const amrex::Array4<amrex::Real>& tau12_arr,
643 const amrex::Array4<amrex::Real>& tau21_arr,
644 const amrex::Array4<amrex::Real>& tau13_arr,
645 const amrex::Array4<amrex::Real>& tau31_arr,
646 const amrex::Array4<amrex::Real>& tau23_arr,
647 const amrex::Array4<amrex::Real>& tau32_arr)
650 amrex::Array1D<amrex::Real,0,2> n_hat;
653 amrex::Array1D<amrex::Real,0,2> t_hat_1;
654 amrex::Array1D<amrex::Real,0,2> t_hat_2;
655 amrex::Array1D<amrex::Real,0,2> u_t_hat;
658 amrex::Array1D<amrex::Real,0,2> a_hat;
661 amrex::Array2D<amrex::Real,0,2,0,2> R_mat;
669 amrex::Real Inormn = 1./std::sqrt(1.0 + h_xi*h_xi + h_eta*h_eta);
670 n_hat(0) = Inormn*h_xi; n_hat(1) = Inormn*h_eta; n_hat(2) = -Inormn;
673 amrex::Real Inorm1 = 1./std::sqrt(1.0 + h_xi*h_xi);
674 amrex::Real Inorm2 = 1./std::sqrt(1.0 + h_eta*h_eta);
675 t_hat_1(0) = -Inorm1; t_hat_2(1) = -Inorm2;
676 t_hat_1(2) = -Inorm1*h_xi; t_hat_2(2) = -Inorm2*h_eta;
680 amrex::Real mag1 = (u_arr(i,j,klo) + h_xi *w_arr(i,j,klo))*Inorm1;
681 amrex::Real mag2 = (v_arr(i,j,klo) + h_eta*w_arr(i,j,klo))*Inorm2;
682 for (
int icol(0); icol<3; ++icol) {
683 u_t_hat(icol) = mag1*t_hat_1(icol) + mag2*t_hat_2(icol);
684 Norm_u_t += u_t_hat(icol)*u_t_hat(icol);
686 for (
int icol(0); icol<3; ++icol) {
687 u_t_hat(icol) /= std::sqrt(Norm_u_t);
691 a_hat(0) = n_hat(1)*u_t_hat(2) - n_hat(2)*u_t_hat(1);
692 a_hat(1) = -(n_hat(0)*u_t_hat(2) - n_hat(2)*u_t_hat(0));
693 a_hat(2) = n_hat(0)*u_t_hat(1) - n_hat(1)*u_t_hat(0);
698 for (
int icol(0); icol<3; ++icol) {
699 R_mat(icol,jrow) = u_t_hat(icol);
702 for (
int icol(0); icol<3; ++icol) {
703 R_mat(icol,jrow) = a_hat(icol);
706 for (
int icol(0); icol<3; ++icol) {
707 R_mat(icol,jrow) = n_hat(icol);
714 amrex::Real T12 = (R_mat(0,0)*R_mat(2,1) + R_mat(2,0)*R_mat(0,1))*flux;
715 amrex::Real T13 = (R_mat(0,0)*R_mat(2,2) + R_mat(0,2)*R_mat(2,0))*flux;
716 amrex::Real T23 = (R_mat(0,1)*R_mat(2,2) + R_mat(0,2)*R_mat(2,1))*flux;
719 tau11_arr(i,j,klo) = h_zeta*T11;
720 tau22_arr(i,j,klo) = h_zeta*T22;
721 tau33_arr(i,j,klo) = -h_xi*T13 - h_eta*T23 + T33;
723 tau12_arr(i,j,klo) = h_zeta*T12;
724 tau21_arr(i,j,klo) = tau21_arr(i,j,klo);
726 tau13_arr(i,j,klo) = -h_xi*T11 - h_eta*T12 + T13;
727 tau31_arr(i,j,klo) = h_zeta*T13;
729 tau23_arr(i,j,klo) = -h_xi*T12 - h_eta*T22 + T23;
730 tau32_arr(i,j,klo) = h_zeta*T23;
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real OmegaFromW(int &i, int &j, int &k, amrex::Real w, const amrex::Array4< const amrex::Real > &u_arr, const amrex::Array4< const amrex::Real > &v_arr, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, const amrex::Array4< const amrex::Real > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv)
Definition: ERF_TerrainMetrics.H:412
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_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:302
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:241
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:287
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtIface(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:115
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:273
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:228
void init_zlevels(amrex::Vector< amrex::Vector< amrex::Real >> &zlevels_stag, amrex::Vector< amrex::Vector< amrex::Real >> &stretched_dz_h, amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real >> &stretched_dz_d, amrex::Vector< amrex::Geometry > const &geom, amrex::Vector< amrex::IntVect > const &ref_ratio, const amrex::Real grid_stretching_ratio, const amrex::Real zsurf, const amrex::Real dz0)
AMREX_FORCE_INLINE AMREX_GPU_DEVICE amrex::Real Compute_h_zeta_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:53
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:317
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_Zrel_AtCellCenter(const int &i, const int &j, const int &k, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:387
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:83
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtKface(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:182
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_Z_AtCellCenter(const int &i, const int &j, const int &k, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:359
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void rotate_scalar_flux(const int &i, const int &j, const int &klo, const amrex::Real &flux, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &zphys_arr, const amrex::Array4< amrex::Real > &phi1_arr, const amrex::Array4< amrex::Real > &phi2_arr, const amrex::Array4< amrex::Real > &phi3_arr)
Definition: ERF_TerrainMetrics.H:609
void init_default_zphys(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::MultiFab &z_phys_cc)
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtIface(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:102
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void rotate_stress_tensor(const int &i, const int &j, const int &klo, const amrex::Real &flux, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &zphys_arr, const amrex::Array4< const amrex::Real > &u_arr, const amrex::Array4< const amrex::Real > &v_arr, const amrex::Array4< const amrex::Real > &w_arr, const amrex::Array4< amrex::Real > &tau11_arr, const amrex::Array4< amrex::Real > &tau22_arr, const amrex::Array4< amrex::Real > &tau33_arr, const amrex::Array4< amrex::Real > &tau12_arr, const amrex::Array4< amrex::Real > &tau21_arr, const amrex::Array4< amrex::Real > &tau13_arr, const amrex::Array4< amrex::Real > &tau31_arr, const amrex::Array4< amrex::Real > &tau23_arr, const amrex::Array4< amrex::Real > &tau32_arr)
Definition: ERF_TerrainMetrics.H:630
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtJface(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:155
amrex::Real get_dzmin_terrain(amrex::MultiFab &z_phys_nd)
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_Z_AtWFace(const int &i, const int &j, const int &k, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:374
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtKface(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:196
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:256
void init_which_terrain_grid(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::Vector< amrex::Real > const &z_levels_h)
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtIface(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:129
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_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:331
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtJface(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:142
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:68
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtJface(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:168
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:344
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtKface(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:209
void make_terrain_fitted_coords(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::Vector< amrex::Real > const &z_levels_h, amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > &phys_bc_type)
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real WFromOmega(int &i, int &j, int &k, amrex::Real omega, const amrex::Array4< const amrex::Real > &u_arr, const amrex::Array4< const amrex::Real > &v_arr, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, const amrex::Array4< const amrex::Real > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv)
Definition: ERF_TerrainMetrics.H:462
@ omega
Definition: ERF_Morrison.H:53