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)

References MaterialLib::PorousMedium::CapillaryPressureSaturation::CapillaryPressureSaturation(), _m, and _pb.

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

◆ _pb

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

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