version 3.11-dev
Loading...
Searching...
No Matches
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).
 InterfacialArea (const std::string &paramGroup)
 Construct from a subgroup from the global parameter tree.
 InterfacialArea (const BasicParams &baseParams, const EffToAbsParams &effToAbsParams={}, const RegularizationParams &regParams={})
 Construct from parameter structs.
template<bool enableRegularization = isRegularized()>
Scalar area (const Scalar sw, const Scalar pc) const
 The capillary pressure-saturation curve.
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.
template<bool enableRegularization = isRegularized()>
Scalar darea_dsw (const Scalar sw, const Scalar pc) const
 The partial derivative of the saturation to the capillary pressure.
bool operator== (const InterfacialArea &o) const
 Equality comparison with another instance.
const BasicParams & basicParams () const
 Return the base law's parameters.
const EffToAbsParams & effToAbsParams () const
 Return the parameters of the EffToAbs policy.

Static Public Member Functions

static constexpr bool isRegularized ()
 Return whether this law is regularized.
static BasicParams makeBasicParams (const std::string &paramGroup)
 Create the base law's parameters using input file parameters.
static EffToAbsParams makeEffToAbsParams (const std::string &paramGroup)
 Create the parameters of the EffToAbs policy using input file parameters.

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>
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>
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>
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: