3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Public Member Functions | Static Public Member Functions | List of all members
Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse > Class Template Reference

A spline approximation wrapper for 2p material laws. More...

#include <dumux/material/fluidmatrixinteractions/2p/splinemateriallaw.hh>

Inheritance diagram for Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >:

Description

template<class TwoPMaterialLaw, bool approximatePcSwInverse = false>
class Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >

A spline approximation wrapper for 2p material laws.

Template Parameters
TwoPMaterialLawthe type of material law to be wrapped
approximatePcSwInverseif this is set true, the spline approximates sw(pc) and evaluating pc(sw) needs spline inversion. if this is false, the spline approximates pc(sw) and evaluating sw(pc) needs spline inversion. Spline inversion is rather expensive since it has to be done numerically.

Public Types

using Scalar = typename TwoPMaterialLaw::Scalar
 
using BasicParams = typename TwoPMaterialLaw::BasicParams
 
using EffToAbsParams = typename TwoPMaterialLaw::BasicParams
 
using RegularizationParams = typename TwoPMaterialLaw::RegularizationParams
 
using EffToAbs = EffToAbsPolicy
 

Public Member Functions

 SplineTwoPMaterialLaw ()=delete
 Deleted default constructor (so we are never in an undefined state) More...
 
 SplineTwoPMaterialLaw (const std::string &paramGroup)
 Construct from a subgroup from the global parameter tree. More...
 
 SplineTwoPMaterialLaw (const std::array< Scalar, 2 > &sweInterval, std::size_t numSwSamples, TwoPMaterialLaw &&twoP)
 Construct from parameter structs. More...
 
Scalar pc (const Scalar sw) const
 The capillary pressure-saturation curve. More...
 
Scalar dpc_dsw (const Scalar sw) const
 The partial derivative of the capillary pressure w.r.t. the saturation. More...
 
Scalar sw (const Scalar pc) const
 The saturation-capillary pressure curve. More...
 
Scalar dsw_dpc (const Scalar pc) const
 The partial derivative of the saturation to the capillary pressure. More...
 
Scalar krw (const Scalar sw) const
 The relative permeability for the wetting phase. More...
 
Scalar dkrw_dsw (const Scalar sw) const
 The derivative of the relative permeability for the wetting phase w.r.t. saturation. More...
 
Scalar krn (const Scalar sw) const
 The relative permeability for the non-wetting phase. More...
 
Scalar dkrn_dsw (const Scalar sw) const
 The derivative of the relative permeability for the non-wetting phase w.r.t. saturation. More...
 
Scalar endPointPc () const
 The capillary pressure at Swe = 1.0 also called end point capillary pressure. More...
 
bool operator== (const TwoPMaterialLaw &o) const
 Equality comparison with another instance. More...
 
const BasicParamsbasicParams () const
 Return the base law's parameters. More...
 
const EffToAbsParamseffToAbsParams () const
 Return the parameters of the EffToAbs policy. More...
 

Static Public Member Functions

static constexpr int numFluidPhases ()
 Return the number of fluid phases. More...
 
static constexpr bool isRegularized ()
 We are always regularized in the sense that we replace the original curve by a cubic spline. More...
 
static BasicParams makeBasicParams (const std::string &paramGroup)
 Create the base law's parameters using input file parameters. More...
 
static EffToAbsParams makeEffToAbsParams (const std::string &paramGroup)
 Create the parameters of the EffToAbs policy using input file parameters. More...
 

Member Typedef Documentation

◆ BasicParams

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
using Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::BasicParams = typename TwoPMaterialLaw::BasicParams

◆ EffToAbs

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
using Dumux::FluidMatrix::TwoPMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::EffToAbs = EffToAbsPolicy
inherited

◆ EffToAbsParams

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
using Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::EffToAbsParams = typename TwoPMaterialLaw::BasicParams

◆ RegularizationParams

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
using Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::RegularizationParams = typename TwoPMaterialLaw::RegularizationParams

