Opm::EclMultiplexerMaterial< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT > Class Template Reference

Implements a multiplexer class that provides all three phase capillary pressure laws used by the ECLipse simulator. More...

#include <EclMultiplexerMaterial.hpp>

List of all members.

Public Types

typedef GasOilMaterialLawT GasOilMaterialLaw
typedef OilWaterMaterialLawT OilWaterMaterialLaw
typedef Opm::EclStone1Material
< TraitsT, GasOilMaterialLaw,
OilWaterMaterialLaw > 
Stone1Material
typedef Opm::EclStone2Material
< TraitsT, GasOilMaterialLaw,
OilWaterMaterialLaw > 
Stone2Material
typedef
Opm::EclDefaultMaterial
< TraitsT, GasOilMaterialLaw,
OilWaterMaterialLaw > 
DefaultMaterial
typedef
Opm::EclTwoPhaseMaterial
< TraitsT, GasOilMaterialLaw,
OilWaterMaterialLaw > 
TwoPhaseMaterial
typedef TraitsT Traits
typedef ParamsT Params
typedef Traits::Scalar Scalar

Public Member Functions

 static_assert (TraitsT::numPhases==3,"The number of phases considered by this capillary pressure ""law is always three!")
 static_assert (GasOilMaterialLaw::numPhases==2,"The number of phases considered by the gas-oil capillary ""pressure law must be two!")
 static_assert (OilWaterMaterialLaw::numPhases==2,"The number of phases considered by the oil-water capillary ""pressure law must be two!")
 static_assert (std::is_same< typename GasOilMaterialLaw::Scalar, typename OilWaterMaterialLaw::Scalar >::value,"The two two-phase capillary pressure laws must use the same ""type of floating point values.")

Static Public Member Functions

template<class ContainerT , class FluidState >
static void capillaryPressures (ContainerT &values, const Params &params, const FluidState &fluidState)
 Implements the multiplexer three phase capillary pressure law used by the ECLipse simulator.
static void oilWaterHysteresisParams (Scalar &pcSwMdc, Scalar &krnSwMdc, const Params &params)
static void setOilWaterHysteresisParams (const Scalar &pcSwMdc, const Scalar &krnSwMdc, Params &params)
static void gasOilHysteresisParams (Scalar &pcSwMdc, Scalar &krnSwMdc, const Params &params)
static void setGasOilHysteresisParams (const Scalar &pcSwMdc, const Scalar &krnSwMdc, Params &params)
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation pcgn (const Params &, const FluidState &)
 Capillary pressure between the gas and the non-wetting liquid (i.e., oil) phase.
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation pcnw (const Params &, const FluidState &)
 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 >
static void relativePermeabilities (ContainerT &values, const Params &params, const FluidState &fluidState)
 The relative permeability of all phases.
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation krg (const Params &, const FluidState &)
 The relative permeability of the gas phase.
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation krw (const Params &, const FluidState &)
 The relative permeability of the wetting phase.
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation krn (const Params &, const FluidState &)
 The relative permeability of the non-wetting (i.e., oil) phase.
template<class FluidState >
static void updateHysteresis (Params &params, const FluidState &fluidState)
 Update the hysteresis parameters after a time step.

Static Public Attributes

static const int numPhases = 3
static const int waterPhaseIdx = Traits::wettingPhaseIdx
static const int oilPhaseIdx = Traits::nonWettingPhaseIdx
static const int gasPhaseIdx = Traits::gasPhaseIdx
static const bool implementsTwoPhaseApi = false
 Specify whether this material law implements the two-phase convenience API.
static const bool implementsTwoPhaseSatApi = false
 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 GasOilMaterialLawT, class OilWaterMaterialLawT, class ParamsT = EclMultiplexerMaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
class Opm::EclMultiplexerMaterial< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >

Implements a multiplexer class that provides all three phase capillary pressure laws used by the ECLipse simulator.


Member Function Documentation

template<class TraitsT , class GasOilMaterialLawT , class OilWaterMaterialLawT , class ParamsT = EclMultiplexerMaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class ContainerT , class FluidState >
static void Opm::EclMultiplexerMaterial< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >::capillaryPressures ( ContainerT &  values,
const Params &  params,
const FluidState &  fluidState 
) [inline, static]

Implements the multiplexer 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
template<class TraitsT , class GasOilMaterialLawT , class OilWaterMaterialLawT , class ParamsT = EclMultiplexerMaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::EclMultiplexerMaterial< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >::pcgn ( const Params &  ,
const FluidState &   
) [inline, static]

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

This is defined as

\[ p_{c,gn} = p_g - p_n \]

template<class TraitsT , class GasOilMaterialLawT , class OilWaterMaterialLawT , class ParamsT = EclMultiplexerMaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class FluidState , class Evaluation = typename FluidState::Scalar>
static Evaluation Opm::EclMultiplexerMaterial< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, ParamsT >::pcnw ( const Params &  ,
const FluidState &   
) [inline, static]

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

This is defined as

\[ p_{c,nw} = p_n - p_w \]

template<class TraitsT , class GasOilMaterialLawT , class OilWaterMaterialLawT , class ParamsT = EclMultiplexerMaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class ContainerT , class FluidState >
static void Opm::EclMultiplexerMaterial< 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 $S_o = 1 - S_w$. The gas relative permebility is taken from the gas-oil material law, but with $S_o = 1 - S_g$. 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.

template<class TraitsT , class GasOilMaterialLawT , class OilWaterMaterialLawT , class ParamsT = EclMultiplexerMaterialParams<TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT>>
template<class FluidState >
static void Opm::EclMultiplexerMaterial< 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 methid will cause a compiler error. (But not calling it will still work.)


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

Generated on 25 Mar 2018 by  doxygen 1.6.1