50 auto const& medium = media_data.
medium;
53 medium.hasPhase(
"Gas") ? &medium.phase(
"Gas") :
nullptr;
57 if (gas_phase && S_L_data.
S_L < 1.0)
61 .template value<double>(variables, x_t.
x, x_t.
t, x_t.
dt);
63 double const drho_wv_dT =
65 .template dValue<double>(variables, MPL::Variable::temperature,
66 x_t.
x, x_t.
t, x_t.
dt);
67 double const drho_wv_dp =
69 .template dValue<double>(variables,
70 MPL::Variable::liquid_phase_pressure,
71 x_t.
x, x_t.
t, x_t.
dt);
75 MPL::PropertyType::thermal_diffusion_enhancement_factor)
76 .template value<double>(variables, x_t.
x, x_t.
t, x_t.
dt);
78 double const phi = poro_data.
phi;
81 double const S_g = 1.0 - S_L_data.
S_L;
82 double const tortuosity =
83 medium.property(MPL::PropertyType::tortuosity)
84 .template value<double>(variables, x_t.
x, x_t.
t, x_t.
dt);
86 phi * S_g * tortuosity *
87 gas_phase->
property(MPL::PropertyType::diffusion)
88 .template value<double>(variables, x_t.
x, x_t.
t, x_t.
dt);
99 .template value<double>(variables, x_t.
x, x_t.
t, x_t.
dt);
104 phi * (rho_wv * dS_L_data.
dS_L_dp_cap + S_g * drho_wv_dp);
111 if (gas_phase->
hasProperty(MPL::PropertyType::specific_latent_heat))
113 double const factor = phi * S_g / rho_L_data.
rho_LR;
116 gas_phase->
property(MPL::PropertyType::specific_latent_heat)
117 .template value<double>(variables, x_t.
x, x_t.
t, x_t.
dt) *
120 double const rho_wv_over_rho_L = rho_wv / rho_L_data.
rho_LR;
124 (drho_wv_dT - rho_wv_over_rho_L * rho_L_data.
drho_LR_dT);
127 (drho_wv_dp - rho_wv_over_rho_L * rho_L_data.
drho_LR_dp) +
128 L0 * phi * rho_wv_over_rho_L * dS_L_data.
dS_L_dp_cap);
void eval(SpaceTimeData const &x_t, MediaData const &media_data, LiquidDensityData const &rho_L_data, SaturationData const &S_L_data, SaturationDataDeriv const &dS_L_data, PorosityData const &poro_data, CapillaryPressureData< DisplacementDim > const &p_cap_data, TemperatureData< DisplacementDim > const &T_data, TRMVaporDiffusionData< DisplacementDim > &out) const