1 #ifndef ERF_TERRAIN_METRIC_H_
2 #define ERF_TERRAIN_METRIC_H_
5 #include <AMReX_Geometry.H>
6 #include <AMReX_MultiFab.H>
16 amrex::MultiFab& z_phys_nd, amrex::MultiFab& z_phys_cc,
48 init_zlevels (amrex::Vector<amrex::Vector<amrex::Real>>& zlevels_stag,
49 amrex::Vector<amrex::Vector<amrex::Real>>& stretched_dz_h,
50 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real>>& stretched_dz_d,
51 amrex::Vector<amrex::Geometry>
const& geom,
52 amrex::Vector<amrex::IntVect>
const& ref_ratio,
98 amrex::MultiFab& z_phys_nd,
99 amrex::Vector<amrex::Real>
const& z_levels_h,
100 amrex::GpuArray<ERF_BC, AMREX_SPACEDIM*2>& phys_bc_type,
102 amrex::MultiFab
const* z_phys_interp =
nullptr);
107 const amrex::MultiFab& z_phys_nd,
108 const amrex::Vector<amrex::Real>& z_levels_h);
122 amrex::MultiFab& z_phys_nd,
123 amrex::Vector<amrex::Real>
const& z_levels_h,
125 amrex::MultiFab
const* z_phys_interp =
nullptr);
145 amrex::MultiFab& z_phys_nd,
146 amrex::Vector<amrex::Real>
const& z_levels_h,
148 amrex::MultiFab
const* z_phys_interp);
176 amrex::Vector<amrex::Vector<amrex::Real>>
const& zlevels_stag,
177 amrex::Vector<amrex::Vector<amrex::Real>>& stretched_dz_h,
178 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real>>& stretched_dz_d);
194 AMREX_GPU_HOST_DEVICE
198 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
199 const amrex::Array4<const amrex::Real>& z_nd)
203 ( 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)
204 - z_nd(i+1,j,k ) - z_nd(i+1,j+1,k ) - z_nd(i,j,k ) - z_nd(i,j+1,k ) );
219 AMREX_GPU_HOST_DEVICE
223 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
224 const amrex::Array4<const amrex::Real>& z_nd)
228 ( 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)
229 - z_nd(i ,j,k) - z_nd(i ,j+1,k) - z_nd(i ,j,k+1) - z_nd(i ,j+1,k+1) );
244 AMREX_GPU_HOST_DEVICE
248 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
249 const amrex::Array4<const amrex::Real>& z_nd)
253 ( 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)
254 - z_nd(i,j ,k) - z_nd(i+1,j ,k) - z_nd(i,j ,k+1) - z_nd(i+1,j ,k+1) );
277 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
278 const amrex::Array4<const amrex::Real>& z_nd)
280 amrex::Real met_h_zeta =
myhalf * cellSizeInv[2] * ( (z_nd(i,j ,k+1) - z_nd(i,j ,k))
281 + (z_nd(i,j+1,k+1) - z_nd(i,j+1,k)) );
296 AMREX_GPU_HOST_DEVICE
300 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
301 const amrex::Array4<const amrex::Real>& z_nd)
304 (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)) +
305 (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)) );
324 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
325 const amrex::Array4<const amrex::Real>& z_nd)
327 amrex::Real met_h_eta =
myhalf * cellSizeInv[1] * ( (z_nd(i,j+1,k ) - z_nd(i,j,k ))
328 + (z_nd(i,j+1,k+1) - z_nd(i,j,k+1)) );
347 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
348 const amrex::Array4<const amrex::Real>& z_nd)
350 amrex::Real met_h_zeta =
myhalf * cellSizeInv[2] * ( (z_nd(i ,j,k+1) - z_nd(i ,j,k ))
351 + (z_nd(i+1,j,k+1) - z_nd(i+1,j,k )) );
370 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
371 const amrex::Array4<const amrex::Real>& z_nd)
373 amrex::Real met_h_xi =
myhalf * cellSizeInv[0] * ( (z_nd(i+1,j,k ) - z_nd(i,j,k ))
374 + (z_nd(i+1,j,k+1) - z_nd(i,j,k+1)) );
389 AMREX_GPU_HOST_DEVICE
393 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
394 const amrex::Array4<const amrex::Real>& z_nd)
397 ( (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)) +
398 (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)) );
413 AMREX_GPU_HOST_DEVICE
417 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
418 const amrex::Array4<const amrex::Real>& z_nd)
421 ( (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)) +
422 (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)) );
437 AMREX_GPU_HOST_DEVICE
441 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
442 const amrex::Array4<const amrex::Real>& z_nd)
444 amrex::Real met_h_xi =
myhalf * cellSizeInv[0] * ( (z_nd(i+1,j ,k) - z_nd(i,j ,k))
445 + (z_nd(i+1,j+1,k) - z_nd(i,j+1,k)) );
460 AMREX_GPU_HOST_DEVICE
464 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
465 const amrex::Array4<const amrex::Real>& z_nd)
467 amrex::Real met_h_eta =
myhalf * cellSizeInv[1] * ( (z_nd(i ,j+1,k) - z_nd(i ,j,k))
468 + (z_nd(i+1,j+1,k) - z_nd(i+1,j,k)) );
493 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
494 const amrex::Array4<const amrex::Real>& z_nd)
497 amrex::Real met_h_zeta = dzInv * (z_nd(i,j,k+1) - z_nd(i,j,k));
516 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
517 const amrex::Array4<const amrex::Real>& z_nd)
521 ( z_nd(i+1,j,k) + z_nd(i+1,j,k+1)
522 - z_nd(i-1,j,k) - z_nd(i-1,j,k+1) );
541 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
542 const amrex::Array4<const amrex::Real>& z_nd)
546 ( z_nd(i,j+1,k) + z_nd(i,j+1,k+1)
547 - z_nd(i,j-1,k) - z_nd(i,j-1,k+1) );
568 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
569 const amrex::Array4<const amrex::Real>& z_nd)
573 - z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
592 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
593 const amrex::Array4<const amrex::Real>& z_nd)
597 ( z_nd(i+1,j+1,k) + z_nd(i+1,j ,k)
598 - z_nd(i-1,j+1,k) - z_nd(i-1,j ,k) );
617 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
618 const amrex::Array4<const amrex::Real>& z_nd)
621 amrex::Real met_h_eta = dyInv * ( z_nd(i,j+1,k) - z_nd(i,j,k) );
642 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
643 const amrex::Array4<const amrex::Real>& z_nd)
647 - z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
666 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
667 const amrex::Array4<const amrex::Real>& z_nd)
689 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
690 const amrex::Array4<const amrex::Real>& z_nd)
694 ( z_nd(i+1,j+1,k) + z_nd(i,j+1,k)
695 - z_nd(i+1,j-1,k) - z_nd(i,j-1,k) );
713 const amrex::Array4<const amrex::Real>& z_nd)
716 + z_nd(i+1,j ,k) + z_nd(i+1,j ,k+1)
717 + z_nd(i ,j+1,k) + z_nd(i ,j+1,k+1)
718 + z_nd(i+1,j+1,k) + z_nd(i+1,j+1,k+1));
733 AMREX_GPU_HOST_DEVICE
737 const amrex::Array4<const amrex::Real>& z_nd)
740 + z_nd(i ,j+1,k) + z_nd(i+1,j+1,k) );
755 AMREX_GPU_HOST_DEVICE
759 const amrex::Array4<const amrex::Real>& z_nd)
762 + z_nd(i+1,j ,k) + z_nd(i+1,j ,k+1)
763 + z_nd(i ,j+1,k) + z_nd(i ,j+1,k+1)
764 + z_nd(i+1,j+1,k) + z_nd(i+1,j+1,k+1));
769 + z_nd(i+1,j ,0) + z_nd(i+1,j+1,0));
771 return (z_cc - z0_cc);
799 const amrex::Array4<const amrex::Real>& u_arr,
800 const amrex::Array4<const amrex::Real>& v_arr,
801 const amrex::Array4<const amrex::Real>& mf_u,
802 const amrex::Array4<const amrex::Real>& mf_v,
803 const amrex::Array4<const amrex::Real>& z_nd,
804 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv)
824 myhalf * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
826 myhalf * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
831 myhalf * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
833 myhalf * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
864 const amrex::Array4<const amrex::Real>& u_arr,
865 const amrex::Array4<const amrex::Real>& v_arr,
866 const amrex::Array4<const amrex::Real>& mf_u,
867 const amrex::Array4<const amrex::Real>& mf_v,
868 const amrex::Array4<const amrex::Real>& z_nd,
869 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv)
889 myhalf * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
891 myhalf * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
896 myhalf * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
898 myhalf * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
934 const amrex::Array4<const amrex::Real>& u_arr,
935 const amrex::Array4<const amrex::Real>& v_arr,
936 const amrex::Array4<const amrex::Real>& mf_u,
937 const amrex::Array4<const amrex::Real>& mf_v,
938 const amrex::Array4<const amrex::Real>& z_nd,
939 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv)
953 myhalf * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
955 myhalf * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
960 myhalf * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
962 myhalf * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
993 const amrex::Array4<const amrex::Real>& u_arr,
994 const amrex::Array4<const amrex::Real>& v_arr,
995 const amrex::Array4<const amrex::Real>& mf_u,
996 const amrex::Array4<const amrex::Real>& mf_v,
997 const amrex::Array4<const amrex::Real>& z_nd,
998 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv)
1012 myhalf * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
1014 myhalf * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
1019 myhalf * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
1021 myhalf * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
1058 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
1059 const amrex::Array4<const amrex::Real>& zphys_arr,
1060 const amrex::Array4<amrex::Real>& phi1_arr,
1061 const amrex::Array4<amrex::Real>& phi2_arr,
1062 const amrex::Array4<amrex::Real>& phi3_arr)
1067 phi1_arr(i,j,
klo) = -h_xi * flux * InvNorm;
1068 phi2_arr(i,j,
klo) = -h_eta * flux * InvNorm;
1069 phi3_arr(i,j,
klo) = flux * InvNorm;
1102 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
1103 const amrex::Array4<const amrex::Real>& zphys_arr,
1104 const amrex::Array4<const amrex::Real>& u_arr,
1105 const amrex::Array4<const amrex::Real>& v_arr,
1106 const amrex::Array4<const amrex::Real>& w_arr,
1107 const amrex::Array4<amrex::Real>& ,
1108 const amrex::Array4<amrex::Real>& ,
1109 const amrex::Array4<amrex::Real>& ,
1110 const amrex::Array4<amrex::Real>& ,
1111 const amrex::Array4<amrex::Real>& ,
1112 const amrex::Array4<amrex::Real>& tau13_arr,
1113 const amrex::Array4<amrex::Real>& tau31_arr,
1114 const amrex::Array4<amrex::Real>& tau23_arr,
1115 const amrex::Array4<amrex::Real>& tau32_arr)
1118 amrex::Array1D<amrex::Real,0,2> n_hat;
1121 amrex::Array1D<amrex::Real,0,2> u_t_hat;
1124 amrex::Array1D<amrex::Real,0,2> a_hat;
1127 amrex::Array2D<amrex::Real,0,2,0,2> R_mat;
1136 n_hat(0) = -Inormn*h_xi; n_hat(1) = -Inormn*h_eta; n_hat(2) = Inormn;
1141 + v_arr(i-1,j,
klo) + v_arr(i-1,j+1,
klo) );
1143 amrex::Real u_dot_n = n_hat(0)*u + n_hat(1)*v + n_hat(2)*
w;
1144 u_t_hat(0) = u - u_dot_n*n_hat(0);
1145 u_t_hat(1) = v - u_dot_n*n_hat(1);
1146 u_t_hat(2) =
w - u_dot_n*n_hat(2);
1148 + u_t_hat(1)*u_t_hat(1)
1149 + u_t_hat(2)*u_t_hat(2);
1157 for (
int icol(0); icol<3; ++icol) {
1158 u_t_hat(icol) *= Inorm_u_t;
1162 a_hat(0) = n_hat(1)*u_t_hat(2) - n_hat(2)*u_t_hat(1);
1163 a_hat(1) = -(n_hat(0)*u_t_hat(2) - n_hat(2)*u_t_hat(0));
1164 a_hat(2) = n_hat(0)*u_t_hat(1) - n_hat(1)*u_t_hat(0);
1169 for (
int jrow(0); jrow<3; ++jrow) {
1170 R_mat(icol,jrow) = u_t_hat(jrow);
1173 for (
int jrow(0); jrow<3; ++jrow) {
1174 R_mat(icol,jrow) = a_hat(jrow);
1177 for (
int jrow(0); jrow<3; ++jrow) {
1178 R_mat(icol,jrow) = n_hat(jrow);
1185 amrex::Real T12 = (R_mat(0,0)*R_mat(2,1) + R_mat(2,0)*R_mat(0,1))*flux;
1186 amrex::Real T13 = (R_mat(0,0)*R_mat(2,2) + R_mat(0,2)*R_mat(2,0))*flux;
1187 amrex::Real T23 = (R_mat(0,2)*R_mat(2,1) + R_mat(0,1)*R_mat(2,2))*flux;
1192 tau13_arr(i,j,
klo) = -h_xi*T11 - h_eta*T12 + T13;
1193 tau31_arr(i,j,
klo) = h_zeta*T13;
1195 tau23_arr(i,j,
klo) = -h_xi*T12 - h_eta*T22 + T23;
1196 tau32_arr(i,j,
klo) = h_zeta*T23;
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
const int klo
Definition: ERF_InitCustomPert_ABL.H:75
Dimensionless numeric literals and pure mathematical constants.
constexpr amrex::Real two
Definition: ERF_NumericalConstants.H:38
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:37
constexpr amrex::Real fourth
Definition: ERF_NumericalConstants.H:42
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:36
constexpr amrex::Real myhalf
Definition: ERF_NumericalConstants.H:41
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:22
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:798
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:616
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:515
AMREX_GPU_HOST_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:440
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:591
AMREX_GPU_HOST_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:392
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:567
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void rotate_scalar_flux(const int &i, const int &j, const int &klo, const int &, 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:1053
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:492
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_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:641
void validate_flat_terrain(int lev, const amrex::MultiFab &z_phys_nd, const amrex::Vector< amrex::Real > &z_levels_h)
FineTerrain
Definition: ERF_TerrainMetrics.H:68
@ Transform
add the fine terrain as a correction that decays with height
@ None
caller has not prepared a fine mesh from the coarse level
@ Interpolate
use the coordinates interpolated from the coarse level as-is
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:712
FineTerrain which_fine_terrain()
Definition: ERF_TerrainMetrics.cpp:451
void init_which_terrain_grid(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::Vector< amrex::Real > const &z_levels_h, FineTerrain fine_terrain=FineTerrain::None, amrex::MultiFab const *z_phys_interp=nullptr)
amrex::BoxArray join_boxes_stacked_in_z(const amrex::BoxArray &ba)
void init_fine_terrain_grid(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::Vector< amrex::Real > const &z_levels_h, FineTerrain fine_terrain, amrex::MultiFab const *z_phys_interp)
AMREX_GPU_HOST_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:222
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:276
AMREX_GPU_HOST_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:463
AMREX_GPU_HOST_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:416
AMREX_GPU_HOST_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:758
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:369
void update_stretched_dz(int lev, amrex::Vector< amrex::Vector< amrex::Real >> const &zlevels_stag, amrex::Vector< amrex::Vector< amrex::Real >> &stretched_dz_h, amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real >> &stretched_dz_d)
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, FineTerrain fine_terrain=FineTerrain::None, amrex::MultiFab const *z_phys_interp=nullptr)
AMREX_GPU_HOST_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:736
amrex::Real get_dzmin_terrain(amrex::MultiFab &z_phys_nd)
AMREX_GPU_HOST_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:247
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:540
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE 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:197
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:323
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:665
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:346
AMREX_GPU_HOST_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:299
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void rotate_stress_tensor(const int &i, const int &j, const int &klo, const int &, 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 > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, 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:1097
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:688
void init_default_zphys(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::MultiFab &z_phys_cc, amrex::Real z_offset=zero)
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:863
@ omega
Definition: ERF_Morrison.H:55