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-------------------------------------------------------------------------------
11License
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// ************************************************************************* //