version 3.9-dev
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 >
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
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
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
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

◆ dkrn_dsw()

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

◆ dkrw_dsw()

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

◆ dpc_dsw()

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

◆ dsw_dpc()

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

◆ effToAbsParams()

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

◆ endPointPc()

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

◆ isRegularized()

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

◆ krn()

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

◆ krw()

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

◆ 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

◆ 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

◆ numFluidPhases()

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

◆ 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

◆ pc()

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

◆ sw()

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

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