makeThermophysicalTransportModel.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2020-2023 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
27 
28 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
29 
30 #define makeThermophysicalTransportModelBaseType( \
31  BaseModel, MomentumTransportModel, ThermoModel) \
32  \
33  namespace Foam \
34  { \
35  typedef ThermophysicalTransportModel \
36  < \
37  MomentumTransportModel, \
38  ThermoModel \
39  > ThermophysicalTransportModel##MomentumTransportModel; \
40  \
41  typedef BaseModel<MomentumTransportModel, ThermoModel> \
42  ThermoModel##MomentumTransportModel##BaseModel; \
43  }
44 
45 
46 #define makeThermophysicalTransportModelType( \
47  BaseModel, MomentumTransportModel, ThermoModel, SType) \
48  \
49  namespace Foam \
50  { \
51  typedef SType##ThermophysicalTransportModel \
52  < \
53  ThermoModel##MomentumTransportModel##BaseModel \
54  > SType##ThermoModel##MomentumTransportModel##BaseModel; \
55  }
56 
57 
58 #define makeThermophysicalTransportModelTypes( \
59  BaseModel, MomentumTransportModel, ThermoModel) \
60  \
61  makeThermophysicalTransportModelBaseType \
62  (BaseModel, MomentumTransportModel, ThermoModel) \
63  \
64  makeThermophysicalTransportModelType \
65  (BaseModel, MomentumTransportModel, ThermoModel, laminar) \
66  \
67  makeThermophysicalTransportModelType \
68  (BaseModel, MomentumTransportModel, ThermoModel, RAS) \
69  \
70  makeThermophysicalTransportModelType \
71  (BaseModel, MomentumTransportModel, ThermoModel, LES)
72 
73 
74 #define makeThermophysicalTransportModelTable( \
75  BaseModel, MomentumTransportModel, ThermoModel) \
76  \
77  namespace Foam \
78  { \
79  defineTemplateRunTimeSelectionTable \
80  ( \
81  ThermophysicalTransportModel##MomentumTransportModel, \
82  dictionary \
83  ); \
84  }
85 
86 
87 #define makeThermophysicalTransportModelTableType( \
88  BaseModel, MomentumTransportModel, ThermoModel, SType) \
89  \
90  namespace Foam \
91  { \
92  defineNamedTemplateTypeNameAndDebug \
93  ( \
94  SType##ThermoModel##MomentumTransportModel##BaseModel, \
95  0 \
96  ); \
97  \
98  defineTemplateRunTimeSelectionTable \
99  ( \
100  SType##ThermoModel##MomentumTransportModel##BaseModel, \
101  dictionary \
102  ); \
103  \
104  addToRunTimeSelectionTable \
105  ( \
106  ThermophysicalTransportModel##MomentumTransportModel, \
107  SType##ThermoModel##MomentumTransportModel##BaseModel, \
108  dictionary \
109  ); \
110  }
111 
112 
113 #define makeThermophysicalTransportModelTables( \
114  BaseModel, MomentumTransportModel, ThermoModel) \
115  \
116  makeThermophysicalTransportModelTable \
117  (BaseModel, MomentumTransportModel, ThermoModel) \
118  \
119  makeThermophysicalTransportModelTableType \
120  (BaseModel, MomentumTransportModel, ThermoModel, laminar) \
121  \
122  makeThermophysicalTransportModelTableType \
123  (BaseModel, MomentumTransportModel, ThermoModel, RAS) \
124  \
125  makeThermophysicalTransportModelTableType \
126  (BaseModel, MomentumTransportModel, ThermoModel, LES)
127 
128 
129 #define makeThermophysicalTransportModel( \
130  BaseModel, MomentumTransportModel, ThermoModel, SType, Type) \
131  \
132  typedef Foam::SType##ThermophysicalTransportModels::Type \
133  < \
134  Foam::BaseModel<Foam::MomentumTransportModel, Foam::ThermoModel> \
135  > Type##SType##ThermoModel##ThermoModel##MomentumTransportModel##BaseModel;\
136  \
137  defineNamedTemplateTypeNameAndDebug \
138  ( \
139  Type##SType##ThermoModel##ThermoModel \
140  ##MomentumTransportModel##BaseModel, \
141  0 \
142  ); \
143  \
144  namespace Foam \
145  { \
146  namespace SType##ThermophysicalTransportModels \
147  { \
148  typedef Type<BaseModel<MomentumTransportModel, ThermoModel>> \
149  Type##SType##ThermoModel##ThermoModel \
150  ##MomentumTransportModel##BaseModel; \
151  \
152  addToRunTimeSelectionTable \
153  ( \
154  SType##ThermoModel##MomentumTransportModel##BaseModel, \
155  Type##SType##ThermoModel##ThermoModel \
156  ##MomentumTransportModel##BaseModel, \
157  dictionary \
158  ); \
159  } \
160  }
161 
162 
163 #define makeTurbulenceThermophysicalTransportModel( \
164  BaseModel, MomentumTransportModel, ThermoModel, SType, Type) \
165  \
166  typedef Foam::turbulenceThermophysicalTransportModels::Type \
167  < \
168  Foam::SType##ThermophysicalTransportModel \
169  < \
170  Foam::BaseModel<Foam::MomentumTransportModel, Foam::ThermoModel> \
171  > \
172  > Type##SType##ThermoModel##ThermoModel##MomentumTransportModel##BaseModel;\
173  \
174  defineNamedTemplateTypeNameAndDebug \
175  ( \
176  Type##SType##ThermoModel##ThermoModel \
177  ##MomentumTransportModel##BaseModel, \
178  0 \
179  ); \
180  \
181  namespace Foam \
182  { \
183  namespace turbulenceThermophysicalTransportModels \
184  { \
185  typedef Type \
186  < \
187  SType##ThermophysicalTransportModel \
188  < \
189  BaseModel<MomentumTransportModel, ThermoModel> \
190  > \
191  > Type##SType##ThermoModel##MomentumTransportModel##BaseModel; \
192  \
193  addToRunTimeSelectionTable \
194  ( \
195  SType##ThermoModel##MomentumTransportModel##BaseModel, \
196  Type##SType##ThermoModel##MomentumTransportModel##BaseModel, \
197  dictionary \
198  ); \
199  } \
200  }
201 
202 
203 // ************************************************************************* //
Macros for easy insertion into run-time selection tables.