67 double const dt)
const
73 auto const s_L = std::visit(
74 [&variable_array, &pos, t, dt](
auto&& scale) ->
double
86 auto const s_eff = (s_L - s_L_res) / (s_L_max - s_L_res);
99 auto const k_rel_GR = (1. - s_eff) * (1. - s_eff) *
100 (1. - std::pow(s_eff, (2. + lambda) / lambda));
107 double const dt)
const
112 "RelPermBrooksCoreyNonwettingPhase::dValue is implemented for "
113 "derivatives with respect to liquid saturation only.");
119 auto const s_L = std::visit(
120 [&variable_array, &pos, t, dt](
auto&& scale) ->
double
131 auto const s_eff = (s_L - s_L_res) / (s_L_max - s_L_res);
136 if ((s_eff <= 0.) || (s_eff >= 1.))
141 auto const twoL_L = (2. + lambda) / lambda;
142 auto const s_eff_pow_twoL_L = std::pow(s_eff, twoL_L);
150 auto const k_rel_GR = (1. - s_eff) * (1. - s_eff) * (1. - s_eff_pow_twoL_L);
156 auto const d_se_d_sL = 1. / (s_L_max - s_L_res);
157 auto const dk_rel_GRdse =
158 -2. * (1 - s_eff) * (1. - s_eff_pow_twoL_L) -
159 twoL_L * std::pow(s_eff, twoL_L - 1.) * (1. - s_eff) * (1. - s_eff);
161 return dk_rel_GRdse * d_se_d_sL;
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