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

Effective saturation as a function of porepressure using the van Genuchten formula, but when p<p_cut use a linear instead, seff = a + b*p, which matches value and derivative at p=p_cut This is so seff=0 at a finite value of p rather than p=-infinity. More...

#include <RichardsSeff1VGcut.h>

Inheritance diagram for RichardsSeff1VGcut:
[legend]

Public Member Functions

 RichardsSeff1VGcut (const InputParameters &parameters)
 
void initialSetup ()
 just prints some (maybe) useful info to the console More...
 
Real seff (std::vector< const VariableValue * > p, unsigned int qp) const
 effective saturation as a function of porepressure More...
 
void dseff (std::vector< const VariableValue * > p, unsigned int qp, std::vector< Real > &result) const
 derivative of effective saturation as a function of porepressure More...
 
void d2seff (std::vector< const VariableValue * > p, unsigned int qp, std::vector< std::vector< Real >> &result) const
 second derivative of effective saturation as a function of porepressure More...
 
void initialize ()
 
void execute ()
 
void finalize ()
 

Protected Attributes

Real _al
 van Genuchten alpha parameter More...
 
Real _m
 van Genuchten m parameter More...
 
Real _p_cut
 cutoff in pressure below which use a linear relationship instead of van-Genuchten expression. _p_cut < 0 More...
 
Real _s_cut
 effective saturation at p=_p_cut More...
 
Real _ds_cut
 derivative of effective saturation wrt p at p=_p_cut More...
 

Detailed Description

Effective saturation as a function of porepressure using the van Genuchten formula, but when p<p_cut use a linear instead, seff = a + b*p, which matches value and derivative at p=p_cut This is so seff=0 at a finite value of p rather than p=-infinity.

Note effective saturation is not a function of capillary pressure: i use porepressure instead, so seff = 1 for p >= 0.

Definition at line 31 of file RichardsSeff1VGcut.h.

Constructor & Destructor Documentation

◆ RichardsSeff1VGcut()

RichardsSeff1VGcut::RichardsSeff1VGcut ( const InputParameters &  parameters)

Definition at line 34 of file RichardsSeff1VGcut.C.

35  : RichardsSeff1VG(parameters),
36  _al(getParam<Real>("al")),
37  _m(getParam<Real>("m")),
38  _p_cut(getParam<Real>("p_cut")),
39  _s_cut(0),
40  _ds_cut(0)
41 {
44 }

Member Function Documentation

◆ d2seff()

void RichardsSeff1VGcut::d2seff ( std::vector< const VariableValue * >  p,
unsigned int  qp,
std::vector< std::vector< Real >> &  result 
) const
virtual

second derivative of effective saturation as a function of porepressure

Parameters
pporepressure in the element. Note that (*p[0])[qp] is the porepressure at quadpoint qp
qpthe quad point to evaluate effective saturation at
resultthe derivtives will be placed in this array

Reimplemented from RichardsSeff1VG.

Definition at line 81 of file RichardsSeff1VGcut.C.

84 {
85  if ((*p[0])[qp] > _p_cut)
86  return RichardsSeff1VG::d2seff(p, qp, result);
87  else
88  result[0][0] = 0;
89 }

◆ dseff()

void RichardsSeff1VGcut::dseff ( std::vector< const VariableValue * >  p,
unsigned int  qp,
std::vector< Real > &  result 
) const
virtual

derivative of effective saturation as a function of porepressure

Parameters
pporepressure in the element. Note that (*p[0])[qp] is the porepressure at quadpoint qp
qpthe quad point to evaluate effective saturation at
resultthe derivtives will be placed in this array

Reimplemented from RichardsSeff1VG.

Definition at line 70 of file RichardsSeff1VGcut.C.

73 {
74  if ((*p[0])[qp] > _p_cut)
75  return RichardsSeff1VG::dseff(p, qp, result);
76  else
77  result[0] = _ds_cut;
78 }

◆ execute()

void RichardsSeff::execute ( )
inherited

Definition at line 32 of file RichardsSeff.C.

33 {
34 }

◆ finalize()

void RichardsSeff::finalize ( )
inherited

Definition at line 37 of file RichardsSeff.C.

38 {
39 }

◆ initialize()

void RichardsSeff::initialize ( )
inherited

Definition at line 27 of file RichardsSeff.C.

28 {
29 }

◆ initialSetup()

void RichardsSeff1VGcut::initialSetup ( )

just prints some (maybe) useful info to the console

Definition at line 47 of file RichardsSeff1VGcut.C.

