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

Implementation of the regularized van Genuchten's capillary pressure / relative permeability <-> saturation relation. More...

#include <RegularizedVanGenuchten.hpp>

List of all members.

Public Types

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

Public Member Functions

 static_assert (numPhases==2,"The regularized van Genuchten capillary pressure law only ""applies to the case of two fluid phases")

Static Public Member Functions

template<class Container , class FluidState >
static void capillaryPressures (Container &values, const Params &params, const FluidState &fs)
 Calculate the pressure difference of the phases in the most generic way.
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.
template<class Container , class FluidState >
static void relativePermeabilities (Container &values, const Params &params, const FluidState &fs)
 Returns the relative permeabilities of the phases dependening on the phase saturations.
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation pcnw (const Params &params, const FluidState &fs)
 A regularized van Genuchten capillary pressure-saturation curve.
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 van Genuchten saturation-capillary pressure curve.
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.
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)
 Regularized version of the relative permeability for the wetting phase of the medium implied by the van Genuchten parameterization.
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)
 Regularized version of the relative permeability for the non-wetting phase of the medium implied by the van Genuchten parameterization.
template<class Evaluation >
static Evaluation twoPhaseSatKrn (const Params &params, const Evaluation &Sw)

Static Public Attributes

static const int numPhases = Traits::numPhases
 The number of fluid phases.
static const bool implementsTwoPhaseApi = true
 Specify whether this material law implements the two-phase convenience API.
static const bool implementsTwoPhaseSatApi = true
 Specify whether this material law implements the two-phase convenience API which only depends on the phase saturations.
static const bool isSaturationDependent = true
 Specify whether the quantities defined by this material law are saturation dependent.
static const bool isPressureDependent = false
 Specify whether the quantities defined by this material law are dependent on the absolute pressure.
static const bool isTemperatureDependent = false
 Specify whether the quantities defined by this material law are temperature dependent.
static const bool isCompositionDependent = false
 Specify whether the quantities defined by this material law are dependent on the phase composition.

Detailed Description

template<class TraitsT, class ParamsT = RegularizedVanGenuchtenParams<TraitsT>>
class Opm::RegularizedVanGenuchten< TraitsT, ParamsT >

Implementation of the regularized van Genuchten's 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:

An example of the regularization of the capillary pressure curve is shown below:

regularizedVanGenuchten.png
See also:
VanGenuchten

Member Function Documentation

template<class TraitsT , class ParamsT = RegularizedVanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::RegularizedVanGenuchten< TraitsT, ParamsT >::krn ( const Params &  params,
const FluidState &  fs 
) [inline, static]

Regularized version of the relative permeability for the non-wetting phase of the medium implied by the van Genuchten parameterization.

regularized part:

  • below $ \overline S_w =0$: set relative permeability to zero
  • above $ \overline S_w =1$: set relative permeability to one
  • for $ 0 \leq \overline S_w \leq 0.05 $: use a spline as interpolation

Parameters:
params The parameter object expressing the coefficients required by the van Genuchten law.
fs The fluid state for which the derivative ought to be calculated

template<class TraitsT , class ParamsT = RegularizedVanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::RegularizedVanGenuchten< TraitsT, ParamsT >::krw ( const Params &  params,
const FluidState &  fs 
) [inline, static]

Regularized version of the relative permeability for the wetting phase of the medium implied by the van Genuchten parameterization.

regularized part:

  • below $ \overline S_w =0$: set relative permeability to zero
  • above $ \overline S_w =1$: set relative permeability to one
  • between $ 0.95 \leq \overline S_w \leq 1$: use a spline as interpolation

For not-regularized part:

Parameters:
params The parameter object expressing the coefficients required by the van Genuchten law.
fs The fluid state for which the relative permeability ought to be calculated

template<class TraitsT , class ParamsT = RegularizedVanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::RegularizedVanGenuchten< TraitsT, ParamsT >::pcnw ( const Params &  params,
const FluidState &  fs 
) [inline, static]

A regularized van Genuchten capillary pressure-saturation curve.

regularized part:

  • low saturation: extend the $p_c(S_w)$ curve with the slope at the regularization point (i.e. no kink).
  • high saturation: connect the high regularization point with $ \overline S_w =1$ by a straight line (yes, there is a kink :-( ).

For not-regularized part:

template<class TraitsT , class ParamsT = RegularizedVanGenuchtenParams<TraitsT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::RegularizedVanGenuchten< TraitsT, ParamsT >::Sw ( const Params &  params,
const FluidState &  fs 
) [inline, static]

A regularized van Genuchten saturation-capillary pressure curve.

regularized part:

  • low saturation: extend the $p_c(S_w)$ curve with the slope at the regularization point (i.e. no kink).
  • high saturation: connect the high regularization point with $ \overline S_w =1$ by a straight line (yes, there is a kink :-( ).

The according quantities are obtained by exploiting theorem of intersecting lines.

For not-regularized part:

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

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

Parameters:
params The parameter object expressing the coefficients required by the van Genuchten law.
fs The fluid state containing valid phase pressures


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

Generated on 25 Mar 2018 by  doxygen 1.6.1