www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PorousFlowCapillaryPressureVG Class Reference

van Genuchten form of capillary pressure. More...

#include <PorousFlowCapillaryPressureVG.h>

Inheritance diagram for PorousFlowCapillaryPressureVG:
[legend]

Public Member Functions

 PorousFlowCapillaryPressureVG (const InputParameters &parameters)
 
virtual Real capillaryPressureCurve (Real saturation, unsigned qp=0) const override
 Raw capillary pressure curve (does not include logarithmic extension) More...
 
virtual Real dCapillaryPressureCurve (Real saturation, unsigned qp=0) const override
 Derivative of raw capillary pressure wrt true saturation. More...
 
virtual Real d2CapillaryPressureCurve (Real saturation, unsigned qp=0) const override
 Second derivative of raw capillary pressure wrt true saturation. More...
 
virtual Real effectiveSaturation (Real pc, unsigned qp=0) const override
 Effective saturation as a function of capillary pressure. More...
 
virtual Real dEffectiveSaturation (Real pc, unsigned qp=0) const override
 Derivative of effective saturation wrt capillary pressure. More...
 
virtual Real d2EffectiveSaturation (Real pc, unsigned qp=0) const override
 Second derivative of effective saturation wrt capillary pressure. More...
 
virtual void initialize () final
 
virtual void initialSetup () override
 
virtual Real capillaryPressure (Real saturation, unsigned qp=0) const
 Capillary pressure is calculated as a function of true saturation. More...
 
virtual Real dCapillaryPressure (Real saturation, unsigned qp=0) const
 Derivative of capillary pressure wrt true saturation. More...
 
virtual Real d2CapillaryPressure (Real saturation, unsigned qp=0) const
 Second derivative of capillary pressure wrt true saturation. More...
 

Protected Member Functions

Real effectiveSaturationFromSaturation (Real saturation) const
 Effective saturation of liquid phase given liquid saturation and residual liquid saturation. More...
 
Real extensionSaturation () const
 Calculates the saturation where the logarithmic extension to capillary pressure meets the raw curve using Newton's method. More...
 
Real interceptFunction (Real s) const
 Calculates the saturation where the logarithmic extension to capillary pressure at low saturation. More...
 
Real interceptFunctionDeriv (Real s) const
 Calculates the saturation where the logarithmic extension to capillary pressure at low saturation. More...
 
Real capillaryPressureLogExt (Real s) const
 The capillary pressure in the logarithmic extension This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities. More...
 
Real dCapillaryPressureLogExt (Real s) const
 The derivative of capillary pressure in the logarithmic extension This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities. More...
 
Real d2CapillaryPressureLogExt (Real s) const
 The second derivative of capillary pressure in the logarithmic extension This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities. More...
 

Protected Attributes

const Real _m
 van Genuchten exponent m More...
 
const Real _alpha
 van Genuchten capillary coefficient alpha More...
 
const Real _s_scale
 Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate. More...
 
const Real _pc_sscale
 pc_sscale = f(s_scale), where f is the van Genuchten function More...
 
const Real _sat_lr
 Liquid residual saturation. More...
 
const Real _dseff_ds
 Derivative of effective saturation with respect to saturation. More...
 
bool _log_ext
 Flag to use a logarithmic extension for low saturation. More...
 
const Real _pc_max
 Maximum capillary pressure (Pa). Note: must be <= 0. More...
 
Real _sat_ext
 Saturation where the logarithmic extension meets the raw curve This is computed only for qp=0. More...
 
Real _pc_ext
 Capillary pressure where the extension meets the raw curve. More...
 
Real _slope_ext
 Gradient of the logarithmic extension This is computed only for qp=0. More...
 
const Real _log10
 log(10) More...
 

Detailed Description

van Genuchten form of capillary pressure.

From van Genuchten, M. Th., A closed for equation for predicting the hydraulic conductivity of unsaturated soils, Soil Sci. Soc., 44, 892-898 (1980)

Definition at line 26 of file PorousFlowCapillaryPressureVG.h.

Constructor & Destructor Documentation

◆ PorousFlowCapillaryPressureVG()

PorousFlowCapillaryPressureVG::PorousFlowCapillaryPressureVG ( const InputParameters &  parameters)

