Opm::VanGenuchten< TraitsT, ParamsT > Class Template Reference

Implementation of the van Genuchten capillary pressure - saturation relation. More...

#include <VanGenuchten.hpp>

Inheritance diagram for Opm::VanGenuchten< TraitsT, ParamsT >:
Inheritance graph

Public Types

typedef TraitsT Traits
 The traits class for this material law. More...
 
typedef ParamsT Params
 The type of the parameter objects for this law. More...
 
typedef Traits::Scalar Scalar
 The type of the scalar values for this law. More...
 

Static Public Member Functions

template<class Container , class FluidState >
static void capillaryPressures (Container &values, const Params &params, const FluidState &fs)
 The capillary pressure-saturation curves according to van Genuchten. More...
 
template<class Container , class FluidState >
static void saturations (Container &values, const Params &params, const FluidState &fs)
 Calculate the saturations of the phases starting from their pressure differences. More...
 
template<class Container , class FluidState >
static void relativePermeabilities (Container &values, const Params &params, const FluidState &fs)
 The relative permeability-saturation curves according to van Genuchten. More...
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation pcnw (const Params &params, const FluidState &fs)
 The capillary pressure-saturation curve according to van Genuchten. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatPcnw (const Params &params, const Evaluation &Sw)
 The saturation-capillary pressure curve according to van Genuchten using a material law specific API. More...
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Sw (const Params &params, const FluidState &fs)
 The saturation-capillary pressure curve according to van Genuchten. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatSw (const Params &params, const Evaluation &pC)
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Sn (const Params &params, const FluidState &fs)
 Calculate the non-wetting phase saturations depending on the phase pressures. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatSn (const Params &params, const Evaluation &pC)
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation krw (const Params &params, const FluidState &fs)
 The relative permeability for the wetting phase of the medium according to van Genuchten's curve with Mualem parameterization. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatKrw (const Params &params, const Evaluation &Sw)
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation krn (const Params &params, const FluidState &fs)
 The relative permeability for the non-wetting phase of the medium according to van Genuchten. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatKrn (const Params &params, Evaluation Sw)
 

Static Public Attributes

static const int numPhases = Traits::numPhases
 The number of fluid phases. More...
 
static const bool implementsTwoPhaseApi = true
 
static const bool implementsTwoPhaseSatApi = true
 
static const bool isSaturationDependent = true
 
static const bool isPressureDependent = false
 
static const bool isTemperatureDependent = false
 
static const bool isCompositionDependent = false
 

Detailed Description

template<class TraitsT, class ParamsT = VanGenuchtenParams<TraitsT>>
class Opm::VanGenuchten< TraitsT, ParamsT >

Implementation of the van Genuchten capillary pressure - saturation relation.

This class only implements the "raw" van-Genuchten curves as static members and doesn't concern itself converting absolute to effective saturations and vice versa.

The converion from and to effective saturations can be done using, e.g. EffToAbsLaw.

See also
VanGenuchtenParams

Member Typedef Documentation

◆ Params

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
typedef ParamsT Opm::VanGenuchten< TraitsT, ParamsT >::Params

The type of the parameter objects for this law.

◆ Scalar

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
typedef Traits::Scalar Opm::VanGenuchten< TraitsT, ParamsT >::Scalar

The type of the scalar values for this law.

◆ Traits

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
typedef TraitsT Opm::VanGenuchten< TraitsT, ParamsT >::Traits

The traits class for this material law.

Member Function Documentation

◆ capillaryPressures()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class Container , class FluidState >
static void Opm::VanGenuchten< TraitsT, ParamsT >::capillaryPressures ( Container &  values,
const Params params,
const FluidState &  fs 
)
inlinestatic

The capillary pressure-saturation curves according to van Genuchten.

Van Genuchten's empirical capillary pressure <-> saturation function is given by

\[
p_{c,wn} = p_n - p_w = ({S_w}^{-1/m} - 1)^{1/n}/\alpha
\]

Parameters
valuesA random access container which stores the relative pressure of each fluid phase.
paramsThe parameter object expressing the coefficients required by the van Genuchten law.
fsThe fluid state for which the capillary pressure ought to be calculated

◆ krn()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::krn ( const Params params,
const FluidState &  fs 
)
inlinestatic

The relative permeability for the non-wetting phase of the medium according to van Genuchten.

Parameters
paramsThe parameter object expressing the coefficients required by the van Genuchten law.
fsThe fluid state for which the derivative ought to be calculated

References Opm::VanGenuchten< TraitsT, ParamsT >::Sw(), and Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatKrn().

◆ krw()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::krw ( const Params params,
const FluidState &  fs 
)
inlinestatic

The relative permeability for the wetting phase of the medium according to van Genuchten's curve with Mualem parameterization.

Parameters
paramsThe parameter object expressing the coefficients required by the van Genuchten law.
fsThe fluid state for which the relative permeability ought to be calculated

References Opm::VanGenuchten< TraitsT, ParamsT >::Sw(), and Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatKrw().

◆ pcnw()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::pcnw ( const Params params,
const FluidState &  fs 
)
inlinestatic

The capillary pressure-saturation curve according to van Genuchten.

Van Genuchten's empirical capillary pressure <-> saturation function is given by

