VenkatakrishnanGradientLimiter.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2018 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::fv::gradientLimiters::Venkatakrishnan
28 
29 Description
30  Venkatakrishnan gradient limiter
31 
32  to be used with the Foam::fv::cellLimitedGrad limited gradient.
33 
34  Reference:
35  \verbatim
36  Venkatakrishnan, V. (1993).
37  On the accuracy of limiters and convergence to steady state solutions.
38  In 31st Aerospace Sciences Meeting (p. 880).
39  \endverbatim
40 
41  Example:
42  \verbatim
43  gradSchemes
44  {
45  default Gauss linear;
46  limited cellLimited<Venkatakrishnan> Gauss linear 1;
47  }
48  \endverbatim
49 
50  Note: this limiter formally allows the limiter function to slightly exceed 1
51  which is generally not a good idea and can cause unboundedness. To avoid
52  this problem the limiter function is clipped to 1 which is likely to be
53  better behaved but is then not differentiable and so no longer conforms to
54  the basic principles of this kind of limiter function. All these issues are
55  resolved in a consistent and differentiable manner by the
56  Foam::fv::gradientLimiters::cubic limiter which is recommended in
57  preference to the Foam::fv::gradientLimiters::Venkatakrishnan limiter.
58 
59 See also
60  Foam::fv::cellLimitedGrad
61  Foam::fv::gradientLimiters::cubic
62 
63 \*---------------------------------------------------------------------------*/
64 
65 #ifndef VenkatakrishnanGradientLimiter_H
66 #define VenkatakrishnanGradientLimiter_H
67 
68 #include "Istream.H"
69 
70 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
71 
72 namespace Foam
73 {
74 
75 namespace fv
76 {
77 
78 namespace gradientLimiters
79 {
80 
81 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
82 
83 class Venkatakrishnan
84 {
85 
86 public:
87 
88  // Constructors
89 
91  {}
92 
93 
94  // Member Functions
95 
96  inline scalar limiter(const scalar r) const
97  {
98  return (sqr(r) + 2*r)/(sqr(r) + r + 2);
99  }
100 };
101 
102 
103 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
104 
105 } // End namespace gradientLimiters
106 
107 } // End namespace fv
108 
109 } // End namespace Foam
110 
111 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
112 
113 #endif
114 
115 // ************************************************************************* //
Foam::fv::gradientLimiters::Venkatakrishnan
Venkatakrishnan gradient limiter.
Definition: VenkatakrishnanGradientLimiter.H:82
Foam::Istream
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:61
Istream.H
Foam::fv::gradientLimiters::Venkatakrishnan::limiter
scalar limiter(const scalar r) const
Definition: VenkatakrishnanGradientLimiter.H:95
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::fv::gradientLimiters::Venkatakrishnan::Venkatakrishnan
Venkatakrishnan(Istream &)
Definition: VenkatakrishnanGradientLimiter.H:89
fv
labelList fv(nPoints)
Foam::sqr
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Definition: dimensionedSymmTensor.C:51