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

Definition at line 43 of file RichardsSeffVG.C.

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

Definition at line 28 of file RichardsSeffVG.C.

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

Definition at line 13 of file RichardsSeffVG.C.

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: