31 double const dt)
const
37 auto const s_L = std::visit(
38 [&variable_array, &pos, t, dt](
auto&&
scale) ->
double
41 .
template value<double>(variable_array, pos, t, dt);
59 auto const k_rel_LR = 1. - a * std::pow(1. - s_L, b);
61 return std::max(k_rel_LR, 0.);
67 double const dt)
const
72 "RelPermLiakopoulos::dValue is implemented for derivatives with "
73 "respect to liquid saturation only.");
79 auto const s_L = std::visit(
80 [&variable_array, &pos, t, dt](
auto&&
scale) ->
double
83 .
template value<double>(variable_array, pos, t, dt);
89 const double s_L_within_range = std::min(std::max(s_L_res, s_L), s_L_max);
94 return a * b * std::pow(1. - s_L_within_range, b - 1.);
virtual PropertyDataType value() const
std::variant< Medium *, Phase *, Component * > scale_
const double residual_liquid_saturation_
const double parameter_b_
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
RelPermLiakopoulos(std::string name)
const double parameter_a_
const double maximal_liquid_saturation_
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 > > PropertyDataType
std::array< VariableType, static_cast< int >(Variable::number_of_variables)> VariableArray
void scale(PETScVector &x, double const a)