11 #include "libmesh/utility.h" 21 "simm >= 0 & simm < 1",
22 "Immobile saturation. Must be between 0 and 1. Define s = " 23 "(seff - simm)/(1 - simm). Then relperm = s^(1/2) * (1 - (1 " 28 "van-Genuchten m parameter. Must be between 0 and 1, and optimally " 29 "should be set >0.5. Define s = (seff - simm)/(1 - simm). Then " 30 "relperm = s^(1/2) * (1 - (1 - s^(1/m))^m)^2");
31 params.
addClassDescription(
"VG form of relative permeability. Define s = (seff - simm)/(1 - " 32 "simm). Then relperm = s^(1/2) * (1 - (1 - s^(1/m))^m)^2, if s>0, " 33 "and relperm=0 otherwise");
52 Real krel = std::sqrt(s_internal) *
80 0.5 *
std::pow(s_internal, -0.5) * tmp2 * tmp2 + 2.0 * std::sqrt(s_internal) * tmp2 * tmp2p;
81 return krelp / (1.0 -
_simm);
104 Real krelpp = -0.25 *
std::pow(s_internal, -1.5) * tmp2 * tmp2 +
105 2.0 * 0.5 *
std::pow(s_internal, -0.5) * 2.0 * tmp2 * tmp2p +
106 2.0 * std::sqrt(s_internal) * (tmp2p * tmp2p + tmp2 * tmp2pp);
108 return krelpp / Utility::pow<2>(1.0 -
_simm);
RichardsRelPermVG(const InputParameters ¶meters)
static InputParameters validParams()
Base class for Richards relative permeability classes that provide relative permeability as a functio...
Van-Genuchten form of relative permeability as a function of effective saturation.
Real drelperm(Real seff) const
derivative of relative permeability wrt effective saturation
static InputParameters validParams()
Real _simm
immobile saturation
Real d2relperm(Real seff) const
second derivative of relative permeability wrt effective saturation
registerMooseObject("RichardsApp", RichardsRelPermVG)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real _m
van Genuchten m parameter
Real relperm(Real seff) const
relative permeability as a function of effective saturation
MooseUnits pow(const MooseUnits &, int)