OGS
MaterialLib::PorousMedium::NonWettingPhaseBrooksCoreyOilGas Class Referencefinal

Detailed Description

BrooksCorey oil-gas model: non-wetting phase.

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

with

\[S_e=\frac{S^w-S_r}{S^w_{\mbox{max}}-S_r}\]

where

\begin{eqnarray*} &S^w_r& \mbox{residual saturation of wetting phase,}\\ &S^w_{\mbox{max}}& \mbox{maximum saturation of wetting phase,}\\ &m(>=1) & \mbox{ exponent.}\\ \end{eqnarray*}

Definition at line 34 of file NonWettingPhaseBrooksCoreyOilGas.h.

#include <NonWettingPhaseBrooksCoreyOilGas.h>

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

Public Member Functions

 NonWettingPhaseBrooksCoreyOilGas (const double Snr, const double Snmax, const double m, const double krel_min)
 
std::string getName () const override
 Get model name.
 
double getValue (const double saturation_w) const override
 
double getdValue (const double saturation_w) 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>=1.0.
 
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

◆ NonWettingPhaseBrooksCoreyOilGas()

MaterialLib::PorousMedium::NonWettingPhaseBrooksCoreyOilGas::NonWettingPhaseBrooksCoreyOilGas ( const double Snr,
const double Snmax,
const double m,
const double krel_min )
inline
Parameters
SnrResidual saturation of the non-wetting phase, \( S^n_r \)
SnmaxMaximum saturation of the non-wetting phase, \( S^n_{\mbox{max}} \)
mExponent, \( m \)
krel_minMinimum relative permeability, \( k_{rel}^{\mbox{min}}\)

Definition at line 46 of file NonWettingPhaseBrooksCoreyOilGas.h.

48 : RelativePermeability(1. - Snmax, 1. - Snr), _m(m), _krel_min(krel_min)
49 {
50 }
RelativePermeability(const double Sr, const double Smax)

Member Function Documentation

◆ getdValue()

double MaterialLib::PorousMedium::NonWettingPhaseBrooksCoreyOilGas::getdValue ( const double saturation_w) const
overridevirtual

Get the derivative of relative permeability with respect to saturation.

Parameters
saturation_wWetting phase saturation

Implements MaterialLib::PorousMedium::RelativePermeability.

Definition at line 34 of file NonWettingPhaseBrooksCoreyOilGas.cpp.

36{
37 const double S = std::clamp(saturation_w,
40 const double Se = (S - _saturation_r) / (_saturation_max - _saturation_r);
41 return (-2. * (1.0 - Se) * (1.0 - std::pow(Se, 1.0 + 2.0 / _m)) -
42 (1.0 + 2.0 / _m) * (1.0 - Se) * (1.0 - Se) *
43 std::pow(Se, 2.0 / _m)) /
45}

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

◆ getName()

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

Get model name.

Implements MaterialLib::PorousMedium::RelativePermeability.

Definition at line 53 of file NonWettingPhaseBrooksCoreyOilGas.h.

54 {
55 return "Non-wetting phase Brook-Corey relative permeability model.";
56 }

◆ getValue()

double MaterialLib::PorousMedium::NonWettingPhaseBrooksCoreyOilGas::getValue ( const double saturation_w) const
overridevirtual

Get relative permeability value.

Parameters
saturation_wWetting phase saturation

Implements MaterialLib::PorousMedium::RelativePermeability.

Definition at line 22 of file NonWettingPhaseBrooksCoreyOilGas.cpp.

24{
25 const double S = std::clamp(saturation_w,
28 const double Se = (S - _saturation_r) / (_saturation_max - _saturation_r);
29 const double krel =
30 (1.0 - Se) * (1.0 - Se) * (1.0 - std::pow(Se, 1.0 + 2.0 / _m));
31 return std::max(_krel_min, krel);
32}

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::NonWettingPhaseBrooksCoreyOilGas::_krel_min
private

Minimum relative permeability.

Definition at line 68 of file NonWettingPhaseBrooksCoreyOilGas.h.

Referenced by getValue().

◆ _m

const double MaterialLib::PorousMedium::NonWettingPhaseBrooksCoreyOilGas::_m
private

Exponent m, m>=1.0.

Definition at line 67 of file NonWettingPhaseBrooksCoreyOilGas.h.

Referenced by getdValue(), and getValue().


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