19 std::map<
int, std::shared_ptr<MaterialPropertyLib::Medium>>
const& media)
25 gas_phase_dry_air_component_index_{gas_phase_vapour_component_index_ ^ 1}
27 DBUG(
"Create PhaseTransitionEvaporation constitutive model.");
32 "The current implementation of PhaseTransitionModelEvaporation "
33 "requires the specification of exactly two components in the gas "
38 auto const medium = media.begin()->second;
39 auto const& gas_phase = medium->phase(
"Gas");
40 auto const& liquid_phase = medium->phase(
"AqueousLiquid");
43 std::array
const required_vapour_component_properties = {
48 std::array
const required_dry_air_component_properties = {
51 std::array
const required_liquid_properties = {
56 required_vapour_component_properties);
59 required_dry_air_component_properties);
71 auto const pGR = std::get<double>(variables[
static_cast<int>(
73 auto const pCap = std::get<double>(variables[
static_cast<int>(
75 auto const T = std::get<double>(variables[
static_cast<int>(
78 auto const& liquid_phase = medium->
phase(
"AqueousLiquid");
79 auto const& gas_phase = medium->
phase(
"Gas");
83 auto const& vapour_component =
85 auto const& dry_air_component =
92 .template value<double>(variables, pos, t, dt);
94 variables[
static_cast<int>(
98 const auto p_vap_flat =
101 .template value<double>(variables, pos, t, dt);
103 const auto dp_vap_flat_dT =
106 .template dValue<double>(variables,
114 .template value<double>(variables, pos, t, dt);
120 .template value<double>(variables, pos, t, dt);
125 .template value<double>(variables, pos, t, dt);
129 const double K = std::exp(-pCap * M_W /
cv.
rhoLR / R / T);
130 const double dK_dT = pCap * M_W /
cv.
rhoLR / R / T / T * K;
135 auto const dp_vap_dT = dp_vap_flat_dT * K + p_vap_flat * dK_dT;
147 .template value<double>(variables, pos, t, dt);
149 auto const drhoGR_dpGR =
151 .template dValue<double>(
155 auto const drhoGR_dT =
157 .template dValue<double>(variables,
165 auto beta_pGR = 1. /
cv.
rhoGR * drhoGR_dpGR;
169 auto beta_TGR = -1. /
cv.
rhoGR * drhoGR_dT;
175 auto drhoWGR_dT = M_W / R / T / T * (T * dp_vap_dT -
cv.
pWGR);
184 .template value<double>(variables, pos, t, dt);
188 .template value<double>(variables, pos, t, dt);
192 cv.
hWG = cpWG * T + dh_evap;
201 .template value<double>(variables, pos, t, dt);
212 .template value<double>(variables, pos, t, dt);
216 .template value<double>(variables, pos, t, dt);
222 .template value<double>(variables, pos, t, dt);
227 .template value<double>(variables, pos, t, dt);
233 .template value<double>(variables, pos, t, dt);
void DBUG(char const *fmt, Args const &... args)
Phase const & phase(std::size_t index) const
constexpr double IdealGasConstant
@ enthalpy_of_evaporation
std::array< VariableType, static_cast< int >(Variable::number_of_variables)> VariableArray
void checkRequiredProperties(Component const &c, Container const &required_properties)
int numberOfComponents(std::map< int, std::shared_ptr< MaterialPropertyLib::Medium >> const &media, std::string phase_name)
int findComponentIndex(std::map< int, std::shared_ptr< MaterialPropertyLib::Medium >> const &media, std::string phase_name, MaterialPropertyLib::PropertyType property_type)
PhaseTransitionEvaporation(std::map< int, std::shared_ptr< MaterialPropertyLib::Medium >> const &media)
int const gas_phase_dry_air_component_index_
int const gas_phase_vapour_component_index_
int const n_components_gas_
PhaseTransitionModelVariables updateConstitutiveVariables(PhaseTransitionModelVariables const &phase_transition_model_variables, const MaterialPropertyLib::Medium *medium, MaterialPropertyLib::VariableArray variables, ParameterLib::SpatialPosition pos, double const t, double const dt) const override
double diffusion_coefficient_vapour
PhaseTransitionModelVariables cv