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).

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 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 getdValue(), and getValue().


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