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

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

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

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

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

Construct from a subgroup from the global parameter tree.

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

Construct from parameter structs.

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

The capillary pressure-saturation curve.

◆ 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

Return the base law's parameters.

◆ 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

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

◆ 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

The partial derivative of the saturation to the capillary pressure.

◆ 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

Return the parameters of the EffToAbs policy.

◆ 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

Return whether this law is regularized.

◆ 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

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

◆ 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

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

◆ 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

Equality comparison with another instance.


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