www.mooseframework.org
Functions
PorousFlowBrooksCorey Namespace Reference

Brooks-Corey effective saturation, capillary pressure and relative permeability functions. More...

Functions

Real effectiveSaturation (Real pc, Real pe, Real lambda)
 Effective saturation as a function of capillary pressure Note: seff = 1 for p >= 0. More...
 
Real dEffectiveSaturation (Real pc, Real pe, Real lambda)
 Derivative of effective saturation wrt porepressure. More...
 
Real d2EffectiveSaturation (Real pc, Real pe, Real lambda)
 Second derivative of effective saturation wrt porepressure. More...
 
Real capillaryPressure (Real seff, Real pe, Real lambda, Real pc_max)
 Capillary pressure as a function of effective saturation. More...
 
Real dCapillaryPressure (Real seff, Real pe, Real lambda, Real pc_max)
 Derivative of capillary pressure wrt effective saturation. More...
 
Real d2CapillaryPressure (Real seff, Real pe, Real lambda, Real pc_max)
 Second derivative of capillary pressure wrt effective saturation. More...
 
Real relativePermeabilityW (Real seff, Real lambda)
 Relative permeability of the wetting phase as a function of effective saturation. More...
 
Real dRelativePermeabilityW (Real seff, Real lambda)
 Derivative of relative permeability of the wetting phase wrt to effective saturation. More...
 
Real relativePermeabilityNW (Real seff, Real lambda)
 Relative permeability of the non-wetting phase as a function of effective saturation. More...
 
Real dRelativePermeabilityNW (Real seff, Real lambda)
 Derivative of relative permeability of the non-wetting phase wrt to effective saturation. More...
 

Detailed Description

Brooks-Corey effective saturation, capillary pressure and relative permeability functions.

Note: capillary pressure and relative permeability are functions of effective saturation. The derivatives are therefore given wrt effective saturation. These derivatives must be multiplied by the derivative of effective saturation wrt the true saturation in objects using these relations.

From Brooks, R. H. and A. T. Corey (1966), Properties of porous media affecting fluid flow, J. Irrig. Drain. Div., 92, 61-88

Function Documentation

Real PorousFlowBrooksCorey::capillaryPressure ( Real  seff,
Real  pe,
Real  lambda,
Real  pc_max 
)

Capillary pressure as a function of effective saturation.

Parameters
seffeffective saturation
pethreshold entry pressure
lambdaBrooks-Corey exponent
pc_maxmaximum capillary pressure (Pa)
Returns
capillary pressure (Pa)

Definition at line 41 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowCapillaryPressureBC::capillaryPressureCurve(), d2CapillaryPressure(), and dCapillaryPressure().

