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& );
44 const amrex::MultiFab&,
45 const amrex::MultiFab& );
60 #ifdef AMREX_USE_FLOAT
91 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
96 for (
auto i = 0; i < 7; i++) {
104 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
118 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
127 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
138 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
153 auto T_star = a_T / (eps_v_air/
s_kb);
160 auto term1 = 3 * std::sqrt(
s_kb*a_T *
s_kb*a_T *
s_kb*a_T);
161 auto term2 =
amrex::Real(8.0) * std::sqrt(2*
PI) * a_P * sigma_v_air*sigma_v_air * omegaD;
164 auto retval = term1*term3/term2;
174 Species::Name
m_name = Species::Name::none;
183 AMREX_GPU_HOST_DEVICE
187 AMREX_GPU_HOST_DEVICE
191 AMREX_GPU_HOST_DEVICE
197 amrex::Print() <<
"Material properties of " << amrex::getEnumNameString(
m_name) <<
":\n";
198 amrex::Print() <<
" density: " <<
m_density <<
"\n";
199 amrex::Print() <<
" ionization: " <<
m_ionization <<
"\n";
200 amrex::Print() <<
" mol. weight: " <<
m_mol_weight <<
"\n";
201 amrex::Print() <<
" latent heat (vap.): " <<
m_lat_vap <<
"\n";
202 amrex::Print() <<
" Rv: " <<
m_Rv <<
"\n";
203 amrex::Print() <<
" Tc: " <<
m_Tc <<
"\n";
204 amrex::Print() <<
" Tb: " <<
m_Tb <<
"\n";
206 amrex::Print() <<
" mol. Cp coeffs: ";
207 for (
int i = 0; i < 7; i++) { amrex::Print() <<
m_mol_Cp_coeffs[i] <<
", "; }
208 amrex::Print() <<
"\n";
212 AMREX_GPU_HOST_DEVICE
215 AMREX_GPU_HOST_DEVICE
218 AMREX_GPU_HOST_DEVICE
221 AMREX_GPU_HOST_DEVICE
224 AMREX_GPU_HOST_DEVICE
227 AMREX_GPU_HOST_DEVICE
230 AMREX_GPU_HOST_DEVICE
234 AMREX_GPU_HOST AMREX_FORCE_INLINE
241 AMREX_GPU_HOST AMREX_FORCE_INLINE
243 const amrex::MultiFab& a_T,
244 const amrex::MultiFab& a_p )
const
constexpr amrex::Real one
Definition: ERF_Constants.H:9
constexpr amrex::Real diffelq
Definition: ERF_Constants.H:116
constexpr amrex::Real zero
Definition: ERF_Constants.H:8
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13
constexpr amrex::Real PI
Definition: ERF_Constants.H:42
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 &, 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:48
amrex::Real m_mol_weight
Definition: ERF_MaterialProperties.H:72
bool m_is_water
Definition: ERF_MaterialProperties.H:88
static constexpr amrex::Real s_sigma_air
Definition: ERF_MaterialProperties.H:56
amrex::Real m_mol_Cp_coeffs[7]
Definition: ERF_MaterialProperties.H:80
static constexpr amrex::Real s_mol_weight_air
Definition: ERF_MaterialProperties.H:54
static constexpr amrex::Real s_kb
Definition: ERF_MaterialProperties.H:51
amrex::Real m_Rv
Definition: ERF_MaterialProperties.H:74
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:92
static constexpr amrex::Real s_eps_air_k
Definition: ERF_MaterialProperties.H:58
amrex::Real m_Nav_by_molweight
Definition: ERF_MaterialProperties.H:77
amrex::Real m_ionization
Definition: ERF_MaterialProperties.H:71
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:119
amrex::Real m_Tb
Definition: ERF_MaterialProperties.H:76
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:139
amrex::Real m_density
Definition: ERF_MaterialProperties.H:70
bool m_is_soluble
Definition: ERF_MaterialProperties.H:87
static constexpr amrex::Real s_N_av
Definition: ERF_MaterialProperties.H:50
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real coeffVPSolute() const
Return the vapour pressure coefficient.
Definition: ERF_MaterialProperties.H:128
amrex::Real m_lat_vap
Definition: ERF_MaterialProperties.H:73
amrex::Real m_Tc
Definition: ERF_MaterialProperties.H:75
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:105
Definition: ERF_MaterialProperties.H:172
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:242
decltype(saturation_funcs::compute_saturation_pressure_null) * m_saturation_pressure_func
Definition: ERF_MaterialProperties.H:177
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:235
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:196
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:174
decltype(saturation_funcs::compute_saturation_vapfrac_null) * m_saturation_vapfrac_func
Definition: ERF_MaterialProperties.H:180