13#include "libmesh/utility.h"
110 using std::pow, std::sqrt;
112 const T a = 1.0 -
pow(seff, 1.0 / m);
113 const T b = 1.0 -
pow(
a, m);
115 return sqrt(seff) * Utility::pow<2>(
b);
149 using std::pow, std::sqrt;
151 const T a =
pow(1.0 - seff, 1.0 / m);
152 const T b =
pow(1.0 -
a, 2.0 * m);
154 return sqrt(seff) *
b;
198 Pc(
std::numeric_limits<Real>::max()),
199 dPc(
std::numeric_limits<Real>::lowest())
233 dPc(
std::numeric_limits<Real>::lowest())
243void dataStore(std::ostream & stream, LowCapillaryPressureExtension & extension,
void * context);
244void dataLoad(std::istream & stream, LowCapillaryPressureExtension & extension,
void * context);
245void dataStore(std::ostream & stream, HighCapillaryPressureExtension & extension,
void * context);
246void dataLoad(std::istream & stream, HighCapillaryPressureExtension & extension,
void * context);
270 const LowCapillaryPressureExtension & low_ext = LowCapillaryPressureExtension(),
271 const HighCapillaryPressureExtension & high_ext = HighCapillaryPressureExtension());
294 const LowCapillaryPressureExtension & low_ext = LowCapillaryPressureExtension(),
295 const HighCapillaryPressureExtension & high_ext = HighCapillaryPressureExtension());
317 const LowCapillaryPressureExtension & low_ext = LowCapillaryPressureExtension(),
318 const HighCapillaryPressureExtension & high_ext = HighCapillaryPressureExtension());
340 const LowCapillaryPressureExtension & low_ext = LowCapillaryPressureExtension(),
341 const HighCapillaryPressureExtension & high_ext = HighCapillaryPressureExtension());
362 const LowCapillaryPressureExtension & low_ext = LowCapillaryPressureExtension(),
363 const HighCapillaryPressureExtension & high_ext = HighCapillaryPressureExtension());
384 const LowCapillaryPressureExtension & low_ext = LowCapillaryPressureExtension(),
385 const HighCapillaryPressureExtension & high_ext = HighCapillaryPressureExtension());
415 Real upper_liquid_param,
449 Real upper_liquid_param,
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
van Genuchten effective saturation, capillary pressure and relative permeability functions.
Real d2saturationHys(Real pc, Real slmin, Real sgrdel, Real alpha, Real n, const LowCapillaryPressureExtension &low_ext=LowCapillaryPressureExtension(), const HighCapillaryPressureExtension &high_ext=HighCapillaryPressureExtension())
Second derivative of Hysteretic saturation function with respect to pc.
void dataLoad(std::istream &stream, LowCapillaryPressureExtension &extension, void *context)
T relativePermeabilityNW(const T &seff, Real m)
Relative permeability for a non-wetting phase as a function of effective saturation.
Real d2capillaryPressureHys(Real sl, Real slmin, Real sgrdel, Real alpha, Real n, const LowCapillaryPressureExtension &low_ext=LowCapillaryPressureExtension(), const HighCapillaryPressureExtension &high_ext=HighCapillaryPressureExtension())
Second derivative of capillaryPressureHys with respect to sl.
Real drelativePermeabilityNWHys(Real sl, Real slr, Real sgrdel, Real sgrmax, Real sldel, Real m, Real gamma, Real k_rg_max, Real y0p)
Derivative of hysteretic relative permeability for gas with respect to the liquid saturation.
Real dRelativePermeability(Real seff, Real m)
Derivative of relative permeability with respect to effective saturation.
void dataStore(std::ostream &stream, LowCapillaryPressureExtension &extension, void *context)
T relativePermeability(const T &seff, Real m)
Relative permeability as a function of effective saturation.
Real saturationHys(Real pc, Real slmin, Real sgrdel, Real alpha, Real n, const LowCapillaryPressureExtension &low_ext=LowCapillaryPressureExtension(), const HighCapillaryPressureExtension &high_ext=HighCapillaryPressureExtension())
Hysteretic saturation function (Eqn(1) of Doughty2007) with extensions (page5 and Fig1 of Doughty2008...
Real relativePermeabilityNWHys(Real sl, Real slr, Real sgrdel, Real sgrmax, Real sldel, Real m, Real gamma, Real k_rg_max, Real y0p)
Hysteretic relative permeability for gas.
Real d2EffectiveSaturation(Real p, Real alpha, Real m)
Second derivative of effective saturation wrt porepressure.
Real dEffectiveSaturation(Real p, Real alpha, Real m)
Derivative of effective saturation wrt porepressure.
Real dCapillaryPressure(Real seff, Real alpha, Real m, Real pc_max)
Derivative of capillary pressure wrt effective saturation.
Real capillaryPressureHys(Real sl, Real slmin, Real sgrdel, Real alpha, Real n, const LowCapillaryPressureExtension &low_ext=LowCapillaryPressureExtension(), const HighCapillaryPressureExtension &high_ext=HighCapillaryPressureExtension())
Hysteretic capillary pressure function (Eqn(1) of Doughty2007) with extensions (page5 and Fig1 of Dou...
Real drelativePermeabilityHys(Real sl, Real slr, Real sgrdel, Real sgrmax, Real sldel, Real m, Real upper_liquid_param, Real y0, Real y0p, Real y1, Real y1p)
Derivative of Hysteretic relative permeability for liquid, with respect to liquid saturation.
Real capillaryPressure(Real seff, Real alpha, Real m, Real pc_max)
Capillary pressure as a function of effective saturation.
Real dcapillaryPressureHys(Real sl, Real slmin, Real sgrdel, Real alpha, Real n, const LowCapillaryPressureExtension &low_ext=LowCapillaryPressureExtension(), const HighCapillaryPressureExtension &high_ext=HighCapillaryPressureExtension())
Derivative of capillaryPressureHys with respect to sl.
Real d2CapillaryPressure(Real seff, Real alpha, Real m, Real pc_max)
Second derivative of capillary pressure wrt effective saturation.
Real effectiveSaturation(Real p, Real alpha, Real m)
Effective saturation as a function of porepressure.
Real relativePermeabilityHys(Real sl, Real slr, Real sgrdel, Real sgrmax, Real sldel, Real m, Real upper_liquid_param, Real y0, Real y0p, Real y1, Real y1p)
Hysteretic relative permeability for liquid.
Real d2RelativePermeabilityNW(Real seff, Real m)
Second derivative of relative permeability for a non-wetting phase with respect to effective saturati...
Real dsaturationHys(Real pc, Real slmin, Real sgrdel, Real alpha, Real n, const LowCapillaryPressureExtension &low_ext=LowCapillaryPressureExtension(), const HighCapillaryPressureExtension &high_ext=HighCapillaryPressureExtension())
Derivative of Hysteretic saturation function with respect to pc.
Real d2RelativePermeability(Real seff, Real m)
Second derivative of relative permeability with respect to effective saturation.
Real dRelativePermeabilityNW(Real seff, Real m)
Derivative of relative permeability for a non-wetting phase with respect to effective saturation.
Parameters associated with the extension of the hysteretic wetting capillary pressure function to hig...
HighCapillaryPressureExtension(const ExtensionStrategy &strategy, Real S, Real Pc, Real dPc)
HighCapillaryPressureExtension()
ExtensionStrategy strategy
Parameters associated with the extension of the hysteretic capillary pressure function to low saturat...
LowCapillaryPressureExtension()
ExtensionStrategy strategy
LowCapillaryPressureExtension(const ExtensionStrategy &strategy, Real S, Real Pc, Real dPc)