Definition at line 39 of file PorousFlowCapillaryPressureVG.C.

40  : PorousFlowCapillaryPressure(parameters),
41  _m(getParam<Real>("m")),
42  _alpha(getParam<Real>("alpha")),
43  _s_scale(getParam<Real>("s_scale")),
45 {
46 }
const Real _m
van Genuchten exponent m
const Real _pc_max
Maximum capillary pressure (Pa). Note: must be <= 0.
const Real _alpha
van Genuchten capillary coefficient alpha
PorousFlowCapillaryPressure(const InputParameters &parameters)
const Real _s_scale
Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate.
const Real _pc_sscale
pc_sscale = f(s_scale), where f is the van Genuchten function
Real capillaryPressure(Real seff, Real alpha, Real m, Real pc_max)
Capillary pressure as a function of effective saturation.

Member Function Documentation

◆ capillaryPressure()

Real PorousFlowCapillaryPressure::capillaryPressure ( Real  saturation,
unsigned  qp = 0 
) const
virtualinherited

Capillary pressure is calculated as a function of true saturation.

Note that this method includes the ability to use a logarithmic extension at low saturation.

Parameters
saturationtrue saturation
qpquadpoint to use (when capillary-pressure depends on coupled variables, not just saturation)
Returns
capillary pressure (Pa)

Definition at line 64 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlow2PhasePS::buildQpPPSS(), PorousFlowCapillaryPressure::initialSetup(), PorousFlowWaterNCG::thermophysicalProperties(), PorousFlowBrineCO2::thermophysicalProperties(), PorousFlowWaterNCG::totalMassFraction(), and PorousFlowBrineCO2::totalMassFraction().

65 {
66  if (_log_ext && saturation < _sat_ext)
67  return capillaryPressureLogExt(saturation);
68  else
69  return capillaryPressureCurve(saturation, qp);
70 }
virtual Real capillaryPressureCurve(Real saturation, unsigned qp=0) const =0
Raw capillary pressure curve (does not include logarithmic extension)
Real capillaryPressureLogExt(Real s) const
The capillary pressure in the logarithmic extension This implementation assumes capillary-pressure is...
Real _sat_ext
Saturation where the logarithmic extension meets the raw curve This is computed only for qp=0...
bool _log_ext
Flag to use a logarithmic extension for low saturation.

◆ capillaryPressureCurve()

Real PorousFlowCapillaryPressureVG::capillaryPressureCurve ( Real  saturation,
unsigned  qp = 0 
) const
overridevirtual

Raw capillary pressure curve (does not include logarithmic extension)

Parameters
saturationtrue saturation
Returns
capillary pressure (Pa)

Implements PorousFlowCapillaryPressure.

Definition at line 49 of file PorousFlowCapillaryPressureVG.C.

50 {
51  const Real seff = effectiveSaturationFromSaturation(saturation) * _s_scale;
53 }
const Real _m
van Genuchten exponent m
Real effectiveSaturationFromSaturation(Real saturation) const
Effective saturation of liquid phase given liquid saturation and residual liquid saturation.
const Real _pc_max
Maximum capillary pressure (Pa). Note: must be <= 0.
const Real _alpha
van Genuchten capillary coefficient alpha
const Real _s_scale
Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate.
const Real _pc_sscale
pc_sscale = f(s_scale), where f is the van Genuchten function
Real capillaryPressure(Real seff, Real alpha, Real m, Real pc_max)
Capillary pressure as a function of effective saturation.

◆ capillaryPressureLogExt()

Real PorousFlowCapillaryPressure::capillaryPressureLogExt ( Real  s) const
protectedinherited

The capillary pressure in the logarithmic extension This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities.

Parameters
sliquid saturation
Returns
capillary pressure in logarithmic extension

Definition at line 97 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlowCapillaryPressure::capillaryPressure().

98 {
99  return _pc_ext * std::pow(10.0, _slope_ext * (saturation - _sat_ext));
100 }
Real _slope_ext
Gradient of the logarithmic extension This is computed only for qp=0.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real _pc_ext
Capillary pressure where the extension meets the raw curve.
Real _sat_ext
Saturation where the logarithmic extension meets the raw curve This is computed only for qp=0...

◆ d2CapillaryPressure()

