Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / thermophysicalModels / solid / reaction / reactions / makeSolidReactionThermo.H
blob5a3307cdc321f0dd5653d981d1bf0cbbdc8a74a3
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
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.
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.
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/>.
24 InClass
25     Foam::makeSolidReactionThermo
27 Description
28     Macros for instantiating reactions on given solid thermo packages
30 \*---------------------------------------------------------------------------*/
32 #ifndef makeReactionThermo_H
33 #define makeReactionThermo_H
35 #include "solidReaction.H"
36 #include "IrreversibleSolidReaction.H"
37 #include "addToRunTimeSelectionTable.H"
39 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
41 namespace Foam
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 #define makeReaction(ReactionType, ReactionRate)                              \
47                                                                               \
48     typedef solidReaction Reaction;                                           \
49                                                                               \
50     typedef ReactionType<ReactionRate>                                        \
51         ReactionType##ReactionRate;                                           \
52                                                                               \
53     template<>                                                                \
54     const word ReactionType##ReactionRate::typeName                           \
55     (                                                                         \
56         ReactionType::typeName_()                                             \
57       + ReactionRate::type()                                                  \
58       + Reaction::typeName_()                                                 \
59     );                                                                        \
60                                                                               \
61     addToRunTimeSelectionTable                                                \
62     (                                                                         \
63         Reaction,                                                             \
64         ReactionType##ReactionRate,                                           \
65         Istream                                                               \
66     );
69 #define makeIRReactions(ReactionRate)                                         \
70                                                                               \
71     makeReaction(IrreversibleSolidReaction, ReactionRate)
74 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
76 } // End namespace Foam
78 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
80 #endif
83 // ************************************************************************* //