version 3.10-dev
Dumux::FluidMatrix::VanGenuchten Class Reference

Implementation of the van Genuchten capillary pressure <-> saturation relation, and relative permeability. More...

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

Description

Note
Capillary pressure model from van Genuchten (1980), relative permeability model from Mualem (1976)

Classes

struct  Params
 The parameter type. More...
 

Static Public Member Functions

template<class Scalar = double>
static Params< Scalar > makeParams (const std::string &paramGroup)
 Construct from a subgroup from the global parameter tree. More...
 
template<class Scalar >
static Scalar pc (Scalar swe, const Params< Scalar > &params)
 The capillary pressure-saturation curve according to van Genuchten. More...
 
template<class Scalar >
static Scalar swe (Scalar pc, const Params< Scalar > &params)
 The saturation-capillary pressure curve according to van Genuchten. More...
 
template<class Scalar >
static Scalar endPointPc (const Params< Scalar > &params)
 The capillary pressure at Swe = 1.0 also called end point capillary pressure. More...
 
template<class Scalar >
static Scalar dpc_dswe (Scalar swe, const Params< Scalar > &params)
 The partial derivative of the capillary pressure w.r.t. the effective saturation according to van Genuchten. More...
 
template<class Scalar >
static Scalar dswe_dpc (Scalar pc, const Params< Scalar > &params)
 The partial derivative of the effective saturation to the capillary pressure according to van Genuchten. More...
 
template<class Scalar >
static Scalar krw (Scalar swe, const Params< Scalar > &params)
 The relative permeability for the wetting phase of the medium implied by van Genuchten / Mualem parameterization. More...
 
template<class Scalar >
static Scalar dkrw_dswe (Scalar swe, const Params< Scalar > &params)
 The derivative of the relative permeability for the wetting phase in regard to the wetting saturation of the medium implied by the van Genuchten parameterization. More...
 
template<class Scalar >
static Scalar krn (Scalar swe, const Params< Scalar > &params)
 The relative permeability for the non-wetting phase of the medium implied by van Genuchten's parameterization. More...
 
template<class Scalar >
static Scalar dkrn_dswe (Scalar swe, const Params< Scalar > &params)
 The derivative of the relative permeability for the non-wetting phase in regard to the wetting saturation of the medium as implied by the van Genuchten parameterization. More...
 

Member Function Documentation

◆ dkrn_dswe()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::dkrn_dswe ( Scalar  swe,
const Params< Scalar > &  params 
)
inlinestatic
Parameters
sweThe mobile saturation of the wetting phase.
paramsA container object that is populated with the appropriate coefficients for the respective law.
Note
Instead of undefined behaviour if pc is not in the valid range, we return a valid number, by clamping the input.

◆ dkrw_dswe()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::dkrw_dswe ( Scalar  swe,
const Params< Scalar > &  params 
)
inlinestatic
Parameters
sweThe mobile saturation of the wetting phase.
paramsA container object that is populated with the appropriate coefficients for the respective law.
Note
Instead of undefined behaviour if pc is not in the valid range, we return a valid number, by clamping the input.

◆ dpc_dswe()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::dpc_dswe ( Scalar  swe,
const Params< Scalar > &  params 
)
inlinestatic

This is equivalent to \(\mathrm{ \frac{\partial p_c}{\partial \overline{S}_w} = -\frac{1}{\alpha} (\overline{S}_w^{-1/m} - 1)^{1/n - } \overline{S}_w^{-1/m} / \overline{S}_w / m }\)

Parameters
sweEffective saturation of the wetting phase \(\mathrm{\overline{S}_w}\)
paramsA container object that is populated with the appropriate coefficients for the respective law.
Note
Instead of undefined behaviour if swe is not in the valid range, we return a valid number, by clamping the input.

◆ dswe_dpc()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::dswe_dpc ( Scalar  pc,
const Params< Scalar > &  params 
)
inlinestatic
Parameters
pcCapillary pressure \(\mathrm{p_C}\) in \(\mathrm{[Pa]}\)
paramsA container object that is populated with the appropriate coefficients for the respective law.
Note
Instead of undefined behaviour if pc is not in the valid range, we return a valid number, by clamping the input.

◆ endPointPc()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::endPointPc ( const Params< Scalar > &  params)
inlinestatic
Parameters
paramsA container object that is populated with the appropriate coefficients for the respective law.

◆ krn()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::krn ( Scalar  swe,
const Params< Scalar > &  params 
)
inlinestatic
Parameters
sweThe mobile saturation of the wetting phase.
paramsA container object that is populated with the appropriate coefficients for the respective law.
Note
Instead of undefined behaviour if pc is not in the valid range, we return a valid number, by clamping the input.

◆ krw()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::krw ( Scalar  swe,
const Params< Scalar > &  params 
)
inlinestatic
Parameters
sweThe mobile saturation of the wetting phase.
paramsA container object that is populated with the appropriate coefficients for the respective law.
Note
Instead of undefined behaviour if pc is not in the valid range, we return a valid number, by clamping the input.

◆ makeParams()

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

◆ pc()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::pc ( Scalar  swe,
const Params< Scalar > &  params 
)
inlinestatic

Van Genuchten's empirical capillary pressure <-> saturation function is given by \(\mathrm{ p_c = (\overline{S}_w^{-1/m} - 1)^{1/n}/\alpha }\)

Parameters
sweEffective saturation of the wetting phase \(\mathrm{\overline{S}_w}\)
paramsA container object that is populated with the appropriate coefficients for the respective law.
Note
Instead of undefined behaviour if swe is not in the valid range, we return a valid number, by clamping the input. Note that pc(swe = 0.0) = inf, have a look at RegularizedVanGenuchten if this is a problem.

◆ swe()

template<class Scalar >
static Scalar Dumux::FluidMatrix::VanGenuchten::swe ( Scalar  pc,
const Params< Scalar > &  params 
)
inlinestatic

This is the inverse of the capillary pressure-saturation curve: \(\mathrm{ \overline{S}_w = {p_c}^{-1} = ((\alpha p_c)^n + 1)^{-m} }\)

Parameters
pcCapillary pressure \(\mathrm{p_c}\) in \(\mathrm{[Pa]}\)
paramsA container object that is populated with the appropriate coefficients for the respective law.
Returns
The effective saturation of the wetting phase \(\mathrm{\overline{S}_w}\)
Note
Instead of undefined behaviour if pc is not in the valid range, we return a valid number, i.e. sw(pc < 0.0) = 0.0, by clamping the input to the physical bounds.

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