Real PorousFlowCapillaryPressure::d2CapillaryPressure ( Real  saturation,
unsigned  qp = 0 
) const
virtualinherited

Second derivative of capillary pressure wrt true saturation.

Parameters
saturationtrue saturation
qpquadpoint to use (when capillary-pressure depends on coupled variables, not just saturation)
Returns
second derivative of capillary pressure with respect to true saturation

Definition at line 82 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlow2PhasePS::computeQpProperties(), and PorousFlowFluidState::computeQpProperties().

83 {
84  if (_log_ext && saturation < _sat_ext)
85  return d2CapillaryPressureLogExt(saturation);
86  else
87  return d2CapillaryPressureCurve(saturation, qp);
88 }
Real d2CapillaryPressureLogExt(Real s) const
The second derivative of capillary pressure in the logarithmic extension This implementation assumes ...
virtual Real d2CapillaryPressureCurve(Real saturation, unsigned qp=0) const =0
Second derivative of raw capillary pressure wrt true saturation.
Real _sat_ext
Saturation where the logarithmic extension meets the raw curve This is computed only for qp=0...
bool _log_ext
Flag to use a logarithmic extension for low saturation.

◆ d2CapillaryPressureCurve()

Real PorousFlowCapillaryPressureVG::d2CapillaryPressureCurve ( Real  saturation,
unsigned  qp = 0 
) const
overridevirtual

Second derivative of raw capillary pressure wrt true saturation.

Parameters
saturationtrue saturation
Returns
second derivative of capillary pressure with respect to true saturation

Implements PorousFlowCapillaryPressure.

Definition at line 64 of file PorousFlowCapillaryPressureVG.C.

65 {
66  const Real seff = effectiveSaturationFromSaturation(saturation) * _s_scale;
69 }
const Real _m
van Genuchten exponent m
Real effectiveSaturationFromSaturation(Real saturation) const
Effective saturation of liquid phase given liquid saturation and residual liquid saturation.
const Real _pc_max
Maximum capillary pressure (Pa). Note: must be <= 0.
Real d2CapillaryPressure(Real seff, Real alpha, Real m, Real pc_max)
Second derivative of capillary pressure wrt effective saturation.
const Real _alpha
van Genuchten capillary coefficient alpha
const Real _s_scale
Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate.
const Real _dseff_ds
Derivative of effective saturation with respect to saturation.

◆ d2CapillaryPressureLogExt()

Real PorousFlowCapillaryPressure::d2CapillaryPressureLogExt ( Real  s) const
protectedinherited

The second derivative of capillary pressure in the logarithmic extension This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities.

Parameters
sliquid saturation
Returns
second derivative of capillary pressure in logarithmic extension

Definition at line 109 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlowCapillaryPressure::d2CapillaryPressure().

110 {
111  return _pc_ext * _slope_ext * _slope_ext * _log10 * _log10 *
112  std::pow(10.0, _slope_ext * (saturation - _sat_ext));
113 }
Real _slope_ext
Gradient of the logarithmic extension This is computed only for qp=0.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real _pc_ext
Capillary pressure where the extension meets the raw curve.
Real _sat_ext
Saturation where the logarithmic extension meets the raw curve This is computed only for qp=0...

◆ d2EffectiveSaturation()

Real PorousFlowCapillaryPressureVG::d2EffectiveSaturation ( Real  pc,
unsigned  qp = 0 
) const
overridevirtual

Second derivative of effective saturation wrt capillary pressure.

Parameters
pccapillary pressure
qpquadpoint to use (when effective saturation depends on coupled variables, not just pc)
Returns
second derivative of effective saturation wrt capillary pressure

Implements PorousFlowCapillaryPressure.

Definition at line 86 of file PorousFlowCapillaryPressureVG.C.

87 {
88  return (1.0 / _s_scale) *
90 }
const Real _m
van Genuchten exponent m
const Real _alpha
van Genuchten capillary coefficient alpha
const Real _s_scale
Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate.
Real d2EffectiveSaturation(Real p, Real alpha, Real m)
Second derivative of effective saturation wrt porepressure.
const Real _pc_sscale
pc_sscale = f(s_scale), where f is the van Genuchten function

◆ dCapillaryPressure()

Real PorousFlowCapillaryPressure::dCapillaryPressure ( Real  saturation,
unsigned  qp = 0 
) const
virtualinherited