◆ Scalar

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
using Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::Scalar = typename TwoPMaterialLaw::Scalar

Constructor & Destructor Documentation

◆ SplineTwoPMaterialLaw() [1/3]

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::SplineTwoPMaterialLaw ( )
delete

Deleted default constructor (so we are never in an undefined state)

Note
store owning pointers to laws instead if you need default-constructible objects

◆ SplineTwoPMaterialLaw() [2/3]

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::SplineTwoPMaterialLaw ( const std::string &  paramGroup)
inlineexplicit

Construct from a subgroup from the global parameter tree.

Note
This will give you nice error messages if a mandatory parameter is missing

◆ SplineTwoPMaterialLaw() [3/3]

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::SplineTwoPMaterialLaw ( const std::array< Scalar, 2 > &  sweInterval,
std::size_t  numSwSamples,
TwoPMaterialLaw &&  twoP 
)
inline

Construct from parameter structs.

Note
More efficient constructor but you need to ensure all parameters are initialized

Member Function Documentation

◆ basicParams()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
const BasicParams & Dumux::FluidMatrix::TwoPMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::basicParams ( ) const
inlineinherited

Return the base law's parameters.

◆ dkrn_dsw()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Scalar Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::dkrn_dsw ( const Scalar  sw) const
inline

The derivative of the relative permeability for the non-wetting phase w.r.t. saturation.

◆ dkrw_dsw()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Scalar Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::dkrw_dsw ( const Scalar  sw) const
inline

The derivative of the relative permeability for the wetting phase w.r.t. saturation.

◆ dpc_dsw()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Scalar Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::dpc_dsw ( const Scalar  sw) const
inline

The partial derivative of the capillary pressure w.r.t. the saturation.

◆ dsw_dpc()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Scalar Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::dsw_dpc ( const Scalar  pc) const
inline

The partial derivative of the saturation to the capillary pressure.

◆ effToAbsParams()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
const EffToAbsParams & Dumux::FluidMatrix::TwoPMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::effToAbsParams ( ) const
inlineinherited

Return the parameters of the EffToAbs policy.

◆ endPointPc()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Scalar Dumux::FluidMatrix::TwoPMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::endPointPc ( ) const
inlineinherited

The capillary pressure at Swe = 1.0 also called end point capillary pressure.

◆ isRegularized()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
static constexpr bool Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::isRegularized ( )
inlinestaticconstexpr

We are always regularized in the sense that we replace the original curve by a cubic spline.

◆ krn()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Scalar Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::krn ( const Scalar  sw) const
inline

The relative permeability for the non-wetting phase.

◆ krw()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Scalar Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::krw ( const Scalar  sw) const
inline

The relative permeability for the wetting phase.

◆ makeBasicParams()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
static BasicParams Dumux::FluidMatrix::TwoPMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::makeBasicParams ( const std::string &  paramGroup)
inlinestaticinherited

Create the base law's parameters using input file parameters.

◆ makeEffToAbsParams()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
static EffToAbsParams Dumux::FluidMatrix::TwoPMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::makeEffToAbsParams ( const std::string &  paramGroup)
inlinestaticinherited

Create the parameters of the EffToAbs policy using input file parameters.

◆ numFluidPhases()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
static constexpr int Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::numFluidPhases ( )
inlinestaticconstexpr

Return the number of fluid phases.

◆ operator==()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
bool Dumux::FluidMatrix::TwoPMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::operator== ( const TwoPMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy > &  o) const
inlineinherited

Equality comparison with another instance.

◆ pc()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Scalar Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::pc ( const Scalar  sw) const
inline

The capillary pressure-saturation curve.

◆ sw()

template<class TwoPMaterialLaw , bool approximatePcSwInverse = false>
Scalar Dumux::FluidMatrix::SplineTwoPMaterialLaw< TwoPMaterialLaw, approximatePcSwInverse >::sw ( const Scalar  pc) const
inline

The saturation-capillary pressure curve.


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