40 double const dt)
const
46 auto const s_L = std::visit(
47 [&variable_array, &pos, t, dt](
auto&& scale) ->
double
50 .
template value<double>(variable_array, pos, t, dt);
59 auto const s_eff = (s_L - s_L_res) / (s_L_max - s_L_res);
72 auto const k_rel_GR = (1. - s_eff) * (1. - s_eff) *
73 (1. - std::pow(s_eff, (2. + lambda) / lambda));
80 double const dt)
const
85 "RelPermBrooksCoreyNonwettingPhase::dValue is implemented for "
86 "derivatives with respect to liquid saturation only.");
92 auto const s_L = std::visit(
93 [&variable_array, &pos, t, dt](
auto&& scale) ->
double
96 .
template value<double>(variable_array, pos, t, dt);
104 auto const s_eff = (s_L - s_L_res) / (s_L_max - s_L_res);
105 if ((s_eff < 0.) || (s_eff > 1.))
110 auto const twoL_L = (2. + lambda) / lambda;
111 auto const d_se_d_sL = 1. / (s_L_max - s_L_res);
112 auto const dk_rel_GRdse =
113 -2. * (1 - s_eff) * (1. - std::pow(s_eff, twoL_L)) -
114 twoL_L * std::pow(s_eff, twoL_L - 1.) * (1. - s_eff) * (1. - s_eff);
116 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