Derivative of capillary pressure wrt true saturation.

Parameters
saturationtrue saturation
qpquadpoint to use (when capillary-pressure depends on coupled variables, not just saturation)
Returns
derivative of capillary pressure with respect to true saturation

Definition at line 73 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlow2PhasePS::computeQpProperties(), and PorousFlowFluidState::computeQpProperties().

74 {
75  if (_log_ext && saturation < _sat_ext)
76  return dCapillaryPressureLogExt(saturation);
77  else
78  return dCapillaryPressureCurve(saturation, qp);
79 }
virtual Real dCapillaryPressureCurve(Real saturation, unsigned qp=0) const =0
Derivative of raw capillary pressure wrt true saturation.
Real _sat_ext
Saturation where the logarithmic extension meets the raw curve This is computed only for qp=0...
bool _log_ext
Flag to use a logarithmic extension for low saturation.
Real dCapillaryPressureLogExt(Real s) const
The derivative of capillary pressure in the logarithmic extension This implementation assumes capilla...

◆ dCapillaryPressureCurve()

Real PorousFlowCapillaryPressureVG::dCapillaryPressureCurve ( Real  saturation,
unsigned  qp = 0 
) const
overridevirtual

Derivative of raw capillary pressure wrt true saturation.

Parameters
saturationtrue saturation
Returns
derivative of capillary pressure with respect to true saturation

Implements PorousFlowCapillaryPressure.

Definition at line 56 of file PorousFlowCapillaryPressureVG.C.

57 {
58  const Real seff = effectiveSaturationFromSaturation(saturation) * _s_scale;
60  _s_scale;
61 }
const Real _m
van Genuchten exponent m
Real effectiveSaturationFromSaturation(Real saturation) const
Effective saturation of liquid phase given liquid saturation and residual liquid saturation.
const Real _pc_max
Maximum capillary pressure (Pa). Note: must be <= 0.
const Real _alpha
van Genuchten capillary coefficient alpha
const Real _s_scale
Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate.
Real dCapillaryPressure(Real seff, Real alpha, Real m, Real pc_max)
Derivative of capillary pressure wrt effective saturation.
const Real _dseff_ds
Derivative of effective saturation with respect to saturation.

◆ dCapillaryPressureLogExt()

Real PorousFlowCapillaryPressure::dCapillaryPressureLogExt ( Real  s) const
protectedinherited

The derivative of capillary pressure in the logarithmic extension This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities.

Parameters
sliquid saturation
Returns
derivative of capillary pressure in logarithmic extension

Definition at line 103 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlowCapillaryPressure::dCapillaryPressure().

104 {
105  return _pc_ext * _slope_ext * _log10 * std::pow(10.0, _slope_ext * (saturation - _sat_ext));
106 }
Real _slope_ext
Gradient of the logarithmic extension This is computed only for qp=0.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Real _pc_ext
Capillary pressure where the extension meets the raw curve.
Real _sat_ext
Saturation where the logarithmic extension meets the raw curve This is computed only for qp=0...

◆ dEffectiveSaturation()

Real PorousFlowCapillaryPressureVG::dEffectiveSaturation ( Real  pc,
unsigned  qp = 0 
) const
overridevirtual

Derivative of effective saturation wrt capillary pressure.

Parameters
pccapillary pressure (Pa)
qpquadpoint to use (when effective saturation depends on coupled variables, not just pc)
Returns
derivative of effective saturation wrt capillary pressure

Implements PorousFlowCapillaryPressure.

Definition at line 79 of file PorousFlowCapillaryPressureVG.C.

80 {
81  return (1.0 / _s_scale) *
83 }
const Real _m
van Genuchten exponent m
const Real _alpha
van Genuchten capillary coefficient alpha
const Real _s_scale
Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate.
const Real _pc_sscale
pc_sscale = f(s_scale), where f is the van Genuchten function
Real dEffectiveSaturation(Real p, Real alpha, Real m)
Derivative of effective saturation wrt porepressure.

◆ effectiveSaturation()

Real PorousFlowCapillaryPressureVG::effectiveSaturation ( Real  pc,
unsigned  qp = 0 
) const
overridevirtual

Effective saturation as a function of capillary pressure.

