makeTurbulenceModel.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) 2015-2016 OpenFOAM Foundation
9  Copyright (C) 2020 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 \*---------------------------------------------------------------------------*/
28 
29 #include "EddyDiffusivity.H"
30 
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 
33 //- Define turbulence model typedefs, with EddyDiffusivity
34 #define defineTurbulenceModelTypes( \
35  Alpha, Rho, baseModel, BaseModel, TDModel, Transport) \
36  \
37  namespace Foam \
38  { \
39  typedef TurbulenceModel \
40  < \
41  Alpha, \
42  Rho, \
43  baseModel, \
44  Transport \
45  > Transport##baseModel; \
46  \
47  typedef TDModel<BaseModel<Transport>> \
48  Transport##BaseModel; \
49  \
50  typedef laminarModel<Transport##BaseModel> \
51  laminar##Transport##BaseModel; \
52  \
53  typedef RASModel<EddyDiffusivity<Transport##BaseModel>> \
54  RAS##Transport##BaseModel; \
55  \
56  typedef LESModel<EddyDiffusivity<Transport##BaseModel>> \
57  LES##Transport##BaseModel; \
58  }
59 
60 // Legacy name
61 #define makeTurbulenceModelTypes(a, b, c, d, e, f) \
62  defineTurbulenceModelTypes(a, b, c, d, e, f)
63 
64 
65 #define makeBaseTurbulenceModel( \
66  Alpha, Rho, baseModel, BaseModel, TDModel, Transport) \
67  \
68  /* Uses previously defined typedefs */ \
69  namespace Foam \
70  { \
71  /* Turbulence selection table */ \
72  defineTemplateRunTimeSelectionTable \
73  ( \
74  Transport##baseModel, \
75  dictionary \
76  ); \
77  \
78  /* Laminar models */ \
79  defineNamedTemplateTypeNameAndDebug(laminar##Transport##BaseModel, 0); \
80  \
81  defineTemplateRunTimeSelectionTable \
82  (laminar##Transport##BaseModel, dictionary); \
83  \
84  addToRunTimeSelectionTable \
85  ( \
86  Transport##baseModel, \
87  laminar##Transport##BaseModel, \
88  dictionary \
89  ); \
90  \
91  /* RAS models */ \
92  defineNamedTemplateTypeNameAndDebug(RAS##Transport##BaseModel, 0); \
93  \
94  defineTemplateRunTimeSelectionTable \
95  (RAS##Transport##BaseModel, dictionary); \
96  \
97  addToRunTimeSelectionTable \
98  ( \
99  Transport##baseModel, \
100  RAS##Transport##BaseModel, \
101  dictionary \
102  ); \
103  \
104  \
105  /* LES model types */ \
106  defineNamedTemplateTypeNameAndDebug(LES##Transport##BaseModel, 0); \
107  \
108  defineTemplateRunTimeSelectionTable \
109  (LES##Transport##BaseModel, dictionary); \
110  \
111  addToRunTimeSelectionTable \
112  ( \
113  Transport##baseModel, \
114  LES##Transport##BaseModel, \
115  dictionary \
116  ); \
117  }
118 
119 
120 #define makeTemplatedLaminarModel(BaseModel, SType, Type) \
121  typedef Foam::SType##Models::Type<Foam::BaseModel> \
122  Type##SType##BaseModel; \
123  defineNamedTemplateTypeNameAndDebug(Type##SType##BaseModel, 0); \
124  \
125  namespace Foam \
126  { \
127  namespace SType##Models \
128  { \
129  typedef Type<BaseModel> Type##SType##BaseModel; \
130  \
131  addToRunTimeSelectionTable \
132  ( \
133  SType##BaseModel, \
134  Type##SType##BaseModel, \
135  dictionary \
136  ); \
137  } \
138  }
139 
140 
141 #define makeTemplatedTurbulenceModel(BaseModel, SType, Type) \
142  typedef Foam::SType##Models::Type<Foam::EddyDiffusivity<Foam::BaseModel>> \
143  Type##SType##BaseModel; \
144  defineNamedTemplateTypeNameAndDebug(Type##SType##BaseModel, 0); \
145  \
146  namespace Foam \
147  { \
148  namespace SType##Models \
149  { \
150  typedef Type<EddyDiffusivity<BaseModel>> Type##SType##BaseModel; \
151  \
152  addToRunTimeSelectionTable \
153  ( \
154  SType##BaseModel, \
155  Type##SType##BaseModel, \
156  dictionary \
157  ); \
158  } \
159  }
160 
161 
162 #define makeTurbulenceModel(BaseModel, SType, Type) \
163  namespace Foam \
164  { \
165  namespace SType##Models \
166  { \
167  defineTypeNameAndDebug(Type, 0); \
168  \
169  addToRunTimeSelectionTable \
170  ( \
171  SType##BaseModel, \
172  Type, \
173  dictionary \
174  ); \
175  } \
176  }
177 
178 
179 // ************************************************************************* //
EddyDiffusivity.H