Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT > Class Template Reference

This material law implements the hysteresis model of the ECL file format. More...

#include <EclHysteresisTwoPhaseLaw.hpp>

Inheritance diagram for Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >:
Inheritance graph

Public Types

enum  { wettingPhaseIdx = Traits::wettingPhaseIdx }
 
enum  { nonWettingPhaseIdx = Traits::nonWettingPhaseIdx }
 
using EffectiveLaw = EffectiveLawT
 
using EffectiveLawParams = typename EffectiveLaw::Params
 
using Traits = typename EffectiveLaw::Traits
 
using Params = ParamsT
 
using Scalar = typename EffectiveLaw::Scalar
 

Static Public Member Functions

template<class Container , class FluidState >
static void capillaryPressures (Container &, const Params &, const FluidState &)
 The capillary pressure-saturation curves depending on absolute saturations. More...
 
template<class Container , class FluidState >
static void relativePermeabilities (Container &, const Params &, const FluidState &)
 The relative permeability-saturation curves depending on absolute saturations. More...
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation pcnw (const Params &, const FluidState &)
 The capillary pressure-saturation curve. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatPcnw (const Params &params, const Evaluation &Sw)
 
template<class Container , class FluidState >
static void saturations (Container &, const Params &, const FluidState &)
 The saturation-capillary pressure curves. More...
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Sw (const Params &, const FluidState &)
 Calculate wetting liquid phase saturation given that the rest of the fluid state has been initialized. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatSw (const Params &, const Evaluation &)
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Sn (const Params &, const FluidState &)
 Calculate non-wetting liquid phase saturation given that the rest of the fluid state has been initialized. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatSn (const Params &, const Evaluation &)
 
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation krw (const Params &, const FluidState &)
 The relative permeability for the wetting phase. 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 &, const FluidState &)
 The relative permeability of the non-wetting phase. More...
 
template<class Evaluation >
static Evaluation twoPhaseSatKrn (const Params &params, const Evaluation &Sw)
 

Static Public Attributes

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

Detailed Description

template<class EffectiveLawT, class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
class Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >

This material law implements the hysteresis model of the ECL file format.

Member Typedef Documentation

◆ EffectiveLaw

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
using Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::EffectiveLaw = EffectiveLawT

◆ EffectiveLawParams

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
using Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::EffectiveLawParams = typename EffectiveLaw::Params

◆ Params

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
using Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::Params = ParamsT

◆ Scalar

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
using Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::Scalar = typename EffectiveLaw::Scalar

◆ Traits

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
using Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::Traits = typename EffectiveLaw::Traits

Member Enumeration Documentation

◆ anonymous enum

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
anonymous enum
Enumerator
wettingPhaseIdx 

◆ anonymous enum

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
anonymous enum
Enumerator
nonWettingPhaseIdx 

Member Function Documentation

◆ capillaryPressures()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class Container , class FluidState >
static void Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::capillaryPressures ( Container &  ,
const Params ,
const FluidState &   
)
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 van Genuchten law.
fsThe fluid state for which the capillary pressure ought to be calculated

◆ krn()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::krn ( const Params ,
const FluidState &   
)
inlinestatic

The relative permeability of the non-wetting phase.

◆ krw()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::krw ( const Params ,
const FluidState &   
)
inlinestatic

The relative permeability for the wetting phase.

Parameters
paramsA container object that is populated with the appropriate coefficients for the respective law. Therefore, in the (problem specific) spatialParameters first, the material law is chosen, and then the params container is constructed accordingly. Afterwards the values are set there, too.
Returns
Relative permeability of the wetting phase calculated as implied by EffectiveLaw e.g. Brooks & Corey, van Genuchten, linear... .

◆ pcnw()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::pcnw ( const Params ,
const FluidState &   
)
inlinestatic

The capillary pressure-saturation curve.

Parameters
paramsA object that stores the appropriate coefficients for the respective law.
Returns
Capillary pressure [Pa] calculated by specific constitutive relation (e.g. Brooks & Corey, van Genuchten, linear...)

◆ relativePermeabilities()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class Container , class FluidState >
static void Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::relativePermeabilities ( Container &  ,
const Params ,
const FluidState &   
)
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 van Genuchten law.
fsThe fluid state for which the relative permeabilities ought to be calculated

◆ saturations()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class Container , class FluidState >
static void Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::saturations ( Container &  ,
const Params ,
const FluidState &   
)
inlinestatic

The saturation-capillary pressure curves.

◆ Sn()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::Sn ( const Params ,
const FluidState &   
)
inlinestatic

Calculate non-wetting liquid phase saturation given that the rest of the fluid state has been initialized.

◆ Sw()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::Sw ( const Params ,
const FluidState &   
)
inlinestatic

◆ twoPhaseSatKrn()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class Evaluation >
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::twoPhaseSatKrn ( const Params params,
const Evaluation &  Sw 
)
inlinestatic

◆ twoPhaseSatKrw()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class Evaluation >
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::twoPhaseSatKrw ( const Params params,
const Evaluation &  Sw 
)
inlinestatic

◆ twoPhaseSatPcnw()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class Evaluation >
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::twoPhaseSatPcnw ( const Params params,
const Evaluation &  Sw 
)
inlinestatic

◆ twoPhaseSatSn()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class Evaluation >
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::twoPhaseSatSn ( const Params ,
const Evaluation &   
)
inlinestatic

◆ twoPhaseSatSw()

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
template<class Evaluation >
static Evaluation Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::twoPhaseSatSw ( const Params ,
const Evaluation &   
)
inlinestatic

Member Data Documentation

◆ implementsTwoPhaseApi

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
constexpr bool Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::implementsTwoPhaseApi = true
staticconstexpr

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

◆ implementsTwoPhaseSatApi

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
constexpr bool Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::implementsTwoPhaseSatApi = true
staticconstexpr

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

◆ isCompositionDependent

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
constexpr bool Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::isCompositionDependent = false
staticconstexpr

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

◆ isPressureDependent

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
constexpr bool Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::isPressureDependent = false
staticconstexpr

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

◆ isSaturationDependent

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
constexpr bool Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::isSaturationDependent = true
staticconstexpr

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

◆ isTemperatureDependent

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
constexpr bool Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::isTemperatureDependent = false
staticconstexpr

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

◆ numPhases

template<class EffectiveLawT , class ParamsT = EclHysteresisTwoPhaseLawParams<EffectiveLawT>>
constexpr int Opm::EclHysteresisTwoPhaseLaw< EffectiveLawT, ParamsT >::numPhases = EffectiveLaw::numPhases
staticconstexpr

The number of fluid phases.


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