version 3.9-dev
Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy > Class Template Reference

Parker van Genuchten material law.

#include <dumux/material/fluidmatrixinteractions/3p/parkervangenuchten.hh>

Inheritance diagram for Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >:

Public Types

using Scalar = ScalarType
 
using BasicParams = typename BaseLaw::template Params< Scalar >
 
using EffToAbsParams = typename EffToAbsPolicy::template Params< Scalar >
 
using RegularizationParams = typename Regularization::template Params< Scalar >
 
using EffToAbs = EffToAbsPolicy
 

Public Member Functions

 ParkerVanGenuchtenMaterialLaw ()=delete
 Deleted default constructor (so we are never in an undefined state) More...
 
 ParkerVanGenuchtenMaterialLaw (const std::string &paramGroup)
 Construct from a subgroup from the global parameter tree. More...
 
 ParkerVanGenuchtenMaterialLaw (const BasicParams &baseParams, const EffToAbsParams &effToAbsParams={}, const RegularizationParams &regParams={})
 Construct from parameter structs. More...
 
template<bool enableRegularization = isRegularized()>
Scalar pcgw (const Scalar sw, const Scalar) const
 The capillary pressure-saturation curve for the gas and wetting phase. More...
 
template<bool enableRegularization = isRegularized()>
Scalar pcnw (const Scalar sw, const Scalar) const
 The capillary pressure-saturation curve for the nonwetting and wetting phase. More...
 
template<bool enableRegularization = isRegularized()>
Scalar pcgn (const Scalar sw, const Scalar sn) const
 The capillary pressure-saturation curve for the gas and nonwetting phase. More...
 
template<bool enableRegularization = isRegularized()>
Scalar pcAlpha (const Scalar, const Scalar sn) const
 This function ensures a continuous transition from 2 to 3 phases and vice versa. More...
 
template<bool enableRegularization = isRegularized()>
Scalar dpcgw_dsw (const Scalar sw, const Scalar) const
 The partial derivative of the capillary pressure w.r.t. the saturation. More...
 
template<bool enableRegularization = isRegularized()>
Scalar dpcnw_dsw (const Scalar sw, const Scalar) const
 The partial derivative of the capillary pressure w.r.t. the saturation. More...
 
template<bool enableRegularization = isRegularized()>
Scalar dpcgn_dst (const Scalar st, const Scalar) const
 The partial derivative of the capillary pressure w.r.t. the saturation. More...
 
template<bool enableRegularization = isRegularized()>
Scalar krw (const Scalar sw, const Scalar sn) const
 The relative permeability for the wetting phase. More...
 
template<bool enableRegularization = isRegularized()>
Scalar krn (const Scalar sw, const Scalar sn) const
 The relative permeability for the nonwetting phase. More...
 
template<bool enableRegularization = isRegularized()>
Scalar krg (const Scalar sw, const Scalar sn) const
 The relative permeability for the nonwetting phase. More...
 
template<bool enableRegularization = isRegularized()>
Scalar kr (const int phaseIdx, const Scalar sw, const Scalar sn) const
 The relative permeability for the nonwetting phase. More...
 
template<bool enableRegularization = isRegularized()>
Scalar dkrg_dst (const Scalar st) const
 The derivative of the relative permeability for the nonwetting phase w.r.t. saturation. More...
 
bool operator== (const ParkerVanGenuchtenMaterialLaw &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 bool isRegularized ()
 Return whether this law is regularized. 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 ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
using Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::BasicParams = typename BaseLaw::template Params<Scalar>

◆ EffToAbs

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
using Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::EffToAbs = EffToAbsPolicy

◆ EffToAbsParams

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
using Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::EffToAbsParams = typename EffToAbsPolicy::template Params<Scalar>

◆ RegularizationParams

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
using Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::RegularizationParams = typename Regularization::template Params<Scalar>

◆ Scalar

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
using Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::Scalar = ScalarType

Constructor & Destructor Documentation

◆ ParkerVanGenuchtenMaterialLaw() [1/3]

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::ParkerVanGenuchtenMaterialLaw ( )
delete
Note
store owning pointers to laws instead if you need default-constructible objects

◆ ParkerVanGenuchtenMaterialLaw() [2/3]

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::ParkerVanGenuchtenMaterialLaw ( const std::string &  paramGroup)
inlineexplicit
Note
This will give you nice error messages if a mandatory parameter is missing

◆ ParkerVanGenuchtenMaterialLaw() [3/3]

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::ParkerVanGenuchtenMaterialLaw ( const BasicParams baseParams,
const EffToAbsParams effToAbsParams = {},
const RegularizationParams regParams = {} 
)
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 = ParkerVanGenuchten3PEffToAbsPolicy>
const BasicParams & Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::basicParams ( ) const
inline

◆ dkrg_dst()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::dkrg_dst ( const Scalar  st) const
inline
Parameters
stTotal (wetting + nonwetting) saturation

◆ dpcgn_dst()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::dpcgn_dst ( const Scalar  st,
const  Scalar 
) const
inline

◆ dpcgw_dsw()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::dpcgw_dsw ( const Scalar  sw,
const  Scalar 
) const
inline

◆ dpcnw_dsw()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::dpcnw_dsw ( const Scalar  sw,
const  Scalar 
) const
inline

◆ effToAbsParams()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
const EffToAbsParams & Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::effToAbsParams ( ) const
inline

◆ isRegularized()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
static constexpr bool Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::isRegularized ( )
inlinestaticconstexpr

◆ kr()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::kr ( const int  phaseIdx,
const Scalar  sw,
const Scalar  sn 
) const
inline
Parameters
phaseIdxIndicator, The saturation of all phases.
swWetting saturation
snNonwetting saturation

◆ krg()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::krg ( const Scalar  sw,
const Scalar  sn 
) const
inline
Parameters
swWetting saturation
snNonwetting saturation

◆ krn()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::krn ( const Scalar  sw,
const Scalar  sn 
) const
inline
Parameters
swWetting saturation
snNonwetting saturation

◆ krw()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::krw ( const Scalar  sw,
const Scalar  sn 
) const
inline
Parameters
swWetting saturation
snNonwetting saturation

◆ makeBasicParams()

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

◆ makeEffToAbsParams()

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

◆ operator==()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
bool Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::operator== ( const ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy > &  o) const
inline

◆ pcAlpha()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::pcAlpha ( const  Scalar,
const Scalar  sn 
) const
inline

◆ pcgn()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::pcgn ( const Scalar  sw,
const Scalar  sn 
) const
inline
Parameters
swWetting saturation
snNonwetting saturation

◆ pcgw()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::pcgw ( const Scalar  sw,
const  Scalar 
) const
inline

◆ pcnw()

template<class ScalarType , class BaseLaw , class Regularization = NoRegularization, class EffToAbsPolicy = ParkerVanGenuchten3PEffToAbsPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::ParkerVanGenuchtenMaterialLaw< ScalarType, BaseLaw, Regularization, EffToAbsPolicy >::pcnw ( const Scalar  sw,
const  Scalar 
) const
inline

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