Opm::EclMaterialLawManager< TraitsT > Class Template Reference

Provides an simple way to create and manage the material law objects for a complete ECL deck. More...

#include <EclMaterialLawManager.hpp>

Public Types

using MaterialLaw = EclMultiplexerMaterial< Traits, GasOilTwoPhaseLaw, OilWaterTwoPhaseLaw, GasWaterTwoPhaseLaw >
 
using MaterialLawParams = typename MaterialLaw::Params
 

Public Member Functions

 EclMaterialLawManager ()
 
void initFromState (const EclipseState &eclState)
 
void initParamsForElements (const EclipseState &eclState, size_t numCompressedElems)
 
Scalar applySwatinit (unsigned elemIdx, Scalar pcow, Scalar Sw)
 Modify the initial condition according to the SWATINIT keyword. More...
 
bool enableEndPointScaling () const
 
bool enableHysteresis () const
 
MaterialLawParamsmaterialLawParams (unsigned elemIdx)
 
const MaterialLawParamsmaterialLawParams (unsigned elemIdx) const
 
const MaterialLawParamsconnectionMaterialLawParams (unsigned satRegionIdx, unsigned elemIdx) const
 Returns a material parameter object for a given element and saturation region. More...
 
int satnumRegionIdx (unsigned elemIdx) const
 
int getKrnumSatIdx (unsigned elemIdx, FaceDir::DirEnum facedir) const
 
bool hasDirectionalRelperms () const
 
int imbnumRegionIdx (unsigned elemIdx) const
 
std::shared_ptr< MaterialLawParams > & materialLawParamsPointerReferenceHack (unsigned elemIdx)
 
template<class FluidState >
void updateHysteresis (const FluidState &fluidState, unsigned elemIdx)
 
void oilWaterHysteresisParams (Scalar &pcSwMdc, Scalar &krnSwMdc, unsigned elemIdx) const
 
void setOilWaterHysteresisParams (const Scalar &pcSwMdc, const Scalar &krnSwMdc, unsigned elemIdx)
 
void gasOilHysteresisParams (Scalar &pcSwMdc, Scalar &krnSwMdc, unsigned elemIdx) const
 
void setGasOilHysteresisParams (const Scalar &pcSwMdc, const Scalar &krnSwMdc, unsigned elemIdx)
 
EclEpsScalingPoints< Scalar > & oilWaterScaledEpsPointsDrainage (unsigned elemIdx)
 
const EclEpsScalingPointsInfo< Scalar > & oilWaterScaledEpsInfoDrainage (size_t elemIdx) const
 

Detailed Description

template<class TraitsT>
class Opm::EclMaterialLawManager< TraitsT >

Provides an simple way to create and manage the material law objects for a complete ECL deck.

Member Typedef Documentation

◆ MaterialLaw

template<class TraitsT >
using Opm::EclMaterialLawManager< TraitsT >::MaterialLaw = EclMultiplexerMaterial<Traits, GasOilTwoPhaseLaw, OilWaterTwoPhaseLaw, GasWaterTwoPhaseLaw>

◆ MaterialLawParams

template<class TraitsT >
using Opm::EclMaterialLawManager< TraitsT >::MaterialLawParams = typename MaterialLaw::Params

Constructor & Destructor Documentation

◆ EclMaterialLawManager()

template<class TraitsT >
Opm::EclMaterialLawManager< TraitsT >::EclMaterialLawManager ( )
inline

Member Function Documentation

◆ applySwatinit()

template<class TraitsT >
Scalar Opm::EclMaterialLawManager< TraitsT >::applySwatinit ( unsigned  elemIdx,
Scalar  pcow,
Scalar  Sw 
)
inline

Modify the initial condition according to the SWATINIT keyword.

The method returns the water saturation which yields a givenn capillary pressure. The reason this method is not folded directly into initFromState() is that the capillary pressure given depends on the particuars of how the simulator calculates its initial condition.

