OGS
MaterialLib::PorousMedium::BrooksCoreyCapillaryPressureSaturation Class Referencefinal

Detailed Description

Brooks-Corey capillary pressure saturation model.

\[p_c=p_b S_e^{-1/m}\]

with

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

where

\begin{eqnarray*} &p_b& \mbox{ entry pressure,}\\ &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 42 of file BrooksCoreyCapillaryPressureSaturation.h.

#include <BrooksCoreyCapillaryPressureSaturation.h>

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

Public Member Functions

 BrooksCoreyCapillaryPressureSaturation (const double pb, const double Sr, const double Sg_r, const double Smax, const double m, const double Pc_max)
 
std::string getName () const override
 Get model name.
 
double getCapillaryPressure (const double saturation) const override
 Get capillary pressure.
 
double getSaturation (const double capillary_pressure) const override
 Get saturation.
 
double getdPcdS (const double saturation) const override
 Get the derivative of the capillary pressure with respect to saturation.
 
double getd2PcdS2 (const double) const override
 
- Public Member Functions inherited from MaterialLib::PorousMedium::CapillaryPressureSaturation
 CapillaryPressureSaturation (const double Sr, const double Sg_r, const double Smax, const double Pc_max)
 
virtual ~CapillaryPressureSaturation ()=default
 

Private Attributes

const double _pb
 Entry pressure.
 
const double _m
 Exponent m, m>1.
 

Additional Inherited Members

- Protected Attributes inherited from MaterialLib::PorousMedium::CapillaryPressureSaturation
const double _saturation_r
 Residual saturation.
 
const double _saturation_nonwet_r
 
const double _saturation_max
 Maximum saturation.
 
const double _pc_max
 Maximum capillary pressure.
 
const double _minor_offset = std::numeric_limits<double>::epsilon()
 

Constructor & Destructor Documentation

◆ BrooksCoreyCapillaryPressureSaturation()

MaterialLib::PorousMedium::BrooksCoreyCapillaryPressureSaturation::BrooksCoreyCapillaryPressureSaturation ( const double pb,
const double Sr,
const double Sg_r,
const double Smax,
const double m,
const double Pc_max )
inline
Parameters
pbEntry pressure, \( p_b \)
SrResidual saturation, \( S_r \)
Sg_rResidual saturation of gas phase, \( Sg_r \)
SmaxMaximum saturation, \( S_{\mbox{max}} \)
mExponent, \( m \)
Pc_maxMaximum capillary pressure, \( P_c^{\mbox{max}}\)

Definition at line 54 of file BrooksCoreyCapillaryPressureSaturation.h.

57 : CapillaryPressureSaturation(Sr, Sg_r, Smax, Pc_max), _pb(pb), _m(m)
58 {
59 }
CapillaryPressureSaturation(const double Sr, const double Sg_r, const double Smax, const double Pc_max)

Member Function Documentation

◆ getCapillaryPressure()

double MaterialLib::PorousMedium::BrooksCoreyCapillaryPressureSaturation::getCapillaryPressure ( const double saturation) const
overridevirtual

◆ getd2PcdS2()

double MaterialLib::PorousMedium::BrooksCoreyCapillaryPressureSaturation::getd2PcdS2 ( const double ) const
inlineoverridevirtual

Get the second derivative of the capillary pressure with respect to saturation

Implements MaterialLib::PorousMedium::CapillaryPressureSaturation.

Definition at line 78 of file BrooksCoreyCapillaryPressureSaturation.h.

79 {
81 "Second derivative of BrooksCorey d^2p_cap / dS^2 is not "
82 "implemented.");
83 }
#define OGS_FATAL(...)
Definition Error.h:26

References OGS_FATAL.

◆ getdPcdS()

double MaterialLib::PorousMedium::BrooksCoreyCapillaryPressureSaturation::getdPcdS ( const double saturation) const
overridevirtual

Get the derivative of the capillary pressure with respect to saturation.

Implements MaterialLib::PorousMedium::CapillaryPressureSaturation.

Definition at line 43 of file BrooksCoreyCapillaryPressureSaturation.cpp.

45{
46 const double S = std::clamp(saturation, _saturation_r + _minor_offset,
48 const double val = std::pow(
49 ((S - _saturation_r) / (_saturation_max - _saturation_r)), -1.0 / _m);
50 return (_pb * val) / (_m * (_saturation_r - S));
51}

References _m, MaterialLib::PorousMedium::CapillaryPressureSaturation::_minor_offset, _pb, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_max, and MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r.

◆ getName()

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

Get model name.

Implements MaterialLib::PorousMedium::CapillaryPressureSaturation.

Definition at line 62 of file BrooksCoreyCapillaryPressureSaturation.h.

63 {
64 return "Brooks-Corey capillary pressure saturation model.";
65 }

◆ getSaturation()

double MaterialLib::PorousMedium::BrooksCoreyCapillaryPressureSaturation::getSaturation ( const double capillary_pressure) const
overridevirtual

Member Data Documentation

◆ _m

const double MaterialLib::PorousMedium::BrooksCoreyCapillaryPressureSaturation::_m
private

Exponent m, m>1.

Definition at line 87 of file BrooksCoreyCapillaryPressureSaturation.h.

Referenced by getCapillaryPressure(), getdPcdS(), and getSaturation().

◆ _pb

const double MaterialLib::PorousMedium::BrooksCoreyCapillaryPressureSaturation::_pb
private

Entry pressure.

Definition at line 86 of file BrooksCoreyCapillaryPressureSaturation.h.

Referenced by getCapillaryPressure(), getdPcdS(), and getSaturation().


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