ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / thermophysicalModels / basic / basicThermo / basicThermo.H
blobaa331ded7e1a86f57e98ca4b17757c91af04d9eb
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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::basicThermo
27 Description
28     Basic thermodynamic properties
30 SourceFiles
31     basicThermo.C
32     newBasicThermo.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef basicThermo_H
37 #define basicThermo_H
39 #include "volFields.H"
40 #include "typeInfo.H"
41 #include "IOdictionary.H"
42 #include "autoPtr.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 /*---------------------------------------------------------------------------*\
50                         Class basicThermo Declaration
51 \*---------------------------------------------------------------------------*/
53 class basicThermo
55     public IOdictionary
58 protected:
60     // Protected data
62         // Fields
64             //- Pressure [Pa]
65             volScalarField p_;
67             //- Compressibility [s^2/m^2]
68             volScalarField psi_;
70             //- Temperature [K]
71             volScalarField T_;
73             //- Laminar dynamic viscosity [kg/m/s]
74             volScalarField mu_;
76             //- Laminar thermal diffusuvity [kg/m/s]
77             volScalarField alpha_;
80     // Protected Member Functions
82         // Enthalpy
84             //- Return the enthalpy field boundary types by interrogating the
85             //  temperature field boundary types
86             wordList hBoundaryTypes();
88             //- Correct the enthalpy field boundaries
89             void hBoundaryCorrection(volScalarField& h);
92         // Internal energy
94             //- Return the internal energy  field boundary types by
95             //  interrogating the temperature field boundary types
96             wordList eBoundaryTypes();
98             //- Correct the internal energy field boundaries
99             void eBoundaryCorrection(volScalarField& e);
102         //- Construct as copy (not implemented)
103         basicThermo(const basicThermo&);
106 public:
108     //- Runtime type information
109     TypeName("basicThermo");
112     // Constructors
114         //- Construct from mesh
115         basicThermo(const fvMesh&);
118     //- Destructor
119     virtual ~basicThermo();
122     // Member functions
124         //- Update properties
125         virtual void correct() = 0;
128         // Access to thermodynamic state variables
130             //- Pressure [Pa]
131             //  Non-const access allowed for transport equations
132             virtual volScalarField& p();
134             //- Pressure [Pa]
135             virtual const volScalarField& p() const;
137             //- Density [kg/m^3]
138             virtual tmp<volScalarField> rho() const = 0;
140             //- Compressibility [s^2/m^2]
141             virtual const volScalarField& psi() const;
143             //- Total enthalpy [J/kg]
144             //  Non-const access allowed for transport equations
145             virtual volScalarField& h();
147             //- Total enthalpy [J/kg]
148             virtual const volScalarField& h() const;
150             //- Total enthalpy for cell-set [J/kg]
151             virtual tmp<scalarField> h
152             (
153                 const scalarField& T,
154                 const labelList& cells
155             ) const;
157             //- Total enthalpy for patch [J/kg]
158             virtual tmp<scalarField> h
159             (
160                 const scalarField& T,
161                 const label patchi
162             ) const;
164             //- Sensible enthalpy [J/kg]
165             //  Non-const access allowed for transport equations
166             virtual volScalarField& hs();
168             //- Sensible enthalpy [J/kg]
169             virtual const volScalarField& hs() const;
171             //- Sensible enthalpy for cell-set [J/kg]
172             virtual tmp<scalarField> hs
173             (
174                 const scalarField& T,
175                 const labelList& cells
176             ) const;
178             //- Sensible enthalpy for patch [J/kg]
179             virtual tmp<scalarField> hs
180             (
181                 const scalarField& T,
182                 const label patchi
183             ) const;
185             //- Chemical enthalpy [J/kg]
186             virtual tmp<volScalarField> hc() const;
188             //- Internal energy [J/kg]
189             //  Non-const access allowed for transport equations
190             virtual volScalarField& e();
192             //- Internal energy [J/kg]
193             virtual const volScalarField& e() const;
195             //- Internal energy for cell-set [J/kg]
196             virtual tmp<scalarField> e
197             (
198                 const scalarField& T,
199                 const labelList& cells
200             ) const;
202             //- Internal energy for patch [J/kg]
203             virtual tmp<scalarField> e
204             (
205                 const scalarField& T,
206                 const label patchi
207             ) const;
210         // Fields derived from thermodynamic state variables
212             //- Temperature [K]
213             virtual const volScalarField& T() const;
215             //- Heat capacity at constant pressure for patch [J/kg/K]
216             virtual tmp<scalarField> Cp
217             (
218                 const scalarField& T,
219                 const label patchi
220             ) const;
222             //- Heat capacity at constant pressure [J/kg/K]
223             virtual tmp<volScalarField> Cp() const;
225             //- Heat capacity at constant volume for patch [J/kg/K]
226             virtual tmp<scalarField> Cv
227             (
228                 const scalarField& T,
229                 const label patchi
230             ) const;
232             //- Heat capacity at constant volume [J/kg/K]
233             virtual tmp<volScalarField> Cv() const;
236         // Access to transport state variables
238             //- Dynamic viscosity of mixture [kg/m/s]
239             virtual const volScalarField& mu() const;
241             //- Thermal diffusivity for enthalpy of mixture [kg/m/s]
242             virtual const volScalarField& alpha() const;
245         //- Read thermophysicalProperties dictionary
246         virtual bool read();
250 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
252 } // End namespace Foam
254 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
256 #endif
258 // ************************************************************************* //