cellLimitedGrads.C
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) 2011-2016 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 \*---------------------------------------------------------------------------*/
27 
28 #include "cellLimitedGrad.H"
29 #include "minmodGradientLimiter.H"
31 #include "cubicGradientLimiter.H"
32 
33 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
34 
35 #define makeNamedFvLimitedGradTypeScheme(SS, Type, Limiter, Name) \
36  typedef Foam::fv::SS<Foam::Type, Foam::fv::gradientLimiters::Limiter> \
37  SS##Type##Limiter##_; \
38  \
39  defineTemplateTypeNameAndDebugWithName \
40  ( \
41  SS##Type##Limiter##_, \
42  Name, \
43  0 \
44  ); \
45  \
46  namespace Foam \
47  { \
48  namespace fv \
49  { \
50  gradScheme<Type>::addIstreamConstructorToTable \
51  < \
52  SS<Type, gradientLimiters::Limiter> \
53  > add##SS##Type##Limiter##IstreamConstructorToTable_; \
54  } \
55  }
56 
57 #define makeFvLimitedGradTypeScheme(SS, Type, Limiter) \
58  makeNamedFvLimitedGradTypeScheme(SS##Grad, Type, Limiter, #SS"<"#Limiter">")
59 
60 #define makeFvLimitedGradScheme(SS, Limiter) \
61  \
62  makeFvLimitedGradTypeScheme(SS, scalar, Limiter) \
63  makeFvLimitedGradTypeScheme(SS, vector, Limiter)
64 
65 
66 // Default limiter in minmod specified without the limiter name
67 // for backward compatibility
68 makeNamedFvLimitedGradTypeScheme(cellLimitedGrad, scalar, minmod, "cellLimited")
69 makeNamedFvLimitedGradTypeScheme(cellLimitedGrad, vector, minmod, "cellLimited")
70 
71 makeFvLimitedGradScheme(cellLimited, Venkatakrishnan)
72 makeFvLimitedGradScheme(cellLimited, cubic)
73 
74 // ************************************************************************* //
minmodGradientLimiter.H
VenkatakrishnanGradientLimiter.H
Foam::vector
Vector< scalar > vector
A scalar version of the templated Vector.
Definition: vector.H:51
makeNamedFvLimitedGradTypeScheme
#define makeNamedFvLimitedGradTypeScheme(SS, Type, Limiter, Name)
Definition: cellLimitedGrads.C:35
cubicGradientLimiter.H
cellLimitedGrad.H
makeFvLimitedGradScheme
#define makeFvLimitedGradScheme(SS, Limiter)
Definition: cellLimitedGrads.C:60