www.mooseframework.org
PorousFlow1PhaseP_BW.C
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 
8 #include "PorousFlow1PhaseP_BW.h"
9 #include "libmesh/utility.h"
10 
11 template <>
12 InputParameters
14 {
15  InputParameters params = validParams<PorousFlow1PhaseP>();
16  params.addRequiredRangeCheckedParam<Real>(
17  "Sn",
18  "Sn >= 0",
19  "Low saturation. This must be < Ss, and non-negative. This is BW's "
20  "initial effective saturation, below which effective saturation never goes "
21  "in their simulations/models. If Kn=0 then Sn is the immobile saturation. "
22  "This form of effective saturation is only correct for Kn small.");
23  params.addRangeCheckedParam<Real>(
24  "Ss",
25  1.0,
26  "Ss <= 1",
27  "High saturation. This must be > Sn and <= 1. Effective saturation "
28  "where porepressure = 0. Effective saturation never exceeds this "
29  "value in BW's simulations/models.");
30  params.addRequiredRangeCheckedParam<Real>(
31  "C", "C > 1", "BW's C parameter. Must be > 1. Typical value would be 1.05.");
32  params.addRequiredRangeCheckedParam<Real>(
33  "las",
34  "las > 0",
35  "BW's lambda_s parameter multiplied by (fluid_density * gravity). Must be "
36  "> 0. Typical value would be 1E5");
37  params.addClassDescription("Broadbridge-white form of effective saturation for negligable Kn. "
38  "Then porepressure = -las * ((1 - th) / th - (1 / c) * Ln((C - "
39  "th)/((C - 1) * th))), for th = (Seff - Sn) / (Ss - Sn). A Lambert-W "
40  "function must be evaluated to express Seff in terms of porepressure, "
41  "which can be expensive");
42  return params;
43 }
44 
45 PorousFlow1PhaseP_BW::PorousFlow1PhaseP_BW(const InputParameters & parameters)
46  : PorousFlow1PhaseP(parameters),
47  _sn(getParam<Real>("Sn")),
48  _ss(getParam<Real>("Ss")),
49  _c(getParam<Real>("C")),
50  _las(getParam<Real>("las"))
51 {
52  mooseDeprecated("PorousFlow1PhaseP_BW is deprecated. Please use PorousFlow1PhaseP and a "
53  "PorousFlowCapillaryPressureBW UserObject instead");
54 
55  if (_ss <= _sn)
56  mooseError("In BW effective saturation Sn set to ",
57  _sn,
58  " and Ss set to ",
59  _ss,
60  " but these must obey Ss > Sn");
61 }
62 
63 Real
65 {
67 }
68 
69 Real
71 {
73 }
74 
75 Real
77 {
79 }
const Real _las
BWs lambda_s parameter multiplied yb fluiddensity * gravity (>0)
Real dEffectiveSaturation_dP(Real pressure) const override
Derivative of effective saturation wrt to porepressure.
InputParameters validParams< PorousFlow1PhaseP_BW >()
Real dEffectiveSaturation(Real pc, Real c, Real sn, Real ss, Real las)
Derivative of effective saturation wrt capillary pressure.
const Real _ss
BW&#39;s Ss parameter.
InputParameters validParams< PorousFlow1PhaseP >()
const Real _c
BW&#39;s C parameter (>1)
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...
Real effectiveSaturation(Real pressure) const override
Effective saturation as a function of porepressure.
Real d2EffectiveSaturation_dP2(Real pressure) const override
Second derivative of effective saturation wrt to porepressure.
Base material designed to calculate fluid phase porepressure and saturation for the single-phase situ...
const Real _sn
BW&#39;s Sn parameter (initial saturation)
const std::string pressure
Definition: NS.h:24
PorousFlow1PhaseP_BW(const InputParameters &parameters)