www.mooseframework.org
Static Public Member Functions | List of all members
RichardsSeffVG Class Reference

Utility functions for van-genuchten effective saturation as a function of porepressure (not capillary pressure), and first and second derivs wrt porepressure. More...

#include <RichardsSeffVG.h>

Static Public Member Functions

static Real seff (Real p, Real al, Real m)
 effective saturation as a fcn of porepressure More...
 
static Real dseff (Real p, Real al, Real m)
 derivative of effective saturation wrt porepressure More...
 
static Real d2seff (Real p, Real al, Real m)
 2nd derivative of effective saturation wrt porepressure More...
 

Detailed Description

Utility functions for van-genuchten effective saturation as a function of porepressure (not capillary pressure), and first and second derivs wrt porepressure.

So seff = 1 for p >= 0. seff < 1 for p < 0.

Definition at line 22 of file RichardsSeffVG.h.

Member Function Documentation

◆ d2seff()

Real RichardsSeffVG::d2seff ( Real  p,
Real  al,
Real  m 
)
static

2nd derivative of effective saturation wrt porepressure

Parameters
pporepressure
alvan-genuchten alpha parameter
mvan-genuchten m parameter

Definition at line 45 of file RichardsSeffVG.C.

Referenced by RichardsSeff2gasVG::d2seff(), RichardsSeff2waterVG::d2seff(), RichardsSeff1VG::d2seff(), RichardsSeff2gasVGshifted::d2seff(), and RichardsSeff2waterVGshifted::d2seff().

46 {
47  if (p >= 0)
48  return 0.0;
49  else
50  {
51  Real n = 1.0 / (1.0 - m);
52  Real inner = 1 + std::pow(-al * p, n);
53  Real dinner_dp = -n * al * std::pow(-al * p, n - 1);
54  Real d2inner_dp2 = n * (n - 1) * al * al * std::pow(-al * p, n - 2);
55  Real d2seff_dp2 = m * (m + 1) * std::pow(inner, -m - 2) * std::pow(dinner_dp, 2) -
56  m * std::pow(inner, -m - 1) * d2inner_dp2;
57  return d2seff_dp2;
58  }
59 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)

◆ dseff()

Real RichardsSeffVG::dseff ( Real  p,
Real  al,
Real  m 
)
static

derivative of effective saturation wrt porepressure

Parameters
pporepressure
alvan-genuchten alpha parameter
mvan-genuchten m parameter

Definition at line 30 of file RichardsSeffVG.C.

Referenced by RichardsSeff2gasVG::dseff(), RichardsSeff2waterVG::dseff(), RichardsSeff1VG::dseff(), RichardsSeff2waterVGshifted::dseff(), RichardsSeff2gasVGshifted::dseff(), and RichardsSeff1VGcut::RichardsSeff1VGcut().

31 {
32  if (p >= 0)
33  return 0.0;
34  else
35  {
36  Real n = 1.0 / (1.0 - m);
37  Real inner = 1 + std::pow(-al * p, n);
38  Real dinner_dp = -n * al * std::pow(-al * p, n - 1);
39  Real dseff_dp = -m * std::pow(inner, -m - 1) * dinner_dp;
40  return dseff_dp;
41  }
42 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)

◆ seff()

Real RichardsSeffVG::seff ( Real  p,
Real  al,
Real  m 
)
static

effective saturation as a fcn of porepressure

Parameters
pporepressure
alvan-genuchten alpha parameter
mvan-genuchten m parameter

Definition at line 15 of file RichardsSeffVG.C.

Referenced by RichardsSeff1VGcut::RichardsSeff1VGcut(), RichardsSeff2gasVGshifted::RichardsSeff2gasVGshifted(), RichardsSeff2waterVGshifted::RichardsSeff2waterVGshifted(), RichardsSeff2waterVG::seff(), RichardsSeff2gasVG::seff(), RichardsSeff1VG::seff(), RichardsSeff2gasVGshifted::seff(), and RichardsSeff2waterVGshifted::seff().

16 {
17  Real n, seff;
18 
19  if (p >= 0)
20  return 1.0;
21  else
22  {
23  n = 1.0 / (1.0 - m);
24  seff = 1 + std::pow(-al * p, n);
25  return std::pow(seff, -m);
26  }
27 }
static Real seff(Real p, Real al, Real m)
effective saturation as a fcn of porepressure
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)

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