Opm::PLScanningCurve< ScalarT > Class Template Reference

Represents a scanning curve in the Parker-Lenhard hysteresis model. More...

#include <ParkerLenhard.hpp>

Public Types

typedef ScalarT Scalar
 

Public Member Functions

 PLScanningCurve (Scalar Swr)
 Constructs main imbibition curve. More...
 
 ~PLScanningCurve ()
 Destructor. After it was called all references to the next() curve are invalid! More...
 
PLScanningCurveprev () const
 Return the previous scanning curve, i.e. the curve with one less reversal than the current one. More...
 
PLScanningCurvenext () const
 Return the next scanning curve, i.e. the curve with one more reversal than the current one. More...
 
void setNext (Scalar SwReversal, Scalar pcnwReversal, Scalar SwMiCurve, Scalar SwMdCurve)
 Set the next scanning curve. More...
 
bool isValidAt_Sw (Scalar SwReversal)
 Returns true iff the given effective saturation Swei is within the scope of the curve, i.e. whether Swei is part of the curve's domain and the curve thus applies to Swi. More...
 
bool isImbib ()
 Returns true iff the scanning curve is a imbibition curve. More...
 
bool isDrain ()
 Returns true iff the scanning curve is a drainage curve. More...
 
int loopNum ()
 The loop number of the scanning curve. More...
 
Scalar Sw () const
 Absolute wetting-phase saturation at the scanning curve's reversal point. More...
 
Scalar pcnw () const
 Capillary pressure at the last reversal point. More...
 
Scalar SwMic ()
 Apparent saturation of the last reversal point on the pressure MIC. More...
 
Scalar SwMdc ()
 Apparent saturation of the last reversal point on the pressure MDC. More...
 

Protected Member Functions

 PLScanningCurve (PLScanningCurve *prevSC, PLScanningCurve *nextSC, int loopN, Scalar SwReversal, Scalar pcnwReversal, Scalar SwMiCurve, Scalar SwMdCurve)
 

Detailed Description

template<class ScalarT>
class Opm::PLScanningCurve< ScalarT >

Represents a scanning curve in the Parker-Lenhard hysteresis model.

The class has pointers to the scanning curves with higher and lower loop number, this saving the history of the imbibitions and drainages.

Member Typedef Documentation

◆ Scalar

template<class ScalarT >
typedef ScalarT Opm::PLScanningCurve< ScalarT >::Scalar

Constructor & Destructor Documentation

◆ PLScanningCurve() [1/2]

template<class ScalarT >
Opm::PLScanningCurve< ScalarT >::PLScanningCurve ( Scalar  Swr)
inline

Constructs main imbibition curve.

Further scanning curves can be added with setNext.

References Opm::PLScanningCurve< ScalarT >::PLScanningCurve().

Referenced by Opm::PLScanningCurve< ScalarT >::PLScanningCurve(), and Opm::PLScanningCurve< ScalarT >::setNext().

◆ PLScanningCurve() [2/2]

template<class ScalarT >
Opm::PLScanningCurve< ScalarT >::PLScanningCurve ( PLScanningCurve< ScalarT > *  prevSC,
PLScanningCurve< ScalarT > *  nextSC,
int  loopN,
Scalar  SwReversal,
Scalar  pcnwReversal,
Scalar  SwMiCurve,
Scalar  SwMdCurve 
)
inlineprotected

◆ ~PLScanningCurve()

template<class ScalarT >
Opm::PLScanningCurve< ScalarT >::~PLScanningCurve ( )
inline

Destructor. After it was called all references to the next() curve are invalid!

Member Function Documentation

◆ isDrain()

template<class ScalarT >
bool Opm::PLScanningCurve< ScalarT >::isDrain ( )
inline

Returns true iff the scanning curve is a drainage curve.

References Opm::PLScanningCurve< ScalarT >::isImbib().

◆ isImbib()

template<class ScalarT >
bool Opm::PLScanningCurve< ScalarT >::isImbib ( )
inline

◆ isValidAt_Sw()

template<class ScalarT >
bool Opm::PLScanningCurve< ScalarT >::isValidAt_Sw ( Scalar  SwReversal)
inline

Returns true iff the given effective saturation Swei is within the scope of the curve, i.e. whether Swei is part of the curve's domain and the curve thus applies to Swi.

References Opm::PLScanningCurve< ScalarT >::isImbib(), and Opm::PLScanningCurve< ScalarT >::Sw().

◆ loopNum()

template<class ScalarT >
int Opm::PLScanningCurve< ScalarT >::loopNum ( )
inline

The loop number of the scanning curve.

The MDC is 0, PISC is 1, PDSC is 2, ...

Referenced by Opm::PLScanningCurve< ScalarT >::isImbib(), and Opm::PLScanningCurve< ScalarT >::setNext().

◆ next()

template<class ScalarT >
PLScanningCurve * Opm::PLScanningCurve< ScalarT >::next ( ) const
inline

Return the next scanning curve, i.e. the curve with one more reversal than the current one.

Referenced by Opm::ParkerLenhard< TraitsT, ParamsT >::update().

◆ pcnw()

template<class ScalarT >
Scalar Opm::PLScanningCurve< ScalarT >::pcnw ( ) const
inline

Capillary pressure at the last reversal point.

◆ prev()

template<class ScalarT >
PLScanningCurve * Opm::PLScanningCurve< ScalarT >::prev ( ) const
inline

Return the previous scanning curve, i.e. the curve with one less reversal than the current one.

Referenced by Opm::ParkerLenhard< TraitsT, ParamsT >::twoPhaseSatPcnw().

◆ setNext()

template<class ScalarT >
void Opm::PLScanningCurve< ScalarT >::setNext ( Scalar  SwReversal,
Scalar  pcnwReversal,
Scalar  SwMiCurve,
Scalar  SwMdCurve 
)
inline

Set the next scanning curve.

Next in the sense of the number of reversals from imbibition to drainage or vince versa. If this curve already has a list of next curves, it is deleted and thus forgotten.

References Opm::PLScanningCurve< ScalarT >::loopNum(), and Opm::PLScanningCurve< ScalarT >::PLScanningCurve().

Referenced by Opm::ParkerLenhard< TraitsT, ParamsT >::update().

◆ Sw()

template<class ScalarT >
Scalar Opm::PLScanningCurve< ScalarT >::Sw ( ) const
inline

Absolute wetting-phase saturation at the scanning curve's reversal point.

Referenced by Opm::PLScanningCurve< ScalarT >::isValidAt_Sw(), and Opm::ParkerLenhard< TraitsT, ParamsT >::twoPhaseSatPcnw().

◆ SwMdc()

template<class ScalarT >
Scalar Opm::PLScanningCurve< ScalarT >::SwMdc ( )
inline

Apparent saturation of the last reversal point on the pressure MDC.

Referenced by Opm::ParkerLenhard< TraitsT, ParamsT >::twoPhaseSatPcnw().

◆ SwMic()

template<class ScalarT >
Scalar Opm::PLScanningCurve< ScalarT >::SwMic ( )
inline

Apparent saturation of the last reversal point on the pressure MIC.

Referenced by Opm::ParkerLenhard< TraitsT, ParamsT >::twoPhaseSatPcnw().


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