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& );
59 #ifdef AMREX_USE_FLOAT
90 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
95 for (
auto i = 0; i < 7; i++) {
103 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
117 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
126 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
137 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
152 auto T_star = a_T / (eps_v_air/
s_kb);
159 auto term1 = 3 * std::sqrt(
s_kb*a_T *
s_kb*a_T *
s_kb*a_T);
160 auto term2 =
amrex::Real(8.0) * std::sqrt(2*
PI) * a_P * sigma_v_air*sigma_v_air * omegaD;
163 auto retval = term1*term3/term2;
173 Species::Name
m_name = Species::Name::none;
181 AMREX_GPU_HOST_DEVICE
185 AMREX_GPU_HOST_DEVICE
189 AMREX_GPU_HOST_DEVICE
195 amrex::Print() <<
"Material properties of " << amrex::getEnumNameString(
m_name) <<
":\n";
196 amrex::Print() <<
" density: " <<
m_density <<
"\n";
197 amrex::Print() <<
" ionization: " <<
m_ionization <<
"\n";
198 amrex::Print() <<
" mol. weight: " <<
m_mol_weight <<
"\n";
199 amrex::Print() <<
" latent heat (vap.): " <<
m_lat_vap <<
"\n";
200 amrex::Print() <<
" Rv: " <<
m_Rv <<
"\n";
201 amrex::Print() <<
" Tc: " <<
m_Tc <<
"\n";
202 amrex::Print() <<
" Tb: " <<
m_Tb <<
"\n";
204 amrex::Print() <<
" mol. Cp coeffs: ";
205 for (
int i = 0; i < 7; i++) { amrex::Print() <<
m_mol_Cp_coeffs[i] <<
", "; }
206 amrex::Print() <<
"\n";
210 AMREX_GPU_HOST_DEVICE
213 AMREX_GPU_HOST_DEVICE
216 AMREX_GPU_HOST_DEVICE
219 AMREX_GPU_HOST_DEVICE
222 AMREX_GPU_HOST_DEVICE
225 AMREX_GPU_HOST_DEVICE
228 AMREX_GPU_HOST_DEVICE
232 AMREX_GPU_HOST AMREX_FORCE_INLINE
239 AMREX_GPU_HOST AMREX_FORCE_INLINE
241 const amrex::MultiFab& a_T,
242 const amrex::MultiFab& a_p )
const
constexpr amrex::Real one
Definition: ERF_Constants.H:7
constexpr amrex::Real diffelq
Definition: ERF_Constants.H:84
constexpr amrex::Real zero
Definition: ERF_Constants.H:6
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:11
constexpr amrex::Real PI
Definition: ERF_Constants.H:16
amrex::Real sigma
Definition: ERF_InitCustomPert_DataAssimilation_ISV.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:71
bool m_is_water
Definition: ERF_MaterialProperties.H:87
static constexpr amrex::Real s_sigma_air
Definition: ERF_MaterialProperties.H:55
amrex::Real m_mol_Cp_coeffs[7]
Definition: ERF_MaterialProperties.H:79
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:73
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:91
static constexpr amrex::Real s_eps_air_k
Definition: ERF_MaterialProperties.H:57
amrex::Real m_Nav_by_molweight
Definition: ERF_MaterialProperties.H:76
amrex::Real m_ionization
Definition: ERF_MaterialProperties.H:70
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:118
amrex::Real m_Tb
Definition: ERF_MaterialProperties.H:75
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:138
amrex::Real m_density
Definition: ERF_MaterialProperties.H:69
bool m_is_soluble
Definition: ERF_MaterialProperties.H:86
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:127
amrex::Real m_lat_vap
Definition: ERF_MaterialProperties.H:72
amrex::Real m_Tc
Definition: ERF_MaterialProperties.H:74
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:104
Definition: ERF_MaterialProperties.H:171
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:240
decltype(saturation_funcs::compute_saturation_pressure_null) * m_saturation_pressure_func
Definition: ERF_MaterialProperties.H:176
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:233
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:194
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:173
decltype(saturation_funcs::compute_saturation_vapfrac_null) * m_saturation_vapfrac_func
Definition: ERF_MaterialProperties.H:178