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

Implementation of the regularized Brooks-Corey capillary pressure / relative permeability <-> saturation relation. More...

#include <RegularizedBrooksCorey.hpp>

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

Public Types

typedef TraitsT Traits
 
typedef ParamsT Params
 
typedef Traits::Scalar Scalar
 

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 depending on absolute saturations. 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 depending on absolute saturations. More...
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation pcnw (const Params &params, const FluidState &fs)
 A regularized Brooks-Corey capillary pressure-saturation curve. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatPcnw (const Params &params, const Evaluation &Sw)
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Sw (const Params &params, const FluidState &fs)
 A regularized Brooks-Corey saturation-capillary pressure curve. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatSw (const Params &params, const Evaluation &pcnw)
 
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 &pcnw)
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation krw (const Params &params, const FluidState &fs)
 Regularized version of the relative permeability of the wetting phase of the Brooks-Corey curves. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatKrw (const Params &params, const Evaluation &Sw)
 
template<class Evaluation >
static Evaluation twoPhaseSatKrwInv (const Params &params, const Evaluation &krw)
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation krn (const Params &params, const FluidState &fs)
 Regularized version of the relative permeability of the non-wetting phase of the Brooks-Corey curves. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatKrn (const Params &params, const Evaluation &Sw)
 
template<class Evaluation >
static Evaluation twoPhaseSatKrnInv (const Params &params, const Evaluation &krn)
 

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 = RegularizedBrooksCoreyParams<TraitsT>>
class Opm::RegularizedBrooksCorey< TraitsT, ParamsT >

Implementation of the regularized Brooks-Corey capillary pressure / relative permeability <-> saturation relation.

This class bundles the "raw" curves as static members and doesn't concern itself converting absolute to effective saturations and vice versa.

In order to avoid very steep gradients the marginal values are "regularized". This means that in stead of following the curve of the material law in these regions, some linear approximation is used. Doing this is not worse than following the material law. E.g. for very low wetting phase values the material laws predict infinite values for $p_c$ which is completely unphysical. In case of very high wetting phase saturations the difference between regularized and "pure" material law is not big.

Regularizing has the additional benefit of being numerically friendly: Newton's method does not like infinite gradients.

The implementation is accomplished as follows:

  • check whether we are in the range of regularization
    • yes: use the regularization
    • no: forward to the standard material law.
See also
BrooksCorey

Member Typedef Documentation

◆ Params

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
typedef ParamsT Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::Params

◆ Scalar

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
typedef Traits::Scalar Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::Scalar

◆ Traits

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
typedef TraitsT Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::Traits

Member Function Documentation

◆ capillaryPressures()

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

The capillary pressure-saturation curves depending on absolute saturations.

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

◆ krn()

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

Regularized version of the relative permeability of the non-wetting phase of the Brooks-Corey curves.

The approach for regularization is very similar to the one of the capillary pressure, but it does not avoid kinks:

  • For wetting phase saturations between 0 and 1, use the unregularized Brooks-Corey non-wetting phase relative permeability
  • For wetting phase saturations smaller than 0, return 1
  • For wetting phase saturations larger than 1, return 0
See also
BrooksCorey::krn

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

Referenced by Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::twoPhaseSatKrnInv().

◆ krw()

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

Regularized version of the relative permeability of the wetting phase of the Brooks-Corey curves.

The approach for regularization is very similar to the one of the capillary pressure, but it does not avoid kinks:

  • For wetting phase saturations between 0 and 1, use the unregularized Brooks-Corey wetting phase relative permeability
  • For wetting phase saturations smaller than 0, return 0
  • For wetting phase saturations larger than 1, return 1
See also
BrooksCorey::krw

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

Referenced by Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::twoPhaseSatKrwInv().

◆ pcnw()

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

A regularized Brooks-Corey capillary pressure-saturation curve.

This is a regularized variant of the Brooks-Corey curve:

  • For wetting phase saturations lower than the threshold saturation, the $p_c(S_w)$ curve is extrapolated using a straight line exhibiting the slope unregularized capillary pressure curve at the threshold saturation.
  • For wetting phase saturations larger than 1, the curve is extrapolated using a straight line that exhibits the slope of the unregularized curve at $S_w =
  1$
See also
BrooksCorey::pcnw

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

Referenced by Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::twoPhaseSatSn(), and Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::twoPhaseSatSw().

◆ relativePermeabilities()

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

The relative permeability-saturation curves depending on absolute saturations.

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

◆ saturations()

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
template<class Container , class FluidState >
static void Opm::RegularizedBrooksCorey< 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 = RegularizedBrooksCoreyParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::RegularizedBrooksCorey< 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 = RegularizedBrooksCoreyParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::Sw ( const Params params,
const FluidState &  fs 
)
inlinestatic

◆ twoPhaseSatKrn()

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

◆ twoPhaseSatKrnInv()

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::twoPhaseSatKrnInv ( const Params params,
const Evaluation &  krn 
)
inlinestatic

◆ twoPhaseSatKrw()

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

◆ twoPhaseSatKrwInv()

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::twoPhaseSatKrwInv ( const Params params,
const Evaluation &  krw 
)
inlinestatic

◆ twoPhaseSatPcnw()

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

◆ twoPhaseSatSn()

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::twoPhaseSatSn ( const Params params,
const Evaluation &  pcnw 
)
inlinestatic

◆ twoPhaseSatSw()

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
template<class Evaluation >
static Evaluation Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::twoPhaseSatSw ( const Params params,
const Evaluation &  pcnw 
)
inlinestatic

Member Data Documentation

◆ implementsTwoPhaseApi

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
const bool Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::implementsTwoPhaseApi = true
static

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

◆ implementsTwoPhaseSatApi

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
const bool Opm::RegularizedBrooksCorey< 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 = RegularizedBrooksCoreyParams<TraitsT>>
const bool Opm::RegularizedBrooksCorey< 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 = RegularizedBrooksCoreyParams<TraitsT>>
const bool Opm::RegularizedBrooksCorey< 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 = RegularizedBrooksCoreyParams<TraitsT>>
const bool Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::isSaturationDependent = true
static

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

◆ isTemperatureDependent

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
const bool Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::isTemperatureDependent = false
static

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

◆ numPhases

template<class TraitsT , class ParamsT = RegularizedBrooksCoreyParams<TraitsT>>
const int Opm::RegularizedBrooksCorey< TraitsT, ParamsT >::numPhases = Traits::numPhases
static

The number of fluid phases.


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