Parameters
pccapillary pressure (Pa)
qpquadpoint to use (when effective saturation depends on coupled variables, not just pc)
Returns
effective saturation

Implements PorousFlowCapillaryPressure.

Definition at line 72 of file PorousFlowCapillaryPressureVG.C.

73 {
74  return (1.0 / _s_scale) *
76 }
const Real _m
van Genuchten exponent m
const Real _alpha
van Genuchten capillary coefficient alpha
Real effectiveSaturation(Real p, Real alpha, Real m)
Effective saturation as a function of porepressure.
const Real _s_scale
Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate.
const Real _pc_sscale
pc_sscale = f(s_scale), where f is the van Genuchten function

◆ effectiveSaturationFromSaturation()

Real PorousFlowCapillaryPressure::effectiveSaturationFromSaturation ( Real  saturation) const
protectedinherited

Effective saturation of liquid phase given liquid saturation and residual liquid saturation.

Note: not to be mistaken with effectiveSaturation(pc) which is a function of capillary pressure.

Parameters
saturationtrue saturation
Returns
effective saturation

Definition at line 91 of file PorousFlowCapillaryPressure.C.

Referenced by capillaryPressureCurve(), PorousFlowCapillaryPressureBC::capillaryPressureCurve(), d2CapillaryPressureCurve(), PorousFlowCapillaryPressureBC::d2CapillaryPressureCurve(), dCapillaryPressureCurve(), and PorousFlowCapillaryPressureBC::dCapillaryPressureCurve().

92 {
93  return (saturation - _sat_lr) / (1.0 - _sat_lr);
94 }
const Real _sat_lr
Liquid residual saturation.

◆ extensionSaturation()

Real PorousFlowCapillaryPressure::extensionSaturation ( ) const
protectedinherited

Calculates the saturation where the logarithmic extension to capillary pressure meets the raw curve using Newton's method.

This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities

Returns
saturation where logarithmic extension begins

Definition at line 116 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlowCapillaryPressure::initialSetup().

117 {
118  // Initial guess for saturation where extension matches curve
119  Real sat = _sat_lr + 0.01;
120 
121  // Calculate the saturation where the extension matches the derivative of the
122  // raw capillary pressure curve
123  const unsigned int max_its = 20;
124  const Real nr_tol = 1.0e-8;
125  unsigned int iter = 0;
126 
127  while (std::abs(interceptFunction(sat)) > nr_tol)
128  {
129  sat = sat - interceptFunction(sat) / interceptFunctionDeriv(sat);
130 
131  iter++;
132  if (iter > max_its)
133  break;
134  }
135 
136  return sat;
137 }
Real interceptFunctionDeriv(Real s) const
Calculates the saturation where the logarithmic extension to capillary pressure at low saturation...
Real interceptFunction(Real s) const
Calculates the saturation where the logarithmic extension to capillary pressure at low saturation...
const Real _sat_lr
Liquid residual saturation.

◆ initialize()

virtual void PorousFlowCapillaryPressure::initialize ( )
inlinefinalvirtualinherited

Definition at line 45 of file PorousFlowCapillaryPressure.h.

45 {};

◆ initialSetup()

void PorousFlowCapillaryPressure::initialSetup ( )
overridevirtualinherited

Definition at line 51 of file PorousFlowCapillaryPressure.C.

52 {
53  // If _log_ext = true, calculate the saturation where the the logarithmic
54  // extension meets the raw capillary pressure curve.
55  if (_log_ext)
56  {
59  _slope_ext = (std::log10(_pc_ext) - std::log10(_pc_max)) / _sat_ext;
60  }
61 }
Real _slope_ext
Gradient of the logarithmic extension This is computed only for qp=0.
const Real _pc_max
Maximum capillary pressure (Pa). Note: must be <= 0.
Real extensionSaturation() const
Calculates the saturation where the logarithmic extension to capillary pressure meets the raw curve u...
virtual Real capillaryPressure(Real saturation, unsigned qp=0) const
Capillary pressure is calculated as a function of true saturation.
Real _pc_ext
Capillary pressure where the extension meets the raw curve.
Real _sat_ext
Saturation where the logarithmic extension meets the raw curve This is computed only for qp=0...
bool _log_ext
Flag to use a logarithmic extension for low saturation.

◆ interceptFunction()

