28 OGS_FATAL(
"The saturation of {:e} is out of its range of [0, 1]", Sl);
35 double const maximum_liquid_saturation,
36 double const exponent,
38 : Sg_r_(1.0 - maximum_liquid_saturation),
42 PcBarvGSg_Sg_max_(getPcBarvGSg(Sg_max_)),
43 dPcdSvGBarSg_max_(getdPcdSvGBar(Sg_max_))
53 const double Sl = std::get<double>(
58 double const Sg = 1 - Sl;
59 if (!(Sg < Sg_r_ || Sg >
Sg_max_))
79 "CapillaryPressureRegularizedVanGenuchten::dValue is implemented "
80 "for derivatives with respect to liquid saturation only.");
83 const double Sl = std::get<double>(
88 double const Sg = 1 - Sl;
89 if (!(Sg < Sg_r_ || Sg >
Sg_max_))
102 double const Sg)
const
104 double const S_bar =
getSBar(Sg);
114 double const Sg)
const
117 return p_b_ * std::pow(std::pow(Se, (-1.0 /
m_)) - 1.0, 1.0 -
m_);
121 double const Sg)
const
128 const double Sg)
const
130 double const n = 1 / (1 -
m_);
132 auto const temp = std::pow(Se, (-1 /
m_));
134 std::pow(temp - 1, (1 / n) - 1) * temp / Se;
static constexpr double xi_
parameter in regularized van Genuchten model
double getdPcdSvG(double const Sg) const
Gets .
double const PcBarvGSg_Sg_max_
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
double const Sg_r_
Residual saturation of gas phase.
double const Sg_max_
Maximum saturation of gas phase.
double getPcBarvGSg(double const Sg) const
double getPcvGSg(double const Sg) const
double getdPcdSvGBar(double const Sg) const
Gets .
double getSBar(double const Sg) const
CapillaryPressureRegularizedVanGenuchten(double const residual_liquid_saturation, double const maximum_liquid_saturation, double const exponent, double const p_b)
double const dPcdSvGBarSg_max_
virtual PropertyDataType value() const
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
void checkSaturationRange(const double Sl)
std::array< VariableType, static_cast< int >(Variable::number_of_variables)> VariableArray
@ residual_liquid_saturation
void checkVanGenuchtenExponentRange(const double m)