42 {
43  if (seff >= 1.0)
44  return 0.0;
45  else if (seff <= 0.0)
46  return pc_max;
47  else
48  return std::min(pe * std::pow(seff, -1.0 / lambda), pc_max);
49 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::d2CapillaryPressure ( Real  seff,
Real  pe,
Real  lambda,
Real  pc_max 
)

Second derivative of capillary pressure wrt effective saturation.

Parameters
seffeffective saturation
pethreshold entry pressure
lambdaBrooks-Corey exponent
pc_maxmaximum capillary pressure (Pa)
Returns
second derivative of capillary pressure wrt effective saturation

Definition at line 67 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowCapillaryPressureBC::d2CapillaryPressureCurve().

68 {
69  if (seff <= 0.0 || seff >= 1.0)
70  return 0.0;
71  else
72  {
73  // Return 0 if pc > pc_max
74  if (capillaryPressure(seff, pe, lambda, pc_max) >= pc_max)
75  return 0.0;
76  else
77  return (lambda + 1.0) * pe * std::pow(seff, -1.0 / lambda - 2.0) / lambda / lambda;
78  }
79 }
Real capillaryPressure(Real seff, Real pe, Real lambda, Real pc_max)
Capillary pressure as a function of effective saturation.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::d2EffectiveSaturation ( Real  pc,
Real  pe,
Real  lambda 
)

Second derivative of effective saturation wrt porepressure.

Parameters
pccapillary pressure
pethreshold entry pressure
lambdaBrooks-Corey exponent
Returns
second derivative of effective saturation wrt porepressure

Definition at line 32 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowCapillaryPressureBC::d2EffectiveSaturation().

33 {
34  if (pc < pe)
35  return 0.0;
36  else
37  return lambda * (lambda + 1.0) * std::pow(pc / pe, -lambda - 2.0) / pe / pe;
38 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::dCapillaryPressure ( Real  seff,
Real  pe,
Real  lambda,
Real  pc_max 
)

Derivative of capillary pressure wrt effective saturation.

Parameters
seffeffective saturation
pethreshold entry pressure
lambdaBrooks-Corey exponent
pc_maxmaximum capillary pressure (Pa)
Returns
derivative of capillary pressure wrt effective saturation

Definition at line 52 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowCapillaryPressureBC::dCapillaryPressureCurve().

53 {
54  if (seff <= 0.0 || seff >= 1.0)
55  return 0.0;
56  else
57  {
58  // Return 0 if pc > pc_max
59  if (capillaryPressure(seff, pe, lambda, pc_max) >= pc_max)
60  return 0.0;
61  else
62  return -pe * std::pow(seff, -1.0 / lambda - 1.0) / lambda;
63  }
64 }
Real capillaryPressure(Real seff, Real pe, Real lambda, Real pc_max)
Capillary pressure as a function of effective saturation.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::dEffectiveSaturation ( Real  pc,
Real  pe,
Real  lambda 
)

Derivative of effective saturation wrt porepressure.

Parameters
pccapillary pressure
pethreshold entry pressure
lambdaBrooks-Corey exponent
Returns
derivative of effective saturation wrt porepressure

Definition at line 23 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowCapillaryPressureBC::dEffectiveSaturation().

24 {
25  if (pc < pe)
26  return 0.0;
27  else
28  return -lambda * std::pow(pc / pe, -lambda - 1.0) / pe;
29 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::dRelativePermeabilityNW ( Real  seff,
Real  lambda 
)

Derivative of relative permeability of the non-wetting phase wrt to effective saturation.

Parameters
seffeffective saturation
lambdaBrooks-Corey exponent
Returns
derivative of relative permeability wrt effective saturation

Definition at line 114 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowRelativePermeabilityBC::dRelativePermeability().

115 {
116  // Guard against division by zero
117  if (seff <= 0.0 || seff >= 1.0)
118  return 0.0;
119 
120  return seff * (2.0 +
121  (seff * (2.0 + 3.0 * lambda) - 2.0 * lambda) * std::pow(1.0 - seff, 2.0 / lambda) /
122  lambda);
123 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::dRelativePermeabilityW ( Real  seff,
Real  lambda 
)

Derivative of relative permeability of the wetting phase wrt to effective saturation.

Parameters
seffeffective saturation
lambdaBrooks-Corey exponent
Returns
derivative of relative permeability wrt effective saturation

Definition at line 93 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowRelativePermeabilityBC::dRelativePermeability().

94 {
95  // Guard against division by zero
96  if (seff <= 0.0 || seff >= 1.0)
97  return 0.0;
98 
99  return (2.0 + 3.0 * lambda) * std::pow(seff, (2.0 + 2.0 * lambda) / lambda) / lambda;
100 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::effectiveSaturation ( Real  pc,
Real  pe,
Real  lambda 
)

Effective saturation as a function of capillary pressure Note: seff = 1 for p >= 0.

Parameters
pccapillary pressure
pethreshold entry pressure
lambdaBrooks-Corey exponent
Returns
effective saturation

Definition at line 14 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowCapillaryPressureBC::effectiveSaturation().

15 {
16  if (pc < pe)
17  return 1.0;
18  else
19  return std::pow(pc / pe, -lambda);
20 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::relativePermeabilityNW ( Real  seff,
Real  lambda 
)

Relative permeability of the non-wetting phase as a function of effective saturation.

Parameters
seffeffective saturation
lambdaBrooks-Corey exponent
Returns
relative permeability

Definition at line 103 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowRelativePermeabilityBC::relativePermeability().

104 {
105  if (seff <= 0.0)
106  return 0.0;
107  else if (seff >= 1.0)
108  return 1.0;
109 
110  return seff * seff * (1.0 - std::pow(1.0 - seff, (2.0 + lambda) / lambda));
111 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real PorousFlowBrooksCorey::relativePermeabilityW ( Real  seff,
Real  lambda 
)

Relative permeability of the wetting phase as a function of effective saturation.

Parameters
seffeffective saturation
lambdaBrooks-Corey exponent
Returns
relative permeability

Definition at line 82 of file PorousFlowBrooksCorey.C.

Referenced by PorousFlowRelativePermeabilityBC::relativePermeability().

83 {
84  if (seff <= 0.0)
85  return 0.0;
86  else if (seff >= 1.0)
87  return 1.0;
88 
89  return std::pow(seff, (2.0 + 3.0 * lambda) / lambda);
90 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)