www.mooseframework.org
RichardsSeff1VG.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 // van-Genuchten effective saturation as a function of single pressure, and its derivs wrt to that
11 // pressure
12 //
13 #include "RichardsSeff1VG.h"
14 
15 registerMooseObject("RichardsApp", RichardsSeff1VG);
16 
19 {
22  "al > 0",
23  "van-Genuchten alpha parameter. Must "
24  "be positive. Single-phase VG seff = "
25  "(1 + (-al*c)^(1/(1-m)))^(-m)");
27  "m",
28  "m > 0 & m < 1",
29  "van-Genuchten m parameter. Must be between 0 and 1, and optimally "
30  "should be set to >0.5 Single-phase VG seff = (1 + "
31  "(-al*p)^(1/(1-m)))^(-m)");
32  params.addClassDescription("van-Genuchten effective saturation as a function of pressure "
33  "suitable for use in single-phase simulations.. seff = (1 + "
34  "(-al*p)^(1/(1-m)))^(-m)");
35  return params;
36 }
37 
39  : RichardsSeff(parameters), _al(getParam<Real>("al")), _m(getParam<Real>("m"))
40 {
41 }
42 
43 Real
44 RichardsSeff1VG::seff(std::vector<const VariableValue *> p, unsigned int qp) const
45 {
46  return RichardsSeffVG::seff((*p[0])[qp], _al, _m);
47 }
48 
49 void
50 RichardsSeff1VG::dseff(std::vector<const VariableValue *> p,
51  unsigned int qp,
52  std::vector<Real> & result) const
53 {
54  result[0] = RichardsSeffVG::dseff((*p[0])[qp], _al, _m);
55 }
56 
57 void
58 RichardsSeff1VG::d2seff(std::vector<const VariableValue *> p,
59  unsigned int qp,
60  std::vector<std::vector<Real>> & result) const
61 {
62  result[0][0] = RichardsSeffVG::d2seff((*p[0])[qp], _al, _m);
63 }
void addRequiredRangeCheckedParam(const std::string &name, const std::string &parsed_function, const std::string &doc_string)
static InputParameters validParams()
Base class for effective saturation as a function of porepressure(s) The functions seff...
Definition: RichardsSeff.h:18
static InputParameters validParams()
Definition: RichardsSeff.C:15
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
static Real dseff(Real p, Real al, Real m)
derivative of effective saturation wrt porepressure
void dseff(std::vector< const VariableValue *> p, unsigned int qp, std::vector< Real > &result) const
derivative of effective saturation as a function of porepressure
static Real seff(Real p, Real al, Real m)
effective saturation as a fcn of porepressure
Real seff(std::vector< const VariableValue *> p, unsigned int qp) const
effective saturation as a function of porepressure
Effective saturation as a function of porepressure using the van Genuchten formula.
registerMooseObject("RichardsApp", RichardsSeff1VG)
Real _al
van Genuchten alpha parameter
static Real d2seff(Real p, Real al, Real m)
2nd derivative of effective saturation wrt porepressure
RichardsSeff1VG(const InputParameters &parameters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real _m
van Genuchten m parameter
void addClassDescription(const std::string &doc_string)