48 {
49  _console << "cut VG Seff has p_cut=" << _p_cut << " so seff_cut=" << _s_cut
50  << " and seff=0 at p=" << -_s_cut / _ds_cut + _p_cut << std::endl;
51 }

◆ seff()

Real RichardsSeff1VGcut::seff ( std::vector< const VariableValue * >  p,
unsigned int  qp 
) const
virtual

effective saturation as a function of porepressure

Parameters
pporepressure in the element. Note that (*p[0])[qp] is the porepressure at quadpoint qp
qpthe quad point to evaluate effective saturation at

Reimplemented from RichardsSeff1VG.

Definition at line 54 of file RichardsSeff1VGcut.C.

55 {
56  if ((*p[0])[qp] > _p_cut)
57  {
58  return RichardsSeff1VG::seff(p, qp);
59  }
60  else
61  {
62  Real seff_linear = _s_cut + _ds_cut * ((*p[0])[qp] - _p_cut);
63  // return (seff_linear > 0 ? seff_linear : 0); // andy isn't sure of this - might be useful to
64  // allow negative saturations
65  return seff_linear;
66  }
67 }

Member Data Documentation

◆ _al

Real RichardsSeff1VGcut::_al
protected

van Genuchten alpha parameter

Definition at line 70 of file RichardsSeff1VGcut.h.

Referenced by RichardsSeff1VGcut().

◆ _ds_cut

Real RichardsSeff1VGcut::_ds_cut
protected

derivative of effective saturation wrt p at p=_p_cut

Definition at line 82 of file RichardsSeff1VGcut.h.

Referenced by dseff(), initialSetup(), RichardsSeff1VGcut(), and seff().

◆ _m

Real RichardsSeff1VGcut::_m
protected

van Genuchten m parameter

Definition at line 73 of file RichardsSeff1VGcut.h.

Referenced by RichardsSeff1VGcut().

◆ _p_cut

Real RichardsSeff1VGcut::_p_cut
protected

cutoff in pressure below which use a linear relationship instead of van-Genuchten expression. _p_cut < 0

Definition at line 76 of file RichardsSeff1VGcut.h.

Referenced by d2seff(), dseff(), initialSetup(), RichardsSeff1VGcut(), and seff().

◆ _s_cut

Real RichardsSeff1VGcut::_s_cut
protected

effective saturation at p=_p_cut

Definition at line 79 of file RichardsSeff1VGcut.h.

Referenced by initialSetup(), RichardsSeff1VGcut(), and seff().


The documentation for this class was generated from the following files:
RichardsSeff1VG::d2seff
void d2seff(std::vector< const VariableValue * > p, unsigned int qp, std::vector< std::vector< Real >> &result) const
second derivative of effective saturation as a function of porepressure
Definition: RichardsSeff1VG.C:59
RichardsSeff1VGcut::_p_cut
Real _p_cut
cutoff in pressure below which use a linear relationship instead of van-Genuchten expression....
Definition: RichardsSeff1VGcut.h:76
RichardsSeffVG::dseff
static Real dseff(Real p, Real al, Real m)
derivative of effective saturation wrt porepressure
Definition: RichardsSeffVG.C:30
RichardsSeff1VG::dseff
void dseff(std::vector< const VariableValue * > p, unsigned int qp, std::vector< Real > &result) const
derivative of effective saturation as a function of porepressure
Definition: RichardsSeff1VG.C:51
RichardsSeff1VGcut::_ds_cut
Real _ds_cut
derivative of effective saturation wrt p at p=_p_cut
Definition: RichardsSeff1VGcut.h:82
RichardsSeff1VGcut::_s_cut
Real _s_cut
effective saturation at p=_p_cut
Definition: RichardsSeff1VGcut.h:79
RichardsSeff1VGcut::_al
Real _al
van Genuchten alpha parameter
Definition: RichardsSeff1VGcut.h:70
RichardsSeff1VGcut::_m
Real _m
van Genuchten m parameter
Definition: RichardsSeff1VGcut.h:73
RichardsSeff1VG::seff
Real seff(std::vector< const VariableValue * > p, unsigned int qp) const
effective saturation as a function of porepressure
Definition: RichardsSeff1VG.C:45
RichardsSeff1VG::RichardsSeff1VG
RichardsSeff1VG(const InputParameters &parameters)
Definition: RichardsSeff1VG.C:39
RichardsSeffVG::seff
static Real seff(Real p, Real al, Real m)
effective saturation as a fcn of porepressure
Definition: RichardsSeffVG.C:15