87 double const dt)
const
89 auto const& medium = *std::get<Medium*>(
scale_);
93 std::get<double>(
porosity.value(variable_array, pos, t, dt));
96 double prop_value_frozen = 0;
104 S_fr = std::get<double>(
saturation.value(variable_array, pos, t, dt));
105 prop_value_frozen = std::get<double>(
106 properties_.frozen->value(variable_array, pos, t, dt));
108 auto const prop_value_liquid =
109 std::get<double>(
properties_.liquid->value(variable_array, pos, t, dt));
110 auto const prop_value_porous =
111 std::get<double>(
properties_.porous->value(variable_array, pos, t, dt));
113 return phi * (1.0 - S_fr) * prop_value_liquid +
114 phi * S_fr * prop_value_frozen + (1 - phi) * prop_value_porous;
120 double const dt)
const
125 "VolumeFractionAverage::dValue is implemented for derivatives with "
126 "respect to temperature only.");
129 auto const& medium = *std::get<Medium*>(
scale_);
132 std::get<double>(
porosity.value(variable_array, pos, t, dt));
135 double prop_value_frozen = 0;
140 dS_fr_dT = std::get<double>(
saturation.dValue(
142 prop_value_frozen = std::get<double>(
143 properties_.frozen->value(variable_array, pos, t, dt));
146 double prop_value_liquid =
147 std::get<double>(
properties_.liquid->value(variable_array, pos, t, dt));
152 return phi * (prop_value_frozen - prop_value_liquid) * dS_fr_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