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 -------------------------------------------------------------------------------
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 "EddyDiffusivity.H"
29 
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 
32 #define makeTurbulenceModelTypes( \
33  Alpha, Rho, baseModel, BaseModel, TDModel, Transport) \
34  \
35  namespace Foam \
36  { \
37  typedef TDModel<BaseModel<Transport>> \
38  Transport##BaseModel; \
39  typedef laminarModel<Transport##BaseModel> \
40  laminar##Transport##BaseModel; \
41  typedef RASModel<EddyDiffusivity<Transport##BaseModel>> \
42  RAS##Transport##BaseModel; \
43  typedef LESModel<EddyDiffusivity<Transport##BaseModel>> \
44  LES##Transport##BaseModel; \
45  }
46 
47 
48 #define makeBaseTurbulenceModel( \
49  Alpha, Rho, baseModel, BaseModel, TDModel, Transport) \
50  \
51  namespace Foam \
52  { \
53  typedef TurbulenceModel \
54  < \
55  Alpha, \
56  Rho, \
57  baseModel, \
58  Transport \
59  > Transport##baseModel; \
60  \
61  defineTemplateRunTimeSelectionTable \
62  ( \
63  Transport##baseModel, \
64  dictionary \
65  ); \
66  \
67  typedef TDModel<BaseModel<Transport>> \
68  Transport##BaseModel; \
69  \
70  \
71  typedef laminarModel<Transport##BaseModel> \
72  laminar##Transport##BaseModel; \
73  \
74  defineNamedTemplateTypeNameAndDebug(laminar##Transport##BaseModel, 0); \
75  \
76  defineTemplateRunTimeSelectionTable \
77  (laminar##Transport##BaseModel, dictionary); \
78  \
79  addToRunTimeSelectionTable \
80  ( \
81  Transport##baseModel, \
82  laminar##Transport##BaseModel, \
83  dictionary \
84  ); \
85  \
86  \
87  typedef RASModel<EddyDiffusivity<Transport##BaseModel>> \
88  RAS##Transport##BaseModel; \
89  \
90  defineNamedTemplateTypeNameAndDebug(RAS##Transport##BaseModel, 0); \
91  \
92  defineTemplateRunTimeSelectionTable \
93  (RAS##Transport##BaseModel, dictionary); \
94  \
95  addToRunTimeSelectionTable \
96  ( \
97  Transport##baseModel, \
98  RAS##Transport##BaseModel, \
99  dictionary \
100  ); \
101  \
102  \
103  typedef LESModel<EddyDiffusivity<Transport##BaseModel>> \
104  LES##Transport##BaseModel; \
105  \
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