25#ifndef VAN_GENUCHTEN_HH
26#define VAN_GENUCHTEN_HH
47template <
class ScalarT,
class ParamsT = VanGenuchtenParams<ScalarT> >
52 using Scalar =
typename Params::Scalar;
75 swe = min(max(swe, 0.0), 1.0);
77 const Scalar pc = pow(pow(swe, -1.0/params.vgm()) - 1, 1.0/params.vgn())/params.vgAlpha();
104 const Scalar sw = pow(pow(params.vgAlpha()*
pc, params.vgn()) + 1, -params.vgm());
143 swe = min(max(swe, 0.0), 1.0);
145 const Scalar powSwe = pow(swe, -1/params.vgm());
146 return - 1.0/params.vgAlpha() * pow(powSwe - 1, 1.0/params.vgn() - 1)/params.vgn()
147 * powSwe/swe/params.vgm();
169 const Scalar powAlphaPc = pow(params.vgAlpha()*
pc, params.vgn());
170 return -pow(powAlphaPc + 1, -params.vgm()-1)*params.vgm()*powAlphaPc/
pc*params.vgn();
193 swe = min(max(swe, 0.0), 1.0);
195 const Scalar r = 1.0 - pow(1.0 - pow(swe, 1.0/params.vgm()), params.vgm());
196 return sqrt(swe)*r*r;
219 swe = min(max(swe, 0.0), 1.0);
221 const Scalar x = 1.0 - pow(swe, 1.0/params.vgm());
222 const Scalar xToM = pow(x, params.vgm());
223 return (1.0 - xToM)/sqrt(swe) * ( (1.0 - xToM)/2 + 2*xToM*(1.0-x)/x );
245 swe = min(max(swe, 0.0), 1.0);
247 return pow(1 - swe, 1.0/3) * pow(1 - pow(swe, 1.0/params.vgm()), 2*params.vgm());
270 swe = min(max(swe, 0.0), 1.0);
272 const Scalar x = pow(swe, 1.0/params.vgm());
273 return -pow(1.0 - x, 2*params.vgm()) * pow(1.0 - swe, -2.0/3) * (1.0/3 + 2*x/swe);
Specification of the material parameters for the van Genuchten constitutive relations.
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
Implementation of the van Genuchten capillary pressure <-> saturation relation. This class bundles th...
Definition: vangenuchten.hh:49
static Scalar dkrw_dswe(const Params ¶ms, Scalar swe)
The derivative of the relative permeability for the wetting phase in regard to the wetting saturation...
Definition: vangenuchten.hh:212
static Scalar sw(const Params ¶ms, Scalar pc)
The saturation-capillary pressure curve according to van Genuchten.
Definition: vangenuchten.hh:97
typename Params::Scalar Scalar
Definition: vangenuchten.hh:52
static Scalar dpc_dswe(const Params ¶ms, Scalar swe)
The partial derivative of the capillary pressure w.r.t. the effective saturation according to van Gen...
Definition: vangenuchten.hh:137
static Scalar krw(const Params ¶ms, Scalar swe)
The relative permeability for the wetting phase of the medium implied by van Genuchten's parameteriza...
Definition: vangenuchten.hh:186
static Scalar dswe_dpc(const Params ¶ms, Scalar pc)
The partial derivative of the effective saturation to the capillary pressure according to van Genucht...
Definition: vangenuchten.hh:162
static Scalar endPointPc(const Params ¶ms)
The capillary pressure at Swe = 1.0 also called end point capillary pressure.
Definition: vangenuchten.hh:115
static Scalar krn(const Params ¶ms, Scalar swe)
The relative permeability for the non-wetting phase of the medium implied by van Genuchten's paramete...
Definition: vangenuchten.hh:239
ParamsT Params
Definition: vangenuchten.hh:51
static Scalar pc(const Params ¶ms, Scalar swe)
The capillary pressure-saturation curve according to van Genuchten.
Definition: vangenuchten.hh:69
static Scalar dkrn_dswe(const Params ¶ms, Scalar swe)
The derivative of the relative permeability for the non-wetting phase in regard to the wetting satura...
Definition: vangenuchten.hh:264