Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / thermophysicalModels / basic / psiThermo / hPsiThermo / hPsiThermo.H
blob9e042da40f6815b652c68be8c40a65dcbe08dfe6
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::hPsiThermo
27 Description
28     Enthalpy for a mixture based on compressibility
30 SourceFiles
31     hPsiThermo.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef hPsiThermo_H
36 #define hPsiThermo_H
38 #include "basicPsiThermo.H"
39 #include "basicMixture.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                          Class hPsiThermo Declaration
48 \*---------------------------------------------------------------------------*/
50 template<class MixtureType>
51 class hPsiThermo
53     public basicPsiThermo,
54     public MixtureType
56     // Private data
58         //- Enthalpy field
59         volScalarField h_;
62     // Private Member Functions
64         //- Calculate the thermo variables
65         void calculate();
67         //- Construct as copy (not implemented)
68         hPsiThermo(const hPsiThermo<MixtureType>&);
71 public:
73     //- Runtime type information
74     TypeName("hPsiThermo");
77     // Constructors
79         //- Construct from mesh
80         hPsiThermo(const fvMesh&);
83     //- Destructor
84     virtual ~hPsiThermo();
87     // Member functions
89         //- Return the compostion of the mixture
90         virtual basicMixture& composition()
91         {
92             return *this;
93         }
95         //- Return the compostion of the mixture
96         virtual const basicMixture& composition() const
97         {
98             return *this;
99         }
101         //- Update properties
102         virtual void correct();
105         // Access to thermodynamic state variables
107             //- Enthalpy [J/kg]
108             //  Non-const access allowed for transport equations
109             virtual volScalarField& h()
110             {
111                 return h_;
112             }
114             //- Enthalpy [J/kg]
115             virtual const volScalarField& h() const
116             {
117                 return h_;
118             }
121         // Fields derived from thermodynamic state variables
123             //- Enthalpy for cell-set [J/kg]
124             virtual tmp<scalarField> h
125             (
126                 const scalarField& T,
127                 const labelList& cells
128             ) const;
130             //- Enthalpy for patch [J/kg]
131             virtual tmp<scalarField> h
132             (
133                 const scalarField& T,
134                 const label patchi
135             ) const;
137             //- Heat capacity at constant pressure for patch [J/kg/K]
138             virtual tmp<scalarField> Cp
139             (
140                 const scalarField& T,
141                 const label patchi
142             ) const;
144             //- Heat capacity at constant pressure [J/kg/K]
145             virtual tmp<volScalarField> Cp() const;
147             //- Heat capacity at constant volume for patch [J/kg/K]
148             virtual tmp<scalarField> Cv
149             (
150                 const scalarField& T,
151                 const label patchi
152             ) const;
154             //- Heat capacity at constant volume [J/kg/K]
155             virtual tmp<volScalarField> Cv() const;
158         //- Read thermophysicalProperties dictionary
159         virtual bool read();
163 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
165 } // End namespace Foam
167 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
169 #ifdef NoRepository
170 #   include "hPsiThermo.C"
171 #endif
173 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
175 #endif
177 // ************************************************************************* //