makeMulticomponentThermo.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) 2011-2022 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 
26 #ifndef makeMulticomponentThermo_H
27 #define makeMulticomponentThermo_H
28 
29 #include "makeThermo.H"
30 #include "SpecieMixture.H"
31 
32 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
33 
34 #define defineMulticomponentThermo( \
35  BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys) \
36  \
37  typedef CThermo \
38  < \
39  BaseMulticomponentThermo::composite, \
40  SpecieMixture \
41  < \
42  Mixture \
43  < \
44  ThermoPhys \
45  > \
46  > \
47  > CThermo##Mixture##ThermoPhys; \
48  \
49  defineTemplateTypeNameAndDebugWithName \
50  ( \
51  CThermo##Mixture##ThermoPhys, \
52  ( \
53  word(CThermo##Mixture##ThermoPhys::typeName_()) + "<" \
54  + Mixture<ThermoPhys>::typeName() + ">" \
55  ).c_str(), \
56  0 \
57  )
58 
59 
60 #define addMulticomponentThermo( \
61  BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys) \
62  \
63  addThermo(BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys)
64 
65 
66 #define makeMulticomponentThermo( \
67  BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys) \
68  \
69  defineMulticomponentThermo \
70  (BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys); \
71  \
72  addMulticomponentThermo \
73  (fluidMulticomponentThermo, CThermo, Mixture, ThermoPhys); \
74  \
75  addMulticomponentThermo \
76  (BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys)
77 
78 
79 #define makeMulticomponentThermos( \
80  BaseThermo, BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys) \
81  \
82  defineMulticomponentThermo \
83  (BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys); \
84  \
85  addMulticomponentThermo(basicThermo, CThermo, Mixture, ThermoPhys); \
86  addMulticomponentThermo(fluidThermo, CThermo, Mixture, ThermoPhys); \
87  addMulticomponentThermo(BaseThermo, CThermo, Mixture, ThermoPhys); \
88  \
89  addMulticomponentThermo \
90  (fluidMulticomponentThermo, CThermo, Mixture, ThermoPhys); \
91  \
92  addMulticomponentThermo \
93  (BaseMulticomponentThermo, CThermo, Mixture, ThermoPhys)
94 
95 
96 #define makePsiuMulticomponentThermo(Mixture, ThermoPhys) \
97  \
98  defineMulticomponentThermo \
99  ( \
100  psiuMulticomponentThermo, \
101  heheuPsiThermo, \
102  Mixture, \
103  ThermoPhys \
104  ); \
105  \
106  addThermo(psiuMulticomponentThermo, heheuPsiThermo, Mixture, ThermoPhys)
107 
108 
109 #define makePsiuMulticomponentThermos(Mixture, ThermoPhys) \
110  \
111  defineMulticomponentThermo \
112  ( \
113  psiuMulticomponentThermo, \
114  heheuPsiThermo, \
115  Mixture, \
116  ThermoPhys \
117  ); \
118  \
119  addThermo(basicThermo, heheuPsiThermo, Mixture, ThermoPhys); \
120  addThermo(fluidThermo, heheuPsiThermo, Mixture, ThermoPhys); \
121  addThermo(psiThermo, heheuPsiThermo, Mixture, ThermoPhys); \
122  addThermo(psiuMulticomponentThermo, heheuPsiThermo, Mixture, ThermoPhys)
123 
124 
125 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
126 
127 #endif
128 
129 // ************************************************************************* //
Macros for creating basic fluid thermo packages.