1 #ifndef ERF_TIMESTEP_UTILS_H_
2 #define ERF_TIMESTEP_UTILS_H_
7 #include <AMReX_REAL.H>
8 #include <AMReX_Array.H>
9 #include <AMReX_Array4.H>
10 #include <AMReX_Algorithm.H>
11 #include <AMReX_Math.H>
60 const amrex::Array4<const amrex::Real>& z_nd,
63 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxinv,
64 const bool l_terrain_aware,
65 const bool l_substepping,
77 if (l_terrain_aware) {
96 if ((nxc > 1) && (nyc == 1)) {
98 inv_dt = abs_u*
idx + Uacoustic
100 }
else if ((nyc > 1) && (nxc == 1)) {
102 inv_dt = abs_v*idy + Vacoustic
106 inv_dt = abs_u*
idx + Uacoustic
107 + abs_v*idy + Vacoustic
115 const amrex::Real Uacoustic = c * amrex::Math::abs(mf_x * (dxinv[0] + idz * h_xi ));
116 const amrex::Real Vacoustic = c * amrex::Math::abs(mf_y * (dxinv[1] + idz * h_eta));
117 const amrex::Real Oacoustic = c * amrex::Math::abs(idz);
118 if (nxc > 1 && nyc > 1) {
120 inv_dt = abs_u*
idx + Uacoustic
121 + abs_v*idy + Vacoustic
122 + abs_w*idz + Oacoustic;
123 }
else if (nxc > 1) {
125 inv_dt = abs_u*
idx + Uacoustic
126 + abs_w*idz + Oacoustic;
127 }
else if (nyc > 1) {
129 inv_dt = abs_v*idy + Vacoustic
130 + abs_w*idz + Oacoustic;
133 inv_dt = abs_w*idz + Oacoustic;
171 AMREX_GPU_HOST_DEVICE
178 const amrex::Array4<const amrex::Real>& z_nd,
181 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxinv,
182 const bool l_terrain_aware)
185 if (l_terrain_aware) {
189 return ( amrex::Math::abs(u)*mf_x*dxinv[0]
190 + amrex::Math::abs(v)*mf_y*dxinv[1]
191 + amrex::Math::abs(
w)*idz );
constexpr amrex::Real bogus_large_value
Definition: ERF_Constants.H:19
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int idx(int i, int j, int k, int nx, int ny)
Definition: ERF_InitForEnsemble.cpp:404
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:36
constexpr amrex::Real third
Definition: ERF_NumericalConstants.H:43
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:23
amrex::Real Real
Definition: ERF_ShocInterface.H:19
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:226
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:251
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:201
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_InvDt_Compressible(const int i, const int j, const int k, const amrex::Real c, const amrex::Real u, const amrex::Real v, const amrex::Real w, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Real mf_x, const amrex::Real mf_y, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxinv, const bool l_terrain_aware, const bool l_substepping, const int nxc=2, const int nyc=2)
Definition: ERF_TimestepUtils.H:55
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_InvDt_Anelastic(const int i, const int j, const int k, const amrex::Real u, const amrex::Real v, const amrex::Real w, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Real mf_x, const amrex::Real mf_y, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxinv, const bool l_terrain_aware)
Definition: ERF_TimestepUtils.H:174