38 double const dt)
const
40 auto const& medium = std::get<Medium*>(
scale_);
43 auto const liquid_phase =
48 auto const gas_thermal_conductivity =
56 auto const liquid_thermal_conductivity =
67 .
value(variable_array, pos, t, dt));
72 auto const S_G = 1. - S_L;
78 if constexpr (GlobalDim == 1)
81 double const effective_thermal_conductivity =
82 phi_G * gas_thermal_conductivity +
83 phi_L * liquid_thermal_conductivity +
84 phi_S * solid_thermal_conductivity[0];
86 return effective_thermal_conductivity;
97 solid_thermal_conductivity =
99 solid_thermal_conductivity, pos);
101 auto const I = Eigen::Matrix<double, GlobalDim, GlobalDim>::Identity();
102 Eigen::Matrix<double, GlobalDim, GlobalDim>
const
103 effective_thermal_conductivity =
104 (phi_G * gas_thermal_conductivity +
105 phi_L * liquid_thermal_conductivity) *
107 phi_S * solid_thermal_conductivity;
108 return effective_thermal_conductivity;
116 double const dt)
const
121 "The derivative of the "
122 "EffectiveThermalConductivityPorosityMixing is implemented only "
123 "w.r.t. temperature.");
126 auto const& medium = std::get<Medium*>(
scale_);
129 auto const liquid_phase =
134 auto const gas_thermal_conductivity =
142 auto const liquid_thermal_conductivity =
153 auto const S_G = 1. - S_L;
160 auto const d_gas_thermal_conductivity_dT =
169 auto const d_liquid_thermal_conductivity_dT =
190 double const d_porosity_dT =
194 double const d_S_L_dT =
203 auto const d_phi_G_dT = d_porosity_dT * S_G -
porosity * d_S_L_dT;
204 auto const d_phi_L_dT = d_porosity_dT * S_L +
porosity * d_S_L_dT;
205 auto const d_phi_S_dT = -d_porosity_dT;
210 .
value(variable_array, pos, t, dt));
217 if constexpr (GlobalDim == 1)
221 double const d_effective_thermal_conductivity_dT =
222 d_phi_G_dT * gas_thermal_conductivity +
223 phi_G * d_gas_thermal_conductivity_dT +
224 d_phi_L_dT * liquid_thermal_conductivity +
225 phi_L * d_liquid_thermal_conductivity_dT +
226 d_phi_S_dT * solid_thermal_conductivity[0] +
227 phi_S * d_solid_thermal_conductivity_dT[0];
229 return d_effective_thermal_conductivity_dT;
240 solid_thermal_conductivity =
242 solid_thermal_conductivity, pos);
243 d_solid_thermal_conductivity_dT =
245 d_solid_thermal_conductivity_dT, pos);
248 auto const I = Eigen::Matrix<double, GlobalDim, GlobalDim>::Identity();
249 Eigen::Matrix<double, GlobalDim, GlobalDim>
const
250 d_effective_thermal_conductivity_dT =
251 (d_phi_G_dT * gas_thermal_conductivity +
252 phi_G * d_gas_thermal_conductivity_dT +
253 d_phi_L_dT * liquid_thermal_conductivity +
254 phi_L * d_liquid_thermal_conductivity_dT) *
256 d_phi_S_dT * solid_thermal_conductivity +
257 phi_S * d_solid_thermal_conductivity_dT;
259 return d_effective_thermal_conductivity_dT;
std::variant< double, Eigen::Matrix< double, 2, 1 >, Eigen::Matrix< double, 3, 1 >, Eigen::Matrix< double, 2, 2 >, Eigen::Matrix< double, 3, 3 >, Eigen::Matrix< double, 4, 1 >, Eigen::Matrix< double, 6, 1 >, Eigen::MatrixXd > PropertyDataType