Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / thermophysicalModels / solid / thermo / exponential / exponentialSolidThermo.H
blobaef6bb42371e20443f123ce686432d364353bd8b
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 Class
25     Foam::exponentialSolidThermo
27 Description
28     Exponential thermodynamics package for solids templated into the rhoType.
30 SourceFiles
31     exponentialSolidThermoI.H
32     exponentialSolidThermo.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef exponentialSolidThermo_H
37 #define exponentialSolidThermo_H
39 #include "scalar.H"
40 #include "dictionary.H"
41 #include "specie.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 template<class rhoType> class exponentialSolidThermo;
50 template<class rhoType>
51 Ostream& operator<<
53     Ostream&,
54     const exponentialSolidThermo<rhoType>&
58 /*---------------------------------------------------------------------------*\
59                          Class exponentialSolidThermo Declaration
60 \*---------------------------------------------------------------------------*/
62 template<class rhoType>
63 class exponentialSolidThermo
65     public rhoType
68     // Private data
70         scalar c0_;
71         scalar n0_;
72         scalar Tref_;
73         scalar Hf_;
76     // Private Member Functions
78         //- Check given temperature is within the range of the fitted coeffs
79         inline void checkT(const scalar T) const;
81         //- Integrate Cp expression
82         inline scalar integrateCp(const scalar T) const;
85 public:
87     // Constructors
89         //- Construct from components
90         inline exponentialSolidThermo
91         (
92             const rhoType& st,
93             const scalar c0,
94             const scalar n0,
95             const scalar Tref,
96             const scalar Hf
97         );
99         //- Construct from dictionary
100         exponentialSolidThermo(const dictionary&);
102         //- Construct as a named copy
103         inline exponentialSolidThermo
104         (
105             const word&,
106             const exponentialSolidThermo&
107         );
110     // Member Functions
112         //- Heat capacity at constant pressure [J/(kg K)]
113         inline scalar Cp(const scalar T) const;
115         //- Enthalpy [J/kmol]
116         inline scalar h(const scalar T) const;
118         //- Sensible enthalpy [J/kg]
119         inline scalar hs(const scalar T) const;
121         //- Formation enthalpy [J/kg]
122         inline scalar hf() const;
125     // Ostream Operator
127         friend Ostream& operator<< <rhoType>
128         (
129             Ostream&,
130             const exponentialSolidThermo&
131         );
135 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
137 } // End namespace Foam
139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 #ifdef NoRepository
143 #   include "exponentialSolidThermoI.H"
144 #   include "exponentialSolidThermo.C"
145 #endif
147 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
149 #endif
151 // ************************************************************************* //