22 "Low saturation. This must be < Ss, and non-negative. This is BW's " 23 "initial effective saturation, below which effective saturation never goes " 24 "in their simulations/models. If Kn=0 then Sn is the immobile saturation. " 25 "This form of effective saturation is only correct for Kn small.");
30 "High saturation. This must be > Sn and <= 1. Effective saturation " 31 "where porepressure = 0. Effective saturation never exceeds this " 32 "value in BW's simulations/models.");
34 "C",
"C > 1",
"BW's C parameter. Must be > 1. Typical value would be 1.05.");
38 "BW's lambda_s parameter multiplied by (fluid_density * gravity). Must be " 39 "> 0. Typical value would be 1E5");
46 _sn(getParam<
Real>(
"Sn")),
47 _ss(getParam<
Real>(
"Ss")),
48 _c(getParam<
Real>(
"C")),
49 _las(getParam<
Real>(
"las"))
52 mooseError(
"In BW effective saturation Sn set to ",
56 " but these must obey Ss > Sn");
65 mooseError(
"PorousFlowCapillaryPressureBW::capillaryPressure not implemented");
72 mooseError(
"PorousFlowCapillaryPressureBW::dCapillaryPressure not implemented");
79 mooseError(
"PorousFlowCapillaryPressureBW::d2CapillaryPressure not implemented");
Real dEffectiveSaturation(Real pc, Real c, Real sn, Real ss, Real las)
Derivative of effective saturation wrt capillary pressure.
virtual Real dEffectiveSaturation(Real pc, unsigned qp=0) const override
Derivative of effective saturation wrt capillary pressure.
static InputParameters validParams()
static InputParameters validParams()
PorousFlowCapillaryPressureBW(const InputParameters ¶meters)
virtual Real capillaryPressureCurve(Real saturation, unsigned qp=0) const override
Raw capillary pressure curve (does not include logarithmic extension)
Real d2EffectiveSaturation(Real pc, Real c, Real sn, Real ss, Real las)
Second derivative of effective saturation wrt capillary pressure.
Real effectiveSaturation(Real pc, Real c, Real sn, Real ss, Real las)
Effective saturation as a function of capillary pressure If pc>=0 this will yield 1...
const Real _las
BWs lambda_s parameter multiplied by fluid density * gravity (>0)
Base class for capillary pressure for multiphase flow in porous media.
const Real _ss
BW's Ss parameter.
registerMooseObject("PorousFlowApp", PorousFlowCapillaryPressureBW)
const Real _sn
BW's Sn parameter (initial saturation)
virtual Real dCapillaryPressureCurve(Real saturation, unsigned qp=0) const override
Derivative of raw capillary pressure wrt true saturation.
const Real _c
BW's C parameter (>1)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real d2EffectiveSaturation(Real pc, unsigned qp=0) const override
Second derivative of effective saturation wrt capillary pressure.
virtual Real d2CapillaryPressureCurve(Real saturation, unsigned qp=0) const override
Second derivative of raw capillary pressure wrt true saturation.
void mooseError(Args &&... args) const
bool _log_ext
Flag to use a logarithmic extension for low saturation.
virtual Real effectiveSaturation(Real pc, unsigned qp=0) const override
Effective saturation as a function of capillary pressure.
Capillary pressure of Broadbridge and White.