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 30 of file RichardsSeff1VGcut.h.

Constructor & Destructor Documentation

RichardsSeff1VGcut::RichardsSeff1VGcut ( const InputParameters &  parameters)

Definition at line 30 of file RichardsSeff1VGcut.C.

31  : RichardsSeff1VG(parameters),
32  _al(getParam<Real>("al")),
33  _m(getParam<Real>("m")),
34  _p_cut(getParam<Real>("p_cut")),
35  _s_cut(0),
36  _ds_cut(0)
37 {
40 }
static Real dseff(Real p, Real al, Real m)
derivative of effective saturation wrt porepressure
Real _s_cut
effective saturation at p=_p_cut
static Real seff(Real p, Real al, Real m)
effective saturation as a fcn of porepressure
Real _al
van Genuchten alpha parameter
Real _m
van Genuchten m parameter
RichardsSeff1VG(const InputParameters &parameters)
Real _ds_cut
derivative of effective saturation wrt p at p=_p_cut
Real _p_cut
cutoff in pressure below which use a linear relationship instead of van-Genuchten expression...

Member Function Documentation

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 77 of file RichardsSeff1VGcut.C.

80 {
81  if ((*p[0])[qp] > _p_cut)
82  return RichardsSeff1VG::d2seff(p, qp, result);
83  else
84  result[0][0] = 0;
85 }
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
Real _p_cut
cutoff in pressure below which use a linear relationship instead of van-Genuchten expression...
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 66 of file RichardsSeff1VGcut.C.

69 {
70  if ((*p[0])[qp] > _p_cut)
71  return RichardsSeff1VG::dseff(p, qp, result);
72  else
73  result[0] = _ds_cut;
74 }
Real _ds_cut
derivative of effective saturation wrt p at p=_p_cut
Real _p_cut
cutoff in pressure below which use a linear relationship instead of van-Genuchten expression...
void dseff(std::vector< const VariableValue * > p, unsigned int qp, std::vector< Real > &result) const
derivative of effective saturation as a function of porepressure
void RichardsSeff::execute ( )
inherited

Definition at line 30 of file RichardsSeff.C.

31 {
32 }
void RichardsSeff::finalize ( )
inherited

Definition at line 35 of file RichardsSeff.C.

36 {
37 }
void RichardsSeff::initialize ( )
inherited

Definition at line 25 of file RichardsSeff.C.

26 {
27 }
void RichardsSeff1VGcut::initialSetup ( )

just prints some (maybe) useful info to the console

Definition at line 43 of file RichardsSeff1VGcut.C.

44 {
45  _console << "cut VG Seff has p_cut=" << _p_cut << " so seff_cut=" << _s_cut
46  << " and seff=0 at p=" << -_s_cut / _ds_cut + _p_cut << std::endl;
47 }
Real _s_cut
effective saturation at p=_p_cut
Real _ds_cut
derivative of effective saturation wrt p at p=_p_cut
Real _p_cut
cutoff in pressure below which use a linear relationship instead of van-Genuchten expression...
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 50 of file RichardsSeff1VGcut.C.

51 {
52  if ((*p[0])[qp] > _p_cut)
53  {
54  return RichardsSeff1VG::seff(p, qp);
55  }
56  else
57  {
58  Real seff_linear = _s_cut + _ds_cut * ((*p[0])[qp] - _p_cut);
59  // return (seff_linear > 0 ? seff_linear : 0); // andy isn't sure of this - might be useful to
60  // allow negative saturations
61  return seff_linear;
62  }
63 }
Real _s_cut
effective saturation at p=_p_cut
Real seff(std::vector< const VariableValue * > p, unsigned int qp) const
effective saturation as a function of porepressure
Real _ds_cut
derivative of effective saturation wrt p at p=_p_cut
Real _p_cut
cutoff in pressure below which use a linear relationship instead of van-Genuchten expression...

Member Data Documentation

Real RichardsSeff1VGcut::_al
protected

van Genuchten alpha parameter

Definition at line 69 of file RichardsSeff1VGcut.h.

Referenced by RichardsSeff1VGcut().

Real RichardsSeff1VGcut::_ds_cut
protected

derivative of effective saturation wrt p at p=_p_cut

Definition at line 81 of file RichardsSeff1VGcut.h.

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

Real RichardsSeff1VGcut::_m
protected

van Genuchten m parameter

Definition at line 72 of file RichardsSeff1VGcut.h.

Referenced by RichardsSeff1VGcut().

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 75 of file RichardsSeff1VGcut.h.

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

Real RichardsSeff1VGcut::_s_cut
protected

effective saturation at p=_p_cut

Definition at line 78 of file RichardsSeff1VGcut.h.

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


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