Real PorousFlowCapillaryPressure::interceptFunction ( Real  s) const
protectedinherited

Calculates the saturation where the logarithmic extension to capillary pressure at low saturation.

This is computed for qp=0 only. This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities

Parameters
seffective saturation
Returns
capillary pressure function in the logarithmic extension

Definition at line 140 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlowCapillaryPressure::extensionSaturation().

141 {
142  Real pc = capillaryPressureCurve(saturation);
143  Real dpc = dCapillaryPressureCurve(saturation);
144 
145  return std::log10(pc) - saturation * dpc / (_log10 * pc) - std::log10(_pc_max);
146 }
virtual Real dCapillaryPressureCurve(Real saturation, unsigned qp=0) const =0
Derivative of raw capillary pressure wrt true saturation.
virtual Real capillaryPressureCurve(Real saturation, unsigned qp=0) const =0
Raw capillary pressure curve (does not include logarithmic extension)
const Real _pc_max
Maximum capillary pressure (Pa). Note: must be <= 0.

◆ interceptFunctionDeriv()

Real PorousFlowCapillaryPressure::interceptFunctionDeriv ( Real  s) const
protectedinherited

Calculates the saturation where the logarithmic extension to capillary pressure at low saturation.

This implementation assumes capillary-pressure is a function of saturation only, and not any other quad-point dependent quantities

Parameters
seffective saturation
Returns
derivative of logarithmic extension function

Definition at line 149 of file PorousFlowCapillaryPressure.C.

Referenced by PorousFlowCapillaryPressure::extensionSaturation().

150 {
151  Real pc = capillaryPressureCurve(saturation);
152  Real dpc = dCapillaryPressureCurve(saturation);
153  Real d2pc = d2CapillaryPressureCurve(saturation);
154 
155  return saturation * (dpc * dpc / pc - d2pc) / (_log10 * pc);
156 }
virtual Real dCapillaryPressureCurve(Real saturation, unsigned qp=0) const =0
Derivative of raw capillary pressure wrt true saturation.
virtual Real capillaryPressureCurve(Real saturation, unsigned qp=0) const =0
Raw capillary pressure curve (does not include logarithmic extension)
virtual Real d2CapillaryPressureCurve(Real saturation, unsigned qp=0) const =0
Second derivative of raw capillary pressure wrt true saturation.

Member Data Documentation

◆ _alpha

const Real PorousFlowCapillaryPressureVG::_alpha
protected

◆ _dseff_ds

const Real PorousFlowCapillaryPressure::_dseff_ds
protectedinherited

◆ _log10

const Real PorousFlowCapillaryPressure::_log10
protectedinherited

◆ _log_ext

bool PorousFlowCapillaryPressure::_log_ext
protectedinherited

◆ _m

const Real PorousFlowCapillaryPressureVG::_m
protected

◆ _pc_ext

Real PorousFlowCapillaryPressure::_pc_ext
protectedinherited

◆ _pc_max

const Real PorousFlowCapillaryPressure::_pc_max
protectedinherited

◆ _pc_sscale

const Real PorousFlowCapillaryPressureVG::_pc_sscale
protected

pc_sscale = f(s_scale), where f is the van Genuchten function

Definition at line 47 of file PorousFlowCapillaryPressureVG.h.

Referenced by capillaryPressureCurve(), d2EffectiveSaturation(), dEffectiveSaturation(), and effectiveSaturation().

◆ _s_scale

const Real PorousFlowCapillaryPressureVG::_s_scale
protected

Capillary pressure = f(Seff * s_scale) - pc_sscale, where f is the van Genuchten function. For almost all simulations s_scale=1 will be appropriate.

Definition at line 45 of file PorousFlowCapillaryPressureVG.h.

Referenced by capillaryPressureCurve(), d2CapillaryPressureCurve(), d2EffectiveSaturation(), dCapillaryPressureCurve(), dEffectiveSaturation(), and effectiveSaturation().

◆ _sat_ext

Real PorousFlowCapillaryPressure::_sat_ext
protectedinherited

◆ _sat_lr

const Real PorousFlowCapillaryPressure::_sat_lr
protectedinherited

◆ _slope_ext

Real PorousFlowCapillaryPressure::_slope_ext
protectedinherited

The documentation for this class was generated from the following files: