Loading...
Searching...
No Matches
Opm::EclStone1Material< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT > Class Template Reference

Implements the second phase capillary pressure/relperm law suggested by Stone as used by the ECLipse simulator. More...

`#include <EclStone1Material.hpp>`

Inheritance diagram for Opm::EclStone1Material< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >:

## Public Types

using | GasOilMaterialLaw = GasOilMaterialLawT
using | OilWaterMaterialLaw = OilWaterMaterialLawT
using | Traits = TraitsT
using | Params = ParamsT
using | Scalar = typename Traits::Scalar

## Static Public Member Functions

template<class ContainerT, class FluidState, class ... Args>
static void | capillaryPressures (ContainerT &values, const Params &params, const FluidState &state)
| Implements the default three phase capillary pressure law used by the ECLipse simulator.
static void | oilWaterHysteresisParams (Scalar &soMax, Scalar &swMax, Scalar &swMin, const Params &params)
static void | setOilWaterHysteresisParams (const Scalar &soMax, const Scalar &swMax, const Scalar &swMin, Params &params)
static void | gasOilHysteresisParams (Scalar &sgMax, Scalar &shMax, Scalar &soMin, const Params &params)
static void | setGasOilHysteresisParams (const Scalar &sgMax, const Scalar &shMax, const Scalar &soMin, Params &params)
static Scalar | trappedGasSaturation (const Params &params, bool maximumTrapping)
static Scalar | trappedOilSaturation (const Params &params, bool maximumTrapping)
static Scalar | trappedWaterSaturation (const Params &params)
static Scalar | strandedGasSaturation (const Params &params, Scalar Sg, Scalar Kg)
template<class FluidState, class Evaluation, class ... Args>
static Evaluation | pcgn (const Params &params, const FluidState &fs)
| Capillary pressure between the gas and the non-wetting liquid (i.e., oil) phase.
template<class FluidState, class Evaluation, class ... Args>
static Evaluation | pcnw (const Params &params, const FluidState &fs)
| Capillary pressure between the non-wetting liquid (i.e., oil) and the wetting liquid (i.e., water) phase.
template<class ContainerT, class FluidState>
static void | saturations (ContainerT &, const Params &, const FluidState &)
| The inverse of the capillary pressure.
template<class FluidState, class Evaluation = typename FluidState::Scalar>
static Evaluation | Sg (const Params &, const FluidState &)
| The saturation of the gas phase.
template<class FluidState, class Evaluation = typename FluidState::Scalar>
static Evaluation | Sn (const Params &, const FluidState &)
| The saturation of the non-wetting (i.e., oil) phase.
template<class FluidState, class Evaluation = typename FluidState::Scalar>
static Evaluation | Sw (const Params &, const FluidState &)
| The saturation of the wetting (i.e., water) phase.
template<class ContainerT, class FluidState, class ... Args>
static void | relativePermeabilities (ContainerT &values, const Params &params, const FluidState &fluidState)
| The relative permeability of all phases.
template<class FluidState, class Evaluation, class ... Args>
static Evaluation | krg (const Params &params, const FluidState &fluidState)
| The relative permeability of the gas phase.
template<class FluidState, class Evaluation, class ... Args>
static Evaluation | krw (const Params &params, const FluidState &fluidState)
| The relative permeability of the wetting phase.
template<class FluidState, class Evaluation, class ... Args>
static Evaluation | krn (const Params &params, const FluidState &fluidState)
| The relative permeability of the non-wetting (i.e., oil) phase.
template<class Evaluation, class FluidState, class ... Args>
static Evaluation | relpermOilInOilGasSystem (const Params &params, const FluidState &fluidState)
| The relative permeability of oil in oil/gas system.
template<class Evaluation, class FluidState, class ... Args>
static Evaluation | relpermOilInOilWaterSystem (const Params &params, const FluidState &fluidState)
| The relative permeability of oil in oil/water system.
template<class FluidState>
static bool | updateHysteresis (Params &params, const FluidState &fluidState)
| Update the hysteresis parameters after a time step.
template<class FluidState>
static Scalar | clampSaturation (const FluidState &fluidState, const int phaseIndex)

## Static Public Attributes

