www.mooseframework.org
RichardsRelPermMonomial.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 // "Monomial" form of relative permeability
11 //
13 
15 
16 template <>
17 InputParameters
19 {
20  InputParameters params = validParams<RichardsRelPerm>();
21  params.addRequiredRangeCheckedParam<Real>(
22  "simm",
23  "simm >= 0 & simm < 1",
24  "Immobile saturation. Must be between 0 and 1. Define s = "
25  "(seff - simm)/(1 - simm). Then relperm = s^n");
26  params.addRequiredRangeCheckedParam<Real>(
27  "n",
28  "n >= 0",
29  "Exponent. Must be >= 0. Define s = (seff - simm)/(1 - simm). Then relperm = s^n");
30  params.addParam<Real>(
31  "zero_to_the_zero", 0.0, "If n=0, this is the value of relative permeability for s<=simm");
32  params.addClassDescription("Monomial form of relative permeability. Define s = (seff - simm)/(1 "
33  "- simm). Then relperm = s^n if s<simm, otherwise relperm=1");
34  return params;
35 }
36 
37 RichardsRelPermMonomial::RichardsRelPermMonomial(const InputParameters & parameters)
38  : RichardsRelPerm(parameters),
39  _simm(getParam<Real>("simm")),
40  _n(getParam<Real>("n")),
41  _zero_to_the_zero(getParam<Real>("zero_to_the_zero"))
42 {
43 }
44 
45 Real
47 {
48  if (seff >= 1.0)
49  return 1.0;
50 
51  if (_n == 0 && seff <= _simm)
52  return _zero_to_the_zero;
53 
54  if (seff <= _simm)
55  return 0.0;
56 
57  Real s_internal = (seff - _simm) / (1.0 - _simm);
58  Real krel = std::pow(s_internal, _n);
59 
60  // bound, just in case
61  if (krel < 0)
62  {
63  krel = 0;
64  }
65  if (krel > 1)
66  {
67  krel = 1;
68  }
69  return krel;
70 }
71 
72 Real
74 {
75  if (seff >= 1.0)
76  return 0.0;
77 
78  if (seff <= _simm)
79  return 0.0;
80 
81  if (_n == 0)
82  return 0.0;
83 
84  Real s_internal = (seff - _simm) / (1.0 - _simm);
85  Real krelp = _n * std::pow(s_internal, _n - 1);
86  return krelp / (1.0 - _simm);
87 }
88 
89 Real
91 {
92  if (seff >= 1.0)
93  return 0.0;
94 
95  if (seff <= _simm)
96  return 0.0;
97 
98  if (_n == 0)
99  return 0.0;
100 
101  Real s_internal = (seff - _simm) / (1.0 - _simm);
102  Real krelpp = _n * (_n - 1) * std::pow(s_internal, _n - 2);
103  return krelpp / std::pow(1.0 - _simm, 2);
104 }
RichardsRelPermMonomial::RichardsRelPermMonomial
RichardsRelPermMonomial(const InputParameters &parameters)
Definition: RichardsRelPermMonomial.C:37
RichardsRelPerm
Base class for Richards relative permeability classes that provide relative permeability as a functio...
Definition: RichardsRelPerm.h:23
RichardsRelPermMonomial::d2relperm
Real d2relperm(Real seff) const
Second derivative of elative permeability wrt seff.
Definition: RichardsRelPermMonomial.C:90
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
validParams< RichardsRelPermMonomial >
InputParameters validParams< RichardsRelPermMonomial >()
Definition: RichardsRelPermMonomial.C:18
RichardsRelPermMonomial::_n
Real _n
exponent, must be >= 0
Definition: RichardsRelPermMonomial.h:53
RichardsRelPermMonomial::drelperm
Real drelperm(Real seff) const
Derivative of elative permeability wrt seff.
Definition: RichardsRelPermMonomial.C:73
RichardsRelPermMonomial::_zero_to_the_zero
Real _zero_to_the_zero
0^0, which is used if _n=0
Definition: RichardsRelPermMonomial.h:56
RichardsRelPermMonomial.h
RichardsRelPermMonomial::_simm
Real _simm
immobile saturation
Definition: RichardsRelPermMonomial.h:50
validParams< RichardsRelPerm >
InputParameters validParams< RichardsRelPerm >()
Definition: RichardsRelPerm.C:16
RichardsRelPermMonomial
Monomial form of relative permeability relperm = Seff^n for 0<Seff<=1, where S = (S - simm)/(1 - simm...
Definition: RichardsRelPermMonomial.h:25
registerMooseObject
registerMooseObject("RichardsApp", RichardsRelPermMonomial)
RichardsRelPermMonomial::relperm
Real relperm(Real seff) const
Relative permeability.
Definition: RichardsRelPermMonomial.C:46