1 #ifndef MATERIALPROPERTIES_H
2 #define MATERIALPROPERTIES_H
4 #include <AMReX_Enum.H>
5 #include <AMReX_REAL.H>
7 #include <AMReX_MultiFab.H>
38 const amrex::MultiFab&,
39 const amrex::MultiFab& );
43 const amrex::MultiFab&,
44 const amrex::MultiFab& );
79 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
84 for (
auto i = 0; i < 7; i++) {
92 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
98 auto term1 = 6.0 * std::cbrt(
s_N_av);
106 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
115 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
126 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
141 auto T_star = a_T / (eps_v_air/
s_kb);
143 auto omegaD = 1.06036 / std::pow(T_star, 0.1561)
144 + 0.193 / std::exp(0.47635*T_star)
145 + 1.03587 / std::exp(1.52996*T_star)
146 + 1.76474 / std::exp(3.89411*T_star);
148 auto term1 = 3 * std::sqrt(
s_kb*a_T *
s_kb*a_T *
s_kb*a_T);
149 auto term2 = 8.0 * std::sqrt(2*
PI) * a_P * sigma_v_air*sigma_v_air * omegaD;
152 auto retval = term1*term3/term2;
162 Species::Name
m_name = Species::Name::none;
170 AMREX_GPU_HOST_DEVICE
174 AMREX_GPU_HOST_DEVICE
178 AMREX_GPU_HOST_DEVICE
184 amrex::Print() <<
"Material properties of " << amrex::getEnumNameString(
m_name) <<
":\n";
185 amrex::Print() <<
" density: " <<
m_density <<
"\n";
186 amrex::Print() <<
" ionization: " <<
m_ionization <<
"\n";
187 amrex::Print() <<
" mol. weight: " <<
m_mol_weight <<
"\n";
188 amrex::Print() <<
" latent heat (vap.): " <<
m_lat_vap <<
"\n";
189 amrex::Print() <<
" Rv: " <<
m_Rv <<
"\n";
190 amrex::Print() <<
" Tc: " <<
m_Tc <<
"\n";
191 amrex::Print() <<
" Tb: " <<
m_Tb <<
"\n";
193 amrex::Print() <<
" mol. Cp coeffs: ";
194 for (
int i = 0; i < 7; i++) { amrex::Print() <<
m_mol_Cp_coeffs[i] <<
", "; }
195 amrex::Print() <<
"\n";
199 AMREX_GPU_HOST_DEVICE
202 AMREX_GPU_HOST_DEVICE
205 AMREX_GPU_HOST_DEVICE
208 AMREX_GPU_HOST_DEVICE
211 AMREX_GPU_HOST_DEVICE
214 AMREX_GPU_HOST_DEVICE
217 AMREX_GPU_HOST_DEVICE
221 AMREX_GPU_HOST AMREX_FORCE_INLINE
228 AMREX_GPU_HOST AMREX_FORCE_INLINE
230 const amrex::MultiFab& a_T,
231 const amrex::MultiFab& a_p )
const
constexpr amrex::Real diffelq
Definition: ERF_Constants.H:73
constexpr amrex::Real PI
Definition: ERF_Constants.H:6
amrex::Real sigma
Definition: ERF_InitCustomPert_IsentropicVortex.H:11
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_MaterialProperties.H:12
AMREX_ENUM(Name, H2O, NaCl, NH42SO4, NH4HSO4, soil, water, agua, none)
Definition: ERF_MaterialProperties.cpp:7
AMREX_GPU_HOST void compute_saturation_pressure_null(MultiFab &, const MultiFab &)
Definition: ERF_MaterialProperties.cpp:9
AMREX_GPU_HOST void compute_saturation_vapfrac_H2O(MultiFab &a_mf_sat_vapfrac, const MultiFab &a_mf_temperature, const MultiFab &a_mf_pressure)
Definition: ERF_MaterialProperties.cpp:32
AMREX_GPU_HOST void compute_saturation_vapfrac_null(MultiFab &, const MultiFab &)
Definition: ERF_MaterialProperties.cpp:29
AMREX_GPU_HOST void compute_saturation_pressure_H2O(MultiFab &a_mf_sat_pressure, const MultiFab &a_mf_temperature)
Definition: ERF_MaterialProperties.cpp:12
Definition: ERF_MaterialProperties.H:47
amrex::Real m_mol_weight
Definition: ERF_MaterialProperties.H:61
bool m_is_water
Definition: ERF_MaterialProperties.H:76
static constexpr amrex::Real s_sigma_air
Definition: ERF_MaterialProperties.H:55
amrex::Real m_mol_Cp_coeffs[7]
Definition: ERF_MaterialProperties.H:68
static constexpr amrex::Real s_mol_weight_air
Definition: ERF_MaterialProperties.H:53
static constexpr amrex::Real s_kb
Definition: ERF_MaterialProperties.H:50
amrex::Real m_Rv
Definition: ERF_MaterialProperties.H:63
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real molarHeatCapacity(const amrex::Real a_T) const
Return the molar heat capacity.
Definition: ERF_MaterialProperties.H:80
static constexpr amrex::Real s_eps_air_k
Definition: ERF_MaterialProperties.H:57
amrex::Real m_Nav_by_molweight
Definition: ERF_MaterialProperties.H:66
amrex::Real m_ionization
Definition: ERF_MaterialProperties.H:60
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real coeffCurv(const amrex::Real a_T) const
Return the coeff of curvature given the temperature.
Definition: ERF_MaterialProperties.H:107
amrex::Real m_Tb
Definition: ERF_MaterialProperties.H:65
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real coeffMolecularDiffusion(const amrex::Real a_T, const amrex::Real a_P) const
Return the molecular diffusion coefficient given temperature and pressure.
Definition: ERF_MaterialProperties.H:127
amrex::Real m_density
Definition: ERF_MaterialProperties.H:59
bool m_is_soluble
Definition: ERF_MaterialProperties.H:75
static constexpr amrex::Real s_N_av
Definition: ERF_MaterialProperties.H:49
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real coeffVPSolute() const
Return the vapour pressure coefficient.
Definition: ERF_MaterialProperties.H:116
amrex::Real m_lat_vap
Definition: ERF_MaterialProperties.H:62
amrex::Real m_Tc
Definition: ERF_MaterialProperties.H:64
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real surfaceTension(const amrex::Real a_T) const
Compute the surface tension coeff given temperature.
Definition: ERF_MaterialProperties.H:93
Definition: ERF_MaterialProperties.H:160
AMREX_GPU_HOST_DEVICE ~MaterialProperties()=default
Default destructor.
AMREX_GPU_HOST_DEVICE void setProperties_water()
Set this material to water.
Definition: ERF_MaterialProperties.cpp:122
AMREX_GPU_HOST AMREX_FORCE_INLINE void computeSaturationVapFrac(amrex::MultiFab &a_S, const amrex::MultiFab &a_T, const amrex::MultiFab &a_p) const
Compute saturation vapour fraction.
Definition: ERF_MaterialProperties.H:229
decltype(saturation_funcs::compute_saturation_pressure_null) * m_saturation_pressure_func
Definition: ERF_MaterialProperties.H:165
AMREX_GPU_HOST AMREX_FORCE_INLINE void computeSaturationPressure(amrex::MultiFab &a_e, const amrex::MultiFab &a_T) const
Compute saturation pressure.
Definition: ERF_MaterialProperties.H:222
AMREX_GPU_HOST_DEVICE void setProperties_NH4HSO4()
Set this material to ammonium bisulfate.
Definition: ERF_MaterialProperties.cpp:158
AMREX_GPU_HOST_DEVICE void setProperties_soil()
Set this material to soil.
Definition: ERF_MaterialProperties.cpp:170
AMREX_GPU_HOST_DEVICE void setProperties_NH42SO4()
Set this material to ammonium sulfate.
Definition: ERF_MaterialProperties.cpp:146
AMREX_GPU_HOST_DEVICE MaterialProperties(const Species::Name &a_name)
Constructor.
Definition: ERF_MaterialProperties.cpp:56
AMREX_GPU_HOST void print() const
Print parameters.
Definition: ERF_MaterialProperties.H:183
AMREX_GPU_HOST_DEVICE void setProperties_NaCl()
Set this material to NaCl.
Definition: ERF_MaterialProperties.cpp:134
AMREX_GPU_HOST_DEVICE void setProperties_H2O()
Set this material to H20.
Definition: ERF_MaterialProperties.cpp:102
AMREX_GPU_HOST_DEVICE void setProperties_agua()
Set this material to agua.
Definition: ERF_MaterialProperties.cpp:128
Species::Name m_name
Definition: ERF_MaterialProperties.H:162
decltype(saturation_funcs::compute_saturation_vapfrac_null) * m_saturation_vapfrac_func
Definition: ERF_MaterialProperties.H:167