version 3.9-dev
Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy > Class Template Reference

Implements a linear saturation-capillary pressure relation. More...

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

Inheritance diagram for Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >:

Description

template<class ScalarType, class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
class Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >

The entry pressure is reached at \(\mathrm{\overline{S}_w = 1}\), the maximum capillary pressure is observed at \(\mathrm{\overline{S}_w = 0}\).

The relative permeabilities are 0 or 1 outside of the range of effective saturation. However, the transition between the linearly changing and the constant part is not smooth but with a kink. The Newton scheme does not like that. Therefore a smooth transition is accomplished by interpolating these regions with a spline.

An example of the regularization of the relative permeability is shown below:

Classes

struct  Params
 The parameter type. More...
 

Public Types

using Scalar = ScalarType
 
using EffToAbsParams = typename EffToAbsPolicy::template Params< Scalar >
 
using EffToAbs = EffToAbsPolicy
 

Public Member Functions

 SmoothedLinearLaw ()=delete
 Deleted default constructor (so we are never in an undefined state) More...
 
 SmoothedLinearLaw (const std::string &paramGroup)
 Construct from a subgroup from the global parameter tree. More...
 
 SmoothedLinearLaw (const Params &params, const EffToAbsParams &effToAbsParams={})
 Construct from parameter structs. More...
 
Scalar pc (Scalar swe) const
 The capillary pressure-saturation curve. More...
 
Scalar swe (Scalar pc) const
 The inverse saturation-capillary pressure curve. More...
 
Scalar endPointPc () const
 The capillary pressure at Swe = 1.0 also called end point capillary pressure. More...
 
Scalar dpc_dswe (Scalar swe) const
 The partial derivative of the capillary pressure w.r.t. the effective saturation. More...
 
Scalar dswe_dpc (Scalar pc) const
 The partial derivative of the effective saturation w.r.t. the capillary pressure. More...
 
Scalar krw (Scalar swe) const
 The relative permeability for the wetting phase. More...
 
Scalar krn (Scalar swe) const
 The relative permeability for the non-wetting phase. More...
 
bool operator== (const SmoothedLinearLaw< Scalar, EffToAbs > &o) const
 Equality comparison with another instance. More...
 
const EffToAbsParamseffToAbsParams () const
 

Static Public Member Functions

static constexpr bool isRegularized ()
 Return whether this law is regularized. More...
 
static constexpr int numFluidPhases ()
 Return the number of fluid phases. More...
 
static Params makeParams (const std::string &paramGroup)
 Construct from a subgroup from the global parameter tree. More...
 

Member Typedef Documentation

◆ EffToAbs

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
using Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::EffToAbs = EffToAbsPolicy

◆ EffToAbsParams

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
using Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::EffToAbsParams = typename EffToAbsPolicy::template Params<Scalar>

◆ Scalar

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
using Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::Scalar = ScalarType

Constructor & Destructor Documentation

◆ SmoothedLinearLaw() [1/3]

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

◆ SmoothedLinearLaw() [2/3]

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

◆ SmoothedLinearLaw() [3/3]

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::SmoothedLinearLaw ( const Params params,
const EffToAbsParams effToAbsParams = {} 
)
inline
Note
More efficient constructor but you need to ensure all parameters are initialized

Member Function Documentation

◆ dpc_dswe()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Scalar Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::dpc_dswe ( Scalar  swe) const
inline

◆ dswe_dpc()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Scalar Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::dswe_dpc ( Scalar  pc) const
inline

◆ effToAbsParams()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
const EffToAbsParams & Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::effToAbsParams ( ) const
inline

◆ endPointPc()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Scalar Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::endPointPc ( ) const
inline

◆ isRegularized()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
static constexpr bool Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::isRegularized ( )
inlinestaticconstexpr

◆ krn()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Scalar Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::krn ( Scalar  swe) const
inline

◆ krw()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Scalar Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::krw ( Scalar  swe) const
inline

◆ makeParams()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
static Params Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::makeParams ( const std::string &  paramGroup)
inlinestatic
Note
This will give you nice error messages if a mandatory parameter is missing

◆ numFluidPhases()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
static constexpr int Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::numFluidPhases ( )
inlinestaticconstexpr

◆ operator==()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
bool Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::operator== ( const SmoothedLinearLaw< Scalar, EffToAbs > &  o) const
inline

◆ pc()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Scalar Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::pc ( Scalar  swe) const
inline

◆ swe()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
Scalar Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::swe ( Scalar  pc) const
inline

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