\[
p_{c,wn} = p_n - p_w = ({S_w}^{-1/m} - 1)^{1/n}/\alpha
\]

Parameters
paramsThe parameter object expressing the coefficients required by the van Genuchten law.
fsThe fluid state for which the capillary pressure ought to be calculated

References Opm::VanGenuchten< TraitsT, ParamsT >::Sw(), and Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatPcnw().

◆ relativePermeabilities()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class Container , class FluidState >
static void Opm::VanGenuchten< TraitsT, ParamsT >::relativePermeabilities ( Container &  values,
const Params params,
const FluidState &  fs 
)
inlinestatic

The relative permeability-saturation curves according to van Genuchten.

Parameters
valuesA random access container which stores the relative permeability of each fluid phase.
paramsThe parameter object expressing the coefficients required by the van Genuchten law.
fsThe fluid state for which the relative permeabilities ought to be calculated

◆ saturations()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class Container , class FluidState >
static void Opm::VanGenuchten< TraitsT, ParamsT >::saturations ( Container &  values,
const Params params,
const FluidState &  fs 
)
inlinestatic

Calculate the saturations of the phases starting from their pressure differences.

◆ Sn()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::Sn ( const Params params,
const FluidState &  fs 
)
inlinestatic

Calculate the non-wetting phase saturations depending on the phase pressures.

◆ Sw()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::Sw ( const Params params,
const FluidState &  fs 
)
inlinestatic

The saturation-capillary pressure curve according to van Genuchten.

This is the inverse of the capillary pressure-saturation curve:

\[
S_w = {p_C}^{-1} = ((\alpha p_C)^n + 1)^{-m}
\]

Parameters
paramsThe parameter object expressing the coefficients required by the van Genuchten law.
fsThe fluid state containing valid phase pressures

References Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatSw().

Referenced by Opm::VanGenuchten< TraitsT, ParamsT >::krn(), Opm::VanGenuchten< TraitsT, ParamsT >::krw(), Opm::VanGenuchten< TraitsT, ParamsT >::pcnw(), Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatKrn(), Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatKrw(), and Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatPcnw().

◆ twoPhaseSatKrn()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatKrn ( const Params params,
Evaluation  Sw 
)
inlinestatic

◆ twoPhaseSatKrw()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatKrw ( const Params params,
const Evaluation &  Sw 
)
inlinestatic

◆ twoPhaseSatPcnw()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatPcnw ( const Params params,
const Evaluation &  Sw 
)
inlinestatic

The saturation-capillary pressure curve according to van Genuchten using a material law specific API.

The advantage of this model is that it is simpler to use because the baggage of the fluid state API does not need to be carried along. The disavantage of this is, that it is very specific to the van Genuchten law (i.e., depends only on the wetting phase saturation, assumes two fluid phases, etc)

Parameters
paramsThe parameter object expressing the coefficients required by the van Genuchten law.
SwThe effective wetting phase saturation

References Opm::pow(), and Opm::VanGenuchten< TraitsT, ParamsT >::Sw().

Referenced by Opm::RegularizedVanGenuchtenParams< TraitsT >::finalize(), Opm::VanGenuchten< TraitsT, ParamsT >::pcnw(), Opm::ParkerLenhard< TraitsT, ParamsT >::twoPhaseSatPcnw(), Opm::RegularizedVanGenuchten< TraitsT, ParamsT >::twoPhaseSatPcnw(), and Opm::RegularizedVanGenuchten< TraitsT, ParamsT >::twoPhaseSatSw().

◆ twoPhaseSatSn()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatSn ( const Params params,
const Evaluation &  pC 
)
inlinestatic

◆ twoPhaseSatSw()

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::VanGenuchten< TraitsT, ParamsT >::twoPhaseSatSw ( const Params params,
const Evaluation &  pC 
)
inlinestatic

Member Data Documentation

◆ implementsTwoPhaseApi

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
const bool Opm::VanGenuchten< TraitsT, ParamsT >::implementsTwoPhaseApi = true
static

Specify whether this material law implements the two-phase convenience API

◆ implementsTwoPhaseSatApi

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
const bool Opm::VanGenuchten< TraitsT, ParamsT >::implementsTwoPhaseSatApi = true
static

Specify whether this material law implements the two-phase convenience API which only depends on the phase saturations

◆ isCompositionDependent

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
const bool Opm::VanGenuchten< TraitsT, ParamsT >::isCompositionDependent = false
static

Specify whether the quantities defined by this material law are dependent on the phase composition

◆ isPressureDependent

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
const bool Opm::VanGenuchten< TraitsT, ParamsT >::isPressureDependent = false
static

Specify whether the quantities defined by this material law are dependent on the absolute pressure

◆ isSaturationDependent

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
const bool Opm::VanGenuchten< TraitsT, ParamsT >::isSaturationDependent = true
static

Specify whether the quantities defined by this material law are saturation dependent

◆ isTemperatureDependent

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
const bool Opm::VanGenuchten< TraitsT, ParamsT >::isTemperatureDependent = false
static

Specify whether the quantities defined by this material law are temperature dependent

◆ numPhases

template<class TraitsT , class ParamsT = VanGenuchtenParams<TraitsT>>
const int Opm::VanGenuchten< TraitsT, ParamsT >::numPhases = Traits::numPhases
static

The number of fluid phases.


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