OGS
MaterialLib::PorousMedium::WettingPhaseVanGenuchten Class Referencefinal

Detailed Description

van Genuchten model model: wetting phase

\[k{rel}= \sqrt{S_e} (1-(1-S_e^{1/m})^m)^2)\]

with

\[S_e=\frac{S-S_r}{S_{\mbox{max}}-S_r}\]

where

\begin{eqnarray*} &S_r& \mbox{ residual saturation,}\\ &S_{\mbox{max}}& \mbox{ maximum saturation,}\\ &m(<=1) & \mbox{ exponent.}\\ \end{eqnarray*}

Note:

\[m=1/(1-n)\]

.

Definition at line 37 of file WettingPhaseVanGenuchten.h.

#include <WettingPhaseVanGenuchten.h>

Inheritance diagram for MaterialLib::PorousMedium::WettingPhaseVanGenuchten:
[legend]
Collaboration diagram for MaterialLib::PorousMedium::WettingPhaseVanGenuchten:
[legend]

Public Member Functions

 WettingPhaseVanGenuchten (const double Sr, const double Smax, const double m, const double krel_min)
std::string getName () const override
 Get model name.
double getValue (const double saturation) const override
 Get relative permeability value.
double getdValue (const double saturation) const override
Public Member Functions inherited from MaterialLib::PorousMedium::RelativePermeability
 RelativePermeability (const double Sr, const double Smax)
virtual ~RelativePermeability ()=default

Private Attributes

const double _m
 Exponent m, m in [0, 1], n=1/(1-m).
const double _krel_min
 Minimum relative permeability.

Additional Inherited Members

Protected Attributes inherited from MaterialLib::PorousMedium::RelativePermeability
const double _minor_offset = std::numeric_limits<double>::epsilon()
const double _saturation_r
 Residual saturation.
const double _saturation_max
 Maximum saturation.

Constructor & Destructor Documentation

◆ WettingPhaseVanGenuchten()

MaterialLib::PorousMedium::WettingPhaseVanGenuchten::WettingPhaseVanGenuchten ( const double Sr,
const double Smax,
const double m,
const double krel_min )
inline
Parameters
SrResidual saturation, \( S_r \)
SmaxMaximum saturation, \( S_{\mbox{max}} \)
mExponent, \( m \)
krel_minMinimum relative permeability, \( k_{rel}^{\mbox{min}}\)

Definition at line 46 of file WettingPhaseVanGenuchten.h.

48 : RelativePermeability(Sr, Smax), _m(m), _krel_min(krel_min)
49 {
50 }
RelativePermeability(const double Sr, const double Smax)
const double _krel_min
Minimum relative permeability.
const double _m
Exponent m, m in [0, 1], n=1/(1-m).

References MaterialLib::PorousMedium::RelativePermeability::RelativePermeability(), _krel_min, and _m.

Member Function Documentation

◆ getdValue()

double MaterialLib::PorousMedium::WettingPhaseVanGenuchten::getdValue ( const double saturation) const
overridevirtual

Get the derivative of relative permeability with respect to saturation.

Parameters
saturationWetting phase saturation

Implements MaterialLib::PorousMedium::RelativePermeability.

Definition at line 33 of file WettingPhaseVanGenuchten.cpp.

34{
35 const double S = std::clamp(saturation,
38 const double Se = (S - _saturation_r) / (_saturation_max - _saturation_r);
39 const double sqrtSe = std::sqrt(Se);
40 const double temp_val = 1.0 - std::pow(1.0 - std::pow(Se, 1.0 / _m), _m);
41 return (0.5 * temp_val * temp_val / sqrtSe +
42 2. * sqrtSe * temp_val *
43 std::pow(1.0 - std::pow(Se, 1.0 / _m), _m - 1.) *
44 std::pow(Se, (1.0 - _m) / _m)) /
46}

References _m, MaterialLib::PorousMedium::RelativePermeability::_minor_offset, MaterialLib::PorousMedium::RelativePermeability::_saturation_max, and MaterialLib::PorousMedium::RelativePermeability::_saturation_r.

◆ getName()

std::string MaterialLib::PorousMedium::WettingPhaseVanGenuchten::getName ( ) const
inlineoverridevirtual

Get model name.

Implements MaterialLib::PorousMedium::RelativePermeability.

Definition at line 53 of file WettingPhaseVanGenuchten.h.

54 {
55 return "Wetting phase van Genuchten relative permeability model.";
56 }

◆ getValue()

double MaterialLib::PorousMedium::WettingPhaseVanGenuchten::getValue ( const double saturation) const
overridevirtual

Get relative permeability value.

Implements MaterialLib::PorousMedium::RelativePermeability.

Definition at line 22 of file WettingPhaseVanGenuchten.cpp.

23{
24 const double S = std::clamp(saturation,
27 const double Se = (S - _saturation_r) / (_saturation_max - _saturation_r);
28 const double val = 1.0 - std::pow(1.0 - std::pow(Se, 1.0 / _m), _m);
29 const double krel = std::sqrt(Se) * val * val;
30 return std::max(_krel_min, krel);
31}

References _krel_min, _m, MaterialLib::PorousMedium::RelativePermeability::_minor_offset, MaterialLib::PorousMedium::RelativePermeability::_saturation_max, and MaterialLib::PorousMedium::RelativePermeability::_saturation_r.

Member Data Documentation

◆ _krel_min

const double MaterialLib::PorousMedium::WettingPhaseVanGenuchten::_krel_min
private

Minimum relative permeability.

Definition at line 67 of file WettingPhaseVanGenuchten.h.

Referenced by WettingPhaseVanGenuchten(), and getValue().

◆ _m

const double MaterialLib::PorousMedium::WettingPhaseVanGenuchten::_m
private

Exponent m, m in [0, 1], n=1/(1-m).

Definition at line 66 of file WettingPhaseVanGenuchten.h.

Referenced by WettingPhaseVanGenuchten(), getdValue(), and getValue().


The documentation for this class was generated from the following files: