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-------------------------------------------------------------------------------
10License
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
26Class
27 Foam::fv::gradientLimiters::Venkatakrishnan
28
29Description
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
59See 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
72namespace Foam
73{
74
75namespace fv
76{
77
78namespace gradientLimiters
79{
80
81// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
84{
85
86public:
87
88 // Constructors
91 {}
92
93
94 // Member Functions
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// ************************************************************************* //
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:64
Namespace for OpenFOAM.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
labelList fv(nPoints)