static constexpr int | numPhases = 3
static constexpr int | waterPhaseIdx = Traits::wettingPhaseIdx
static constexpr int | oilPhaseIdx = Traits::nonWettingPhaseIdx
static constexpr int | gasPhaseIdx = Traits::gasPhaseIdx
static constexpr bool | implementsTwoPhaseApi = false
| Specify whether this material law implements the two-phase convenience API.
static constexpr bool | implementsTwoPhaseSatApi = false
| Specify whether this material law implements the two-phase convenience API which only depends on the phase saturations.
static constexpr bool | isSaturationDependent = true
| Specify whether the quantities defined by this material law are saturation dependent.
static constexpr bool | isPressureDependent = false
| Specify whether the quantities defined by this material law are dependent on the absolute pressure.
static constexpr bool | isTemperatureDependent = false
| Specify whether the quantities defined by this material law are temperature dependent.
static constexpr bool | isCompositionDependent = false
| Specify whether the quantities defined by this material law are dependent on the phase composition.

## Detailed Description

template<class TraitsT, class GasOilMaterialLawT, class OilWaterMaterialLawT, class ParamsT = EclStone1MaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
class Opm::EclStone1Material< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >

Implements the second phase capillary pressure/relperm law suggested by Stone as used by the ECLipse simulator.

This material law is valid for three fluid phases and only depends on the saturations.

The required two-phase relations are supplied by means of template arguments and can be an arbitrary other material laws. (Provided that these only depend on saturation.)

## Member Function Documentation

## capillaryPressures()

template<class TraitsT, class GasOilMaterialLawT, class OilWaterMaterialLawT, class ParamsT = EclStone1MaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class ContainerT, class FluidState, class ... Args>

void Opm::EclStone1Material< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >::capillaryPressures | ( | ContainerT & | values,
|  | const Params & | params,
|  | const FluidState & | state )

inline static

Implements the default three phase capillary pressure law used by the ECLipse simulator.

This material law is valid for three fluid phases and only depends on the saturations.

The required two-phase relations are supplied by means of template arguments and can be an arbitrary other material laws.

Parameters

  values | Container for the return values
  params | Parameters
  state | The fluid state

## pcgn()

template<class TraitsT, class GasOilMaterialLawT, class OilWaterMaterialLawT, class ParamsT = EclStone1MaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class FluidState, class Evaluation, class ... Args>

Evaluation Opm::EclStone1Material< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >::pcgn | ( | const Params & | params,
|  | const FluidState & | fs )

inline static

Capillary pressure between the gas and the non-wetting liquid (i.e., oil) phase.

This is defined as

## pcnw()

template<class TraitsT, class GasOilMaterialLawT, class OilWaterMaterialLawT, class ParamsT = EclStone1MaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class FluidState, class Evaluation, class ... Args>

Evaluation Opm::EclStone1Material< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >::pcnw | ( | const Params & | params,
|  | const FluidState & | fs )

inline static

Capillary pressure between the non-wetting liquid (i.e., oil) and the wetting liquid (i.e., water) phase.

This is defined as

## relativePermeabilities()

template<class TraitsT, class GasOilMaterialLawT, class OilWaterMaterialLawT, class ParamsT = EclStone1MaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class ContainerT, class FluidState, class ... Args>

void Opm::EclStone1Material< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >::relativePermeabilities | ( | ContainerT & | values,
|  | const Params & | params,
|  | const FluidState & | fluidState )

inline static

The relative permeability of all phases.

The relative permeability of the water phase it uses the same value as the relative permeability for water in the water-oil law with . The gas relative permebility is taken from the gas-oil material law, but with . The relative permeability of the oil phase is calculated using the relative permeabilities of the oil phase in the two two-phase systems.

A more detailed description can be found in the "Three phase oil relative permeability models" section of the ECLipse technical description.

## updateHysteresis()

template<class TraitsT, class GasOilMaterialLawT, class OilWaterMaterialLawT, class ParamsT = EclStone1MaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class FluidState>

bool Opm::EclStone1Material< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >::updateHysteresis | ( | Params & | params,
|  | const FluidState & | fluidState )

inline static

Update the hysteresis parameters after a time step.

This assumes that the nested two-phase material laws are parameters for EclHysteresisLaw. If they are not, calling this method will cause a compiler error. (But not calling it will still work.)

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

- opm/material/fluidmatrixinteractions/EclStone1Material.hpp