38 double const dt)
const
40 auto const& medium = std::get<Medium*>(
scale_);
42 auto const gas_phase =
43 medium->hasPhase(
"Gas") ? &medium->phase(
"Gas") :
nullptr;
44 auto const liquid_phase = medium->hasPhase(
"AqueousLiquid")
45 ? &medium->phase(
"AqueousLiquid")
48 auto const& solid_phase = medium->phase(
"Solid");
50 auto const gas_thermal_conductivity =
58 auto const liquid_thermal_conductivity =
69 .
value(variable_array, pos, t, dt));
74 auto const S_G = 1. - S_L;
80 if constexpr (GlobalDim == 1)
83 double const effective_thermal_conductivity =
84 phi_G * gas_thermal_conductivity +
85 phi_L * liquid_thermal_conductivity +
86 phi_S * solid_thermal_conductivity[0];
88 return effective_thermal_conductivity;
99 solid_thermal_conductivity =
101 solid_thermal_conductivity, pos);
103 auto const I = Eigen::Matrix<double, GlobalDim, GlobalDim>::Identity();
104 Eigen::Matrix<double, GlobalDim, GlobalDim>
const
105 effective_thermal_conductivity =
106 (phi_G * gas_thermal_conductivity +
107 phi_L * liquid_thermal_conductivity) *
109 phi_S * solid_thermal_conductivity;
110 return effective_thermal_conductivity;
118 double const dt)
const
123 "The derivative of the "
124 "EffectiveThermalConductivityPorosityMixing is implemented only "
125 "w.r.t. temperature.");
128 auto const& medium = std::get<Medium*>(
scale_);
130 auto const gas_phase =
131 medium->hasPhase(
"Gas") ? &medium->phase(
"Gas") :
nullptr;
132 auto const liquid_phase = medium->hasPhase(
"AqueousLiquid")
133 ? &medium->phase(
"AqueousLiquid")
136 auto const& solid_phase = medium->phase(
"Solid");
138 auto const gas_thermal_conductivity =
146 auto const liquid_thermal_conductivity =
157 auto const S_G = 1. - S_L;
164 auto const d_gas_thermal_conductivity_dT =
173 auto const d_liquid_thermal_conductivity_dT =
194 double const d_porosity_dT =
198 double const d_S_L_dT =
207 auto const d_phi_G_dT = d_porosity_dT * S_G -
porosity * d_S_L_dT;
208 auto const d_phi_L_dT = d_porosity_dT * S_L +
porosity * d_S_L_dT;
209 auto const d_phi_S_dT = -d_porosity_dT;
214 .
value(variable_array, pos, t, dt));
221 if constexpr (GlobalDim == 1)
225 double const d_effective_thermal_conductivity_dT =
226 d_phi_G_dT * gas_thermal_conductivity +
227 phi_G * d_gas_thermal_conductivity_dT +
228 d_phi_L_dT * liquid_thermal_conductivity +
229 phi_L * d_liquid_thermal_conductivity_dT +
230 d_phi_S_dT * solid_thermal_conductivity[0] +
231 phi_S * d_solid_thermal_conductivity_dT[0];
233 return d_effective_thermal_conductivity_dT;
244 solid_thermal_conductivity =
246 solid_thermal_conductivity, pos);
247 d_solid_thermal_conductivity_dT =
249 d_solid_thermal_conductivity_dT, pos);
252 auto const I = Eigen::Matrix<double, GlobalDim, GlobalDim>::Identity();
253 Eigen::Matrix<double, GlobalDim, GlobalDim>
const
254 d_effective_thermal_conductivity_dT =
255 (d_phi_G_dT * gas_thermal_conductivity +
256 phi_G * d_gas_thermal_conductivity_dT +
257 d_phi_L_dT * liquid_thermal_conductivity +
258 phi_L * d_liquid_thermal_conductivity_dT) *
260 d_phi_S_dT * solid_thermal_conductivity +
261 phi_S * d_solid_thermal_conductivity_dT;
263 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