Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / thermophysicalModels / specie / equationOfState / perfectGas / perfectGas.H
blob0ed28737d10a927c72e76bfe3f5f48e77c96a0a4
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-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::perfectGas
27 Description
28     Perfect gas equation of state.
30 SourceFiles
31     perfectGasI.H
32     perfectGas.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef perfectGas_H
37 #define perfectGas_H
39 #include "specie.H"
40 #include "autoPtr.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                            Class perfectGas Declaration
49 \*---------------------------------------------------------------------------*/
51 class perfectGas
53     public specie
56 public:
58     // Constructors
60         //- Construct from components
61         inline perfectGas(const specie& sp);
63         //- Construct from Istream
64         perfectGas(Istream&);
66         //- Construct from dictionary
67         perfectGas(const dictionary& dict);
69         //- Construct as named copy
70         inline perfectGas(const word& name, const perfectGas&);
72         //- Construct and return a clone
73         inline autoPtr<perfectGas> clone() const;
75         // Selector from Istream
76         inline static autoPtr<perfectGas> New(Istream& is);
78         // Selector from dictionary
79         inline static autoPtr<perfectGas> New(const dictionary& dict);
82     // Member functions
84         // Fundamental properties
86             //- Return density [kg/m^3]
87             inline scalar rho(scalar p, scalar T) const;
89             //- Return compressibility rho/p [s^2/m^2]
90             inline scalar psi(scalar p, scalar T) const;
92             //- Return compression factor []
93             inline scalar Z(scalar p, scalar T) const;
96         // I-O
98             //- Write to Ostream
99             void write(Ostream& os) const;
102     // Member operators
104         inline void operator+=(const perfectGas&);
105         inline void operator-=(const perfectGas&);
107         inline void operator*=(const scalar);
110     // Friend operators
112         inline friend perfectGas operator+
113         (
114             const perfectGas&,
115             const perfectGas&
116         );
118         inline friend perfectGas operator-
119         (
120             const perfectGas&,
121             const perfectGas&
122         );
124         inline friend perfectGas operator*
125         (
126             const scalar s,
127             const perfectGas&
128         );
130         inline friend perfectGas operator==
131         (
132             const perfectGas&,
133             const perfectGas&
134         );
137     // Ostream Operator
139         friend Ostream& operator<<(Ostream&, const perfectGas&);
143 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
145 } // End namespace Foam
147 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
149 #include "perfectGasI.H"
151 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
153 #endif
155 // ************************************************************************* //