References Opm::abs(), Opm::EclMultiplexerMaterial< TraitsT, GasOilMaterialLawT, OilWaterMaterialLawT, GasWaterMaterialLawT, ParamsT >::capillaryPressures(), Opm::EclOilWaterSystem, Opm::EclMaterialLawManager< TraitsT >::materialLawParams(), and Opm::EclMaterialLawManager< TraitsT >::oilWaterScaledEpsPointsDrainage().

◆ connectionMaterialLawParams()

template<class TraitsT >
const MaterialLawParams & Opm::EclMaterialLawManager< TraitsT >::connectionMaterialLawParams ( unsigned  satRegionIdx,
unsigned  elemIdx 
) const
inline

Returns a material parameter object for a given element and saturation region.

This method changes the saturation table idx in the original material law parameter object. In the context of ECL reservoir simulators, this is required to properly handle wells with its own saturation table idx. In order to reset the saturation table idx in the materialLawparams_ call the method with the cells satRegionIdx

References Opm::EclDefaultApproach, Opm::EclStone1Approach, Opm::EclStone2Approach, Opm::EclTwoPhaseApproach, and Opm::EclMaterialLawManager< TraitsT >::enableHysteresis().

◆ enableEndPointScaling()

template<class TraitsT >
bool Opm::EclMaterialLawManager< TraitsT >::enableEndPointScaling ( ) const
inline

◆ enableHysteresis()

◆ gasOilHysteresisParams()

◆ getKrnumSatIdx()

template<class TraitsT >
int Opm::EclMaterialLawManager< TraitsT >::getKrnumSatIdx ( unsigned  elemIdx,
FaceDir::DirEnum  facedir 
) const
inline

◆ hasDirectionalRelperms()

template<class TraitsT >
bool Opm::EclMaterialLawManager< TraitsT >::hasDirectionalRelperms ( ) const
inline

◆ imbnumRegionIdx()

template<class TraitsT >
int Opm::EclMaterialLawManager< TraitsT >::imbnumRegionIdx ( unsigned  elemIdx) const
inline

◆ initFromState()

template<class TraitsT >
void Opm::EclMaterialLawManager< TraitsT >::initFromState ( const EclipseState &  eclState)
inline

◆ initParamsForElements()

template<class TraitsT >
void Opm::EclMaterialLawManager< TraitsT >::initParamsForElements ( const EclipseState &  eclState,
size_t  numCompressedElems 
)
inline

◆ materialLawParams() [1/2]

◆ materialLawParams() [2/2]

template<class TraitsT >
const MaterialLawParams & Opm::EclMaterialLawManager< TraitsT >::materialLawParams ( unsigned  elemIdx) const
inline

◆ materialLawParamsPointerReferenceHack()

template<class TraitsT >
std::shared_ptr< MaterialLawParams > & Opm::EclMaterialLawManager< TraitsT >::materialLawParamsPointerReferenceHack ( unsigned  elemIdx)
inline

◆ oilWaterHysteresisParams()

◆ oilWaterScaledEpsInfoDrainage()

template<class TraitsT >
const EclEpsScalingPointsInfo< Scalar > & Opm::EclMaterialLawManager< TraitsT >::oilWaterScaledEpsInfoDrainage ( size_t  elemIdx) const
inline

◆ oilWaterScaledEpsPointsDrainage()

template<class TraitsT >
EclEpsScalingPoints< Scalar > & Opm::EclMaterialLawManager< TraitsT >::oilWaterScaledEpsPointsDrainage ( unsigned  elemIdx)
inline

◆ satnumRegionIdx()

template<class TraitsT >
int Opm::EclMaterialLawManager< TraitsT >::satnumRegionIdx ( unsigned  elemIdx) const
inline

◆ setGasOilHysteresisParams()

◆ setOilWaterHysteresisParams()

◆ updateHysteresis()

template<class TraitsT >
template<class FluidState >
void Opm::EclMaterialLawManager< TraitsT >::updateHysteresis ( const FluidState &  fluidState,
unsigned  elemIdx 
)
inline

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