3.3.0
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
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 >

Implements a linear saturation-capillary pressure relation.

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

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

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

Construct from a subgroup from the global parameter tree.

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

Construct from parameter structs.

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

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

◆ dswe_dpc()

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

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

◆ 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

The capillary pressure at Swe = 1.0 also called end point capillary pressure.

◆ isRegularized()

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

Return whether this law is regularized.

◆ krn()

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

The relative permeability for the non-wetting phase.

◆ krw()

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

The relative permeability for the wetting phase.

◆ makeParams()

template<class ScalarType , class EffToAbsPolicy = TwoPEffToAbsDefaultPolicy>
static Params Dumux::FluidMatrix::SmoothedLinearLaw< ScalarType, EffToAbsPolicy >::makeParams ( const std::string &  paramGroup)
inlinestatic

Construct from a subgroup from the global parameter tree.

Note
This will give you nice error messages if a mandatory parameter is missing

◆ operator==()

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

Equality comparison with another instance.

◆ pc()

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

The capillary pressure-saturation curve.

◆ swe()

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

The inverse saturation-capillary pressure curve.


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