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

Wrapper class to implement regularized laws (pc-sw-a) with a conversion policy between absolution and effective saturations. More...

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

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

Description

template<class ScalarType, class BaseLaw, template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
class Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >
Template Parameters
ScalarTypethe scalar type
BaseLawthe base law (e.g. VanGenuchten, BrooksCorey, Linear, ...)
Regularizationthe regularization type (set to NoAwnRegularization to turn it off)
EffToAbsPolicythe policy how to convert effective <-> absolute saturations
Note
The regularization interface is expected to return Dumux::OptionalScalars which are wrappers around a Scalar type that provide a boolean operator to check whether the result is valid. If the regularization returns a non-valid value, it means that the given parameter range is outside the regularized region. For that case we forward to the call to the standard law.

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

 InterfacialArea ()=delete
 Deleted default constructor (so we are never in an undefined state) More...
 
 InterfacialArea (const std::string &paramGroup)
 Construct from a subgroup from the global parameter tree. More...
 
 InterfacialArea (const BasicParams &baseParams, const EffToAbsParams &effToAbsParams={}, const RegularizationParams &regParams={})
 Construct from parameter structs. More...
 
template<bool enableRegularization = isRegularized()>
Scalar area (const Scalar sw, const Scalar pc) const
 The capillary pressure-saturation curve. More...
 
template<bool enableRegularization = isRegularized()>
Scalar darea_dpc (const Scalar sw, const Scalar pc) const
 The partial derivative of the capillary pressure w.r.t. the saturation. More...
 
template<bool enableRegularization = isRegularized()>
Scalar darea_dsw (const Scalar sw, const Scalar pc) const
 The partial derivative of the saturation to the capillary pressure. More...
 
bool operator== (const InterfacialArea &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 , template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
using Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >::BasicParams = typename BaseLaw::template Params<Scalar>

◆ EffToAbs

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

◆ EffToAbsParams

template<class ScalarType , class BaseLaw , template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
using Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >::EffToAbsParams = typename EffToAbsPolicy::template Params<Scalar>

◆ RegularizationParams

template<class ScalarType , class BaseLaw , template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
using Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >::RegularizationParams = typename Regularization::template Params<Scalar>

◆ Scalar

template<class ScalarType , class BaseLaw , template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
using Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >::Scalar = ScalarType

Constructor & Destructor Documentation

◆ InterfacialArea() [1/3]

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

◆ InterfacialArea() [2/3]

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

◆ InterfacialArea() [3/3]

template<class ScalarType , class BaseLaw , template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >::InterfacialArea ( 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

◆ area()

template<class ScalarType , class BaseLaw , template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >::area ( const Scalar  sw,
const Scalar  pc 
) const
inline

◆ basicParams()

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

◆ darea_dpc()

template<class ScalarType , class BaseLaw , template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >::darea_dpc ( const Scalar  sw,
const Scalar  pc 
) const
inline

◆ darea_dsw()

template<class ScalarType , class BaseLaw , template< class > class InterfaceType, class Regularization = NoRegularization, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
template<bool enableRegularization = isRegularized()>
Scalar Dumux::FluidMatrix::InterfacialArea< ScalarType, BaseLaw, InterfaceType, Regularization, EffToAbsPolicy >::darea_dsw ( const Scalar  sw,
const Scalar  pc 
) const
inline

◆ effToAbsParams()

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

◆ isRegularized()

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

◆ makeBasicParams()

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

◆ makeEffToAbsParams()

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

◆ operator==()

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

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