Go to the documentation of this file.
11 #include "libmesh/utility.h"
20 params.addRequiredRangeCheckedParam<Real>(
21 "m",
"m > 0 & m < 1",
"The van Genuchten exponent of the phase");
22 params.addRangeCheckedParam<Real>(
"seff_turnover",
24 "seff_turnover > 0 & seff_turnover <= 1",
25 "The relative permeability will be a cubic for seff > "
26 "seff_turnover. The cubic is chosen so that its derivative "
27 "and value matche the VG function at seff=seff_turnover");
28 params.addParam<
bool>(
"zero_derivative",
30 "Employ a cubic for seff>seff_turnover that has zero derivative at seff=1");
31 params.addParam<
bool>(
"wetting",
33 "If true, use the van Genuchten form appropriate for a wetting (liquid) "
34 "phase. If false, use the non-wetting (gas) expression.");
35 params.addClassDescription(
"This Material calculates relative permeability of a phase "
36 "using the van Genuchten model");
41 const InputParameters & parameters)
43 _m(getParam<Real>(
"m")),
44 _wetting(getParam<bool>(
"wetting")),
45 _cut(getParam<Real>(
"seff_turnover")),
51 ? (getParam<bool>(
"zero_derivative")
52 ? 3.0 * (1.0 - _cub0 - _cub1 * (1.0 - _cut)) / Utility::
pow<2>(1.0 - _cut) +
58 ? (getParam<bool>(
"zero_derivative")
59 ? -2.0 * (1.0 - _cub0 - _cub1 * (1.0 - _cut)) / Utility::
pow<3>(1.0 - _cut) -
60 _cub1 / Utility::
pow<2>(1.0 - _cut)
61 : (1.0 - _cub0 - _cub1 * (1.0 - _cut) - _cub2 * Utility::
pow<2>(1.0 - _cut)) /
62 Utility::
pow<3>(1.0 - _cut))
Real relativePermeabilityNW(Real seff, Real lambda)
Relative permeability of the non-wetting phase as a function of effective saturation.
Real relativePermeability(Real seff, Real m)
Relative permeability as a function of effective saturation.
Real dRelativePermeabilityNW(Real seff, Real lambda)
Derivative of relative permeability of the non-wetting phase wrt to effective saturation.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real d2RelativePermeability(Real s, Real c, Real sn, Real ss, Real kn, Real ks)
Second derivative of relative permeability with respect to saturation.
const Real _cub2
Parameter of the cubic.
const bool _wetting
Whether to use the wetting or non-wetting van Genuchten expression.
Material to calculate van Genuchten-type relative permeability of an arbitrary phase given the satura...
Base class for PorousFlow relative permeability materials.
virtual Real dRelativePermeability(Real seff) const override
Derivative of relative permeability with respect to effective saturation.
Real relativePermeabilityNW(Real seff, Real m)
Relative permeability for a non-wetting phase as a function of effective saturation.
Real dRelativePermeability(Real s, Real c, Real sn, Real ss, Real kn, Real ks)
Derivative of relative permeability with respect to saturation.
registerMooseObject("PorousFlowApp", PorousFlowRelativePermeabilityVG)
Real d2RelativePermeabilityNW(Real seff, Real m)
Second derivative of relative permeability for a non-wetting phase with respect to effective saturati...
const Real _m
van Genuchten exponent m for the specified phase
InputParameters validParams< PorousFlowRelativePermeabilityVG >()
van Genuchten effective saturation, capillary pressure and relative permeability functions.
const Real _cub0
Parameter of the cubic.
const Real _cub1
Parameter of the cubic.
Real relativePermeability(Real s, Real c, Real sn, Real ss, Real kn, Real ks)
Relative permeability as a function of saturation.
Real dRelativePermeability(Real seff, Real m)
Derivative of relative permeability with respect to effective saturation.
const Real _cut
Start of cubic smoothing.
PorousFlowRelativePermeabilityVG(const InputParameters ¶meters)
InputParameters validParams< PorousFlowRelativePermeabilityBase >()
const Real _cub3
Parameter of the cubic.
Real dRelativePermeabilityNW(Real seff, Real m)
Derivative of relative permeability for a non-wetting phase with respect to effective saturation.
virtual Real relativePermeability(Real seff) const override
Relative permeability equation (must be overriden in derived class)