15 #include "libmesh/utility.h" 26 "Low saturation. This must be < Ss, and non-negative. This is BW's " 27 "initial effective saturation, below which effective saturation never goes " 28 "in their simulations/models. If Kn=0 then Sn is the immobile saturation.");
33 "High saturation. This must be > Sn and <= 1. Effective saturation " 34 "where porepressure = 0. Effective saturation never exceeds this " 35 "value in BW's simulations/models.");
37 "Kn", 0.0,
"Kn >= 0",
"Relative permeability at Seff = Sn. Must be < Ks");
39 "Ks", 1.0,
"Ks <= 1",
"Relative permeability at Seff = Ss. Must be > Kn");
43 "BW's C parameter. Must be > 1. Define s = (seff - Sn)/(Ss - Sn). Then " 44 "relperm = Kn + s^2(c-1)(Kn-Ks)/(c-s) if 0<s<1, otherwise relperm = Kn if " 45 "s<=0, otherwise relperm = Ks if s>=1.");
46 params.
addClassDescription(
"Broadbridge-White form of relative permeability. Define s = (seff - " 47 "Sn)/(Ss - Sn). Then relperm = Kn + s^2(c-1)(Kn-Ks)/(c-s) if 0<s<1, " 48 "otherwise relperm = Kn if s<=0, otherwise relperm = Ks if s>=1.");
54 _sn(getParam<
Real>(
"Sn")),
55 _ss(getParam<
Real>(
"Ss")),
56 _kn(getParam<
Real>(
"Kn")),
57 _ks(getParam<
Real>(
"Ks")),
58 _c(getParam<
Real>(
"C"))
61 mooseError(
"In BW relative permeability Sn set to ",
65 " but these must obey Ss > Sn");
67 mooseError(
"In BW relative permeability Kn set to ",
71 " but these must obey Ks > Kn");
85 const Real krel =
_kn +
_coef * Utility::pow<2>(s_internal) / (
_c - s_internal);
99 const Real krelp =
_coef * (2.0 * s_internal / (
_c - s_internal) +
100 Utility::pow<2>(s_internal) / Utility::pow<2>(
_c - s_internal));
101 return krelp / (
_ss -
_sn);
115 _coef * (2.0 / (
_c - s_internal) + 4.0 * s_internal / Utility::pow<2>(
_c - s_internal) +
116 2.0 * Utility::pow<2>(s_internal) / Utility::pow<3>(
_c - s_internal));
117 return krelpp / Utility::pow<2>(
_ss -
_sn);
static InputParameters validParams()
Base class for Richards relative permeability classes that provide relative permeability as a functio...
RichardsRelPermBW(const InputParameters ¶meters)
Real d2relperm(Real seff) const
second derivative of relative permeability wrt effective saturation
Real drelperm(Real seff) const
derivative of relative permeability wrt effective saturation
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mooseError(Args &&... args) const
registerMooseObject("RichardsApp", RichardsRelPermBW)
static InputParameters validParams()
"Broadbridge-White" form of relative permeability as a function of effective saturation P Broadbridge...
Real relperm(Real seff) const
relative permeability as a function of effective saturation