incompressiblePerfectGas.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2012-2016 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 Class
25  Foam::incompressiblePerfectGas
26 
27 Description
28  Incompressible gas equation of state using a constant reference pressure in
29  the perfect gas equation of state rather than the local pressure so that the
30  density only varies with temperature and composition.
31 
32 SourceFiles
33  incompressiblePerfectGasI.H
34  incompressiblePerfectGas.C
35 
36 \*---------------------------------------------------------------------------*/
37 
38 #ifndef incompressiblePerfectGas_H
39 #define incompressiblePerfectGas_H
40 
41 #include "autoPtr.H"
42 
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 
45 namespace Foam
46 {
47 
48 // Forward declaration of friend functions and operators
49 
50 template<class Specie> class incompressiblePerfectGas;
51 
52 template<class Specie>
53 inline incompressiblePerfectGas<Specie> operator+
54 (
56  const incompressiblePerfectGas<Specie>&
57 );
58 
59 template<class Specie>
60 inline incompressiblePerfectGas<Specie> operator-
61 (
62  const incompressiblePerfectGas<Specie>&,
63  const incompressiblePerfectGas<Specie>&
64 );
65 
66 template<class Specie>
67 inline incompressiblePerfectGas<Specie> operator*
68 (
69  const scalar,
70  const incompressiblePerfectGas<Specie>&
71 );
72 
73 template<class Specie>
74 inline incompressiblePerfectGas<Specie> operator==
75 (
76  const incompressiblePerfectGas<Specie>&,
77  const incompressiblePerfectGas<Specie>&
78 );
79 
80 template<class Specie>
81 Ostream& operator<<
82 (
83  Ostream&,
84  const incompressiblePerfectGas<Specie>&
85 );
86 
87 
88 /*---------------------------------------------------------------------------*\
89  Class incompressiblePerfectGas Declaration
90 \*---------------------------------------------------------------------------*/
91 
92 template<class Specie>
94 :
95  public Specie
96 {
97  // Private data
98 
99  //- Reference pressure
100  scalar pRef_;
101 
102 
103 public:
104 
105  // Constructors
106 
107  //- Construct from components
108  inline incompressiblePerfectGas(const Specie& sp, const scalar pRef);
109 
110  //- Construct from incompressiblePerfectGas
112 
113  //- Construct from Istream
115 
116  //- Construct from dictionary
118 
119  //- Construct as named copy
121  (
122  const word& name,
124  );
125 
126  //- Construct and return a clone
128 
129  // Selector from Istream
130  inline static autoPtr<incompressiblePerfectGas> New(Istream& is);
131 
132  // Selector from dictionary
134  (
135  const dictionary& dict
136  );
137 
138 
139  // Member functions
140 
141  //- Return the instantiated type name
142  static word typeName()
143  {
144  return
145  "incompressiblePerfectGas<"
146  + word(Specie::typeName_()) + '>';
147  }
148 
149 
150  // Fundamental properties
151 
152  //- Is the equation of state is incompressible i.e. rho != f(p)
153  static const bool incompressible = true;
154 
155  //- Is the equation of state is isochoric i.e. rho = const
156  static const bool isochoric = false;
157 
158  //- Return density [kg/m^3]
159  inline scalar rho(scalar p, scalar T) const;
160 
161  //- Return enthalpy departure [J/kmol]
162  inline scalar h(const scalar p, const scalar T) const;
163 
164  //- Return cp departure [J/(kmol K]
165  inline scalar cp(scalar p, scalar T) const;
166 
167  //- Return entropy [J/(kmol K)]
168  inline scalar s(const scalar p, const scalar T) const;
169 
170  //- Return compressibility rho/p [s^2/m^2]
171  inline scalar psi(scalar p, scalar T) const;
172 
173  //- Return compression factor []
174  inline scalar Z(scalar p, scalar T) const;
175 
176  //- Return (cp - cv) [J/(kmol K]
177  inline scalar cpMcv(scalar p, scalar T) const;
178 
179 
180  // IO
181 
182  //- Write to Ostream
183  void write(Ostream& os) const;
184 
185 
186  // Member operators
187 
188  inline void operator=(const incompressiblePerfectGas&);
189  inline void operator+=(const incompressiblePerfectGas&);
190  inline void operator-=(const incompressiblePerfectGas&);
191 
192  inline void operator*=(const scalar);
193 
194 
195  // Friend operators
196 
197  friend incompressiblePerfectGas operator+ <Specie>
198  (
200  const incompressiblePerfectGas&
201  );
202 
203  friend incompressiblePerfectGas operator- <Specie>
204  (
205  const incompressiblePerfectGas&,
206  const incompressiblePerfectGas&
207  );
208 
209  friend incompressiblePerfectGas operator* <Specie>
210  (
211  const scalar s,
212  const incompressiblePerfectGas&
213  );
214 
215  friend incompressiblePerfectGas operator== <Specie>
216  (
217  const incompressiblePerfectGas&,
218  const incompressiblePerfectGas&
219  );
220 
221 
222  // Ostream Operator
223 
224  friend Ostream& operator<< <Specie>
225  (
226  Ostream&,
227  const incompressiblePerfectGas&
228  );
229 };
230 
231 
232 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
233 
234 } // End namespace Foam
235 
236 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
237 
239 
240 #ifdef NoRepository
241  #include "incompressiblePerfectGas.C"
242 #endif
243 
244 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
245 
246 #endif
247 
248 // ************************************************************************* //
scalar cpMcv(scalar p, scalar T) const
Return (cp - cv) [J/(kmol K].
void operator-=(const incompressiblePerfectGas &)
scalar cp(scalar p, scalar T) const
Return cp departure [J/(kmol K].
dictionary dict
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:137
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Definition: Istream.H:57
void write(Ostream &os) const
Write to Ostream.
Incompressible gas equation of state using a constant reference pressure in the perfect gas equation ...
void operator=(const incompressiblePerfectGas &)
void operator+=(const incompressiblePerfectGas &)
scalar rho(scalar p, scalar T) const
Return density [kg/m^3].
scalar s(const scalar p, const scalar T) const
Return entropy [J/(kmol K)].
scalar psi(scalar p, scalar T) const
Return compressibility rho/p [s^2/m^2].
A class for handling words, derived from string.
Definition: word.H:59
incompressiblePerfectGas(const Specie &sp, const scalar pRef)
Construct from components.
static const bool isochoric
Is the equation of state is isochoric i.e. rho = const.
scalar h(const scalar p, const scalar T) const
Return enthalpy departure [J/kmol].
static const bool incompressible
Is the equation of state is incompressible i.e. rho != f(p)
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:53
scalar pRef
Definition: createFields.H:19
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
word name(const complex &)
Return a string representation of a complex.
Definition: complex.C:47
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: PtrList.H:53
volScalarField & p
static autoPtr< incompressiblePerfectGas > New(Istream &is)
scalar Z(scalar p, scalar T) const
Return compression factor [].
static word typeName()
Return the instantiated type name.
autoPtr< incompressiblePerfectGas > clone() const
Construct and return a clone.
Namespace for OpenFOAM.