1 #ifndef ERF_MOISTUTILS_H_
2 #define ERF_MOISTUTILS_H_
17 const amrex::Array4<amrex::Real const>& cell_data,
26 if (moisture_indices.
qv >= 0) {
27 qv = cell_data(i,j,k,moisture_indices.
qv)/cell_data(i,j,k,
Rho_comp);
31 if (moisture_indices.
qc >= 0) {
32 qc_liquid = cell_data(i,j,k,moisture_indices.
qc)/cell_data(i,j,k,
Rho_comp);
36 if (moisture_indices.
qi >= 0) {
37 qc_ice = cell_data(i,j,k,moisture_indices.
qi)/cell_data(i,j,k,
Rho_comp);
42 if (moisture_indices.
qr >= 0) {
43 qc_liquid += cell_data(i,j,k,moisture_indices.
qr)/cell_data(i,j,k,
Rho_comp);
45 if (moisture_indices.
qs >= 0) {
46 qc_ice += cell_data(i,j,k,moisture_indices.
qs)/cell_data(i,j,k,
Rho_comp);
48 if (moisture_indices.
qg >= 0) {
49 qc_ice += cell_data(i,j,k,moisture_indices.
qg)/cell_data(i,j,k,
Rho_comp);
73 const amrex::Array4<amrex::Real const>& cell_data,
93 const amrex::Array4<amrex::Real const>& cell_data,
100 if (moisture_indices.
qv >= 0)
101 qv = cell_data(i, j, k, moisture_indices.
qv) /
rho;
102 if (moisture_indices.
qc >= 0)
103 qc = cell_data(i, j, k, moisture_indices.
qc) /
rho;
104 if (moisture_indices.
qi >= 0)
105 qi = cell_data(i, j, k, moisture_indices.
qi) /
rho;
129 const amrex::Array4<amrex::Real const>& cell_data,
151 const amrex::Array4<amrex::Real const>& cell_data,
166 amrex::Real stratification = abs_g * dthetav_dz * inv_theta0;
170 if (total_condensate > 1e-8) {
183 erf_qsatw(T_current, pres_current, qsat_liquid);
184 erf_qsati(T_current, pres_current, qsat_ice);
186 amrex::Real qsat_eff = liquid_fraction * qsat_liquid + ice_fraction * qsat_ice;
190 (
one + L_eff*L_eff*qsat_eff/(
Cp_d*
R_v*T_current*T_current));
192 stratification *= gamma_moist_factor;
195 return stratification;
204 const amrex::Array4<amrex::Real const>& cell_data,
209 const int& rho_qv_comp,
220 return abs_g * dtheta_dz * inv_theta0;
constexpr amrex::Real epsv
Definition: ERF_Constants.H:53
constexpr amrex::Real R_v
Definition: ERF_Constants.H:48
constexpr amrex::Real Cp_d
Definition: ERF_Constants.H:49
constexpr amrex::Real one
Definition: ERF_Constants.H:9
constexpr amrex::Real zero
Definition: ERF_Constants.H:8
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13
constexpr amrex::Real lat_ice
Definition: ERF_Constants.H:129
constexpr amrex::Real R_d
Definition: ERF_Constants.H:47
constexpr amrex::Real L_v
Definition: ERF_Constants.H:59
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getTgivenRandRTh(const amrex::Real rho, const amrex::Real rhotheta, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:46
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getPgivenRTh(const amrex::Real rhotheta, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:81
#define Rho_comp
Definition: ERF_IndexDefines.H:36
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:37
const bool use_moisture
Definition: ERF_InitCustomPert_Bomex.H:14
Real T
Definition: ERF_InitCustomPert_Bubble.H:106
rho
Definition: ERF_InitCustomPert_Bubble.H:107
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void erf_qsatw(amrex::Real t, amrex::Real p, amrex::Real &qsatw)
Definition: ERF_MicrophysicsUtils.H:228
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void erf_qsati(amrex::Real t, amrex::Real p, amrex::Real &qsati)
Definition: ERF_MicrophysicsUtils.H:218
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real ComputeLiquidWaterPotentialTemperature(const amrex::Real &theta, const amrex::Real &T, const amrex::Real &qc_liquid)
Definition: ERF_MoistUtils.H:116
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real ComputeMoistStratification(const int &i, const int &j, const int &k, const amrex::Array4< amrex::Real const > &cell_data, const amrex::Real &dzInv, const amrex::Real &abs_g, const amrex::Real &inv_theta0, const MoistureComponentIndices &moisture_indices)
Definition: ERF_MoistUtils.H:150
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real GetThetav(const int &i, const int &j, const int &k, const amrex::Array4< amrex::Real const > &cell_data, const MoistureComponentIndices &moisture_indices)
Definition: ERF_MoistUtils.H:72
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real GetThetavl(int i, int j, int k, const amrex::Array4< amrex::Real const > &cell_data, const MoistureComponentIndices &moisture_indices)
Definition: ERF_MoistUtils.H:92
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real ComputeVirtualPotentialTemperature(const amrex::Real &theta, const amrex::Real &qv, const amrex::Real &qc_liquid, const amrex::Real &qc_ice)
Definition: ERF_MoistUtils.H:58
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real ComputeStratificationForSmagorinsky(const int &i, const int &j, const int &k, const amrex::Array4< amrex::Real const > &cell_data, const amrex::Real &dzInv, const amrex::Real &abs_g, const amrex::Real &inv_theta0, const bool &use_moisture, const int &rho_qv_comp, const MoistureComponentIndices &moisture_indices)
Definition: ERF_MoistUtils.H:203
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void GetMoistureVars(int i, int j, int k, const amrex::Array4< amrex::Real const > &cell_data, amrex::Real &qv, amrex::Real &qc_liquid, amrex::Real &qc_ice, const MoistureComponentIndices &moisture_indices)
Definition: ERF_MoistUtils.H:16
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real GetThetal(const int &i, const int &j, const int &k, const amrex::Array4< amrex::Real const > &cell_data, const MoistureComponentIndices &moisture_indices)
Definition: ERF_MoistUtils.H:128
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ theta
Definition: ERF_MM5.H:20
@ qcl
Definition: ERF_Kessler.H:31
@ qv
Definition: ERF_Kessler.H:30
@ qci
Definition: ERF_Morrison.H:37
@ qc
Definition: ERF_SatAdj.H:40
@ qi
Definition: ERF_WSM6.H:27
Definition: ERF_DataStruct.H:106
int qs
Definition: ERF_DataStruct.H:111
int qr
Definition: ERF_DataStruct.H:110
int qi
Definition: ERF_DataStruct.H:109
int qv
Definition: ERF_DataStruct.H:107
int qc
Definition: ERF_DataStruct.H:108
int qg
Definition: ERF_DataStruct.H:112