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.

## ◆ d2seff()

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

2nd derivative of effective saturation wrt porepressure

Parameters
 p porepressure al van-genuchten alpha parameter m van-genuchten m parameter

Definition at line 45 of file RichardsSeffVG.C.

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
 p porepressure al van-genuchten alpha parameter m van-genuchten m parameter

Definition at line 30 of file RichardsSeffVG.C.

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
 p porepressure al van-genuchten alpha parameter m van-genuchten m parameter

Definition at line 15 of file RichardsSeffVG.C.

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: