This material law takes a material law defined for unscaled saturation and converts it to a material law defined on scaled saturations. More...
#include <EclEpsTwoPhaseLaw.hpp>
Public Types | |
enum | { wettingPhaseIdx = Traits::wettingPhaseIdx } |
enum | { nonWettingPhaseIdx = Traits::nonWettingPhaseIdx } |
typedef EffLaw::Traits | Traits |
typedef ParamsT | Params |
typedef EffLaw::Scalar | Scalar |
Public Member Functions | |
static_assert (numPhases==2,"The endpoint scaling applies to the nested twophase laws, not to ""the threephase one!") | |
static_assert (EffLaw::implementsTwoPhaseApi,"The material laws put into EclEpsTwoPhaseLaw must implement the ""two-phase material law API!") | |
static_assert (EffLaw::implementsTwoPhaseSatApi,"The material laws put into EclEpsTwoPhaseLaw must implement the ""two-phase material law saturation API!") | |
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. | |
template<class Container , class FluidState > | |
static void | relativePermeabilities (Container &, const Params &, const FluidState &) |
The relative permeability-saturation curves depending on absolute saturations. | |
template<class FluidState , class Evaluation = typename FluidState::Scalar> | |
static Evaluation | pcnw (const Params &, const FluidState &) |
The capillary pressure-saturation curve. | |
template<class Evaluation > | |
static Evaluation | twoPhaseSatPcnw (const Params ¶ms, const Evaluation &SwScaled) |
template<class Evaluation > | |
static Evaluation | twoPhaseSatPcnwInv (const Params ¶ms, const Evaluation &pcnwScaled) |
template<class Container , class FluidState > | |
static void | saturations (Container &, const Params &, const FluidState &) |
The saturation-capillary pressure curves. | |
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. | |
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. | |
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. | |
template<class Evaluation > | |
static Evaluation | twoPhaseSatKrw (const Params ¶ms, const Evaluation &SwScaled) |
template<class Evaluation > | |
static Evaluation | twoPhaseSatKrwInv (const Params ¶ms, const Evaluation &krwScaled) |
template<class FluidState , class Evaluation = typename FluidState::Scalar> | |
static Evaluation | krn (const Params &, const FluidState &) |
The relative permeability of the non-wetting phase. | |
template<class Evaluation > | |
static Evaluation | twoPhaseSatKrn (const Params ¶ms, const Evaluation &SwScaled) |
template<class Evaluation > | |
static Evaluation | twoPhaseSatKrnInv (const Params ¶ms, const Evaluation &krnScaled) |
template<class Evaluation > | |
static Evaluation | scaledToUnscaledSatPc (const Params ¶ms, const Evaluation &SwScaled) |
Convert an absolute saturation to an effective one for capillary pressure. | |
template<class Evaluation > | |
static Evaluation | unscaledToScaledSatPc (const Params ¶ms, const Evaluation &SwUnscaled) |
template<class Evaluation > | |
static Evaluation | scaledToUnscaledSatKrw (const Params ¶ms, const Evaluation &SwScaled) |
Convert an absolute saturation to an effective one for the scaling of the relperm of the wetting phase. | |
template<class Evaluation > | |
static Evaluation | unscaledToScaledSatKrw (const Params ¶ms, const Evaluation &SwUnscaled) |
template<class Evaluation > | |
static Evaluation | scaledToUnscaledSatKrn (const Params ¶ms, const Evaluation &SwScaled) |
Convert an absolute saturation to an effective one for the scaling of the relperm of the non-wetting phase. | |
template<class Evaluation > | |
static Evaluation | unscaledToScaledSatKrn (const Params ¶ms, const Evaluation &SwUnscaled) |
Static Public Attributes | |
static const int | numPhases = EffLaw::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. |
This material law takes a material law defined for unscaled saturation and converts it to a material law defined on scaled saturations.
In ECL, simulations "live" in scaled space, while the saturation functions operate on and produce unscaled quantities. This class implements the "impedance adaption" layer between the two worlds. The basic purpose of it is thus the same as the one of EffToAbsLaw, but it is quite a bit more complex.
static void Opm::EclEpsTwoPhaseLaw< EffLawT, ParamsT >::capillaryPressures | ( | Container & | , | |
const Params & | , | |||
const FluidState & | ||||
) | [inline, static] |
The capillary pressure-saturation curves depending on absolute saturations.
values | A random access container which stores the relative pressure of each fluid phase. | |
params | The parameter object expressing the coefficients required by the van Genuchten law. | |
fs | The fluid state for which the capillary pressure ought to be calculated |
static Evaluation Opm::EclEpsTwoPhaseLaw< EffLawT, ParamsT >::krw | ( | const Params & | , | |
const FluidState & | ||||
) | [inline, static] |
The relative permeability for the wetting phase.
params | A 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. |
static Evaluation Opm::EclEpsTwoPhaseLaw< EffLawT, ParamsT >::pcnw | ( | const Params & | , | |
const FluidState & | ||||
) | [inline, static] |
The capillary pressure-saturation curve.
params | A object that stores the appropriate coefficients for the respective law. |
static void Opm::EclEpsTwoPhaseLaw< EffLawT, ParamsT >::relativePermeabilities | ( | Container & | , | |
const Params & | , | |||
const FluidState & | ||||
) | [inline, static] |
The relative permeability-saturation curves depending on absolute saturations.
values | A random access container which stores the relative permeability of each fluid phase. | |
params | The parameter object expressing the coefficients required by the van Genuchten law. | |
fs | The fluid state for which the relative permeabilities ought to be calculated |
static Evaluation Opm::EclEpsTwoPhaseLaw< EffLawT, ParamsT >::scaledToUnscaledSatPc | ( | const Params & | params, | |
const Evaluation & | SwScaled | |||
) | [inline, static] |
Convert an absolute saturation to an effective one for capillary pressure.
The effective saturation is then feed into the "raw" capillary pressure law.