1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | foam-extend: Open Source CFD
4 \\ / O peration | Version: 3.2
5 \\ / A nd | Web: http://www.foam-extend.org
6 \\/ M anipulation | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
9 This file is part of foam-extend.
11 foam-extend is free software: you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation, either version 3 of the License, or (at your
14 option) any later version.
16 foam-extend is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
28 Abstract class for reading chemistry
33 \*---------------------------------------------------------------------------*/
35 #ifndef chemistryReader_H
36 #define chemistryReader_H
39 #include "runTimeSelectionTables.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 /*---------------------------------------------------------------------------*\
48 Class chemistryReader Declaration
49 \*---------------------------------------------------------------------------*/
51 template<class ThermoType>
54 // Private Member Functions
56 //- Disallow default bitwise copy construct
57 chemistryReader(const chemistryReader&);
59 //- Disallow default bitwise assignment
60 void operator=(const chemistryReader&);
65 //- Runtime type information
66 TypeName("chemistryReader");
68 //- The type of thermo package the reader was instantiated for
69 typedef ThermoType thermoType;
79 // Declare run-time constructor selection table
81 declareRunTimeSelectionTable
87 const dictionary& thermoDict
95 //- Select constructed from dictionary
96 static autoPtr<chemistryReader> New(const dictionary& thermoDict);
100 virtual ~chemistryReader()
106 virtual const speciesTable& species() const = 0;
108 // Bug fix: cannot be named speciesThermo because of name clash
109 // with the speciesThermo class. HJ, 21/Sep/2010
110 virtual const HashPtrTable<ThermoType>& sThermo() const = 0;
112 virtual const SLPtrList<Reaction<ThermoType> >& reactions() const = 0;
116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
118 } // End namespace Foam
120 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
122 #define makeChemistryReader(Thermo) \
124 defineTemplateTypeNameAndDebug \
126 chemistryReader<Thermo>, \
130 defineTemplateRunTimeSelectionTable(chemistryReader<Thermo>, dictionary);
133 #define makeChemistryReaderType(SS, Thermo) \
135 defineNamedTemplateTypeNameAndDebug(SS<Thermo>, 0); \
137 chemistryReader<Thermo>::adddictionaryConstructorToTable<SS<Thermo> > \
138 add##SS##Thermo##ConstructorToTable_;
141 #define addChemistryReaderType(SS, Thermo) \
143 defineTypeNameAndDebug(SS, 0); \
145 chemistryReader<Thermo>::adddictionaryConstructorToTable<SS> \
146 add##SS##Thermo##ConstructorToTable_;
149 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
152 # include "chemistryReader.C"
155 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
159 // ************************************************************************* //