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 20 of file RichardsSeffVG.h.

Member Function Documentation

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 43 of file RichardsSeffVG.C.

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

44 {
45  if (p >= 0)
46  return 0.0;
47  else
48  {
49  Real n = 1.0 / (1.0 - m);
50  Real inner = 1 + std::pow(-al * p, n);
51  Real dinner_dp = -n * al * std::pow(-al * p, n - 1);
52  Real d2inner_dp2 = n * (n - 1) * al * al * std::pow(-al * p, n - 2);
53  Real d2seff_dp2 = m * (m + 1) * std::pow(inner, -m - 2) * std::pow(dinner_dp, 2) -
54  m * std::pow(inner, -m - 1) * d2inner_dp2;
55  return d2seff_dp2;
56  }
57 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
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 28 of file RichardsSeffVG.C.

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

29 {
30  if (p >= 0)
31  return 0.0;
32  else
33  {
34  Real n = 1.0 / (1.0 - m);
35  Real inner = 1 + std::pow(-al * p, n);
36  Real dinner_dp = -n * al * std::pow(-al * p, n - 1);
37  Real dseff_dp = -m * std::pow(inner, -m - 1) * dinner_dp;
38  return dseff_dp;
39  }
40 }
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
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 13 of file RichardsSeffVG.C.

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

14 {
15  Real n, seff;
16 
17  if (p >= 0)
18  return 1.0;
19  else
20  {
21  n = 1.0 / (1.0 - m);
22  seff = 1 + std::pow(-al * p, n);
23  return std::pow(seff, -m);
24  }
25 }
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: