Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / thermophysicalModels / solids / solid / solid.H
blobab23134820016f8a8df8f915c9616c94783bf40b
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::solid
27 Description
28     The thermophysical properties of a solid
30 SourceFiles
31     solid.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef solid_H
36 #define solid_H
38 #include "typeInfo.H"
39 #include "autoPtr.H"
40 #include "runTimeSelectionTables.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 class solid;
49 Ostream& operator<<
51      Ostream&,
52      const solid&
56 /*---------------------------------------------------------------------------*\
57                             Class solid Declaration
58 \*---------------------------------------------------------------------------*/
60 class solid
63     // Private data
65         //- Density [kg/m3]
66         scalar rho_;
68         //- Specific heat capacity [J/(kg.K)]
69         scalar cp_;
71         //- Thermal conductivity [W/(m.K)]
72         scalar K_;
74         //- Heat of formation [J/kg]
75         scalar Hf_;
77         //- Emissivity
78         scalar emissivity_;
81 public:
83     //- Runtime type information
84     TypeName("solid");
87     // Declare run-time constructor selection tables
89     declareRunTimeSelectionTable
90     (
91         autoPtr,
92         solid,
93         ,
94         (),
95         ()
96     );
98     declareRunTimeSelectionTable
99     (
100         autoPtr,
101         solid,
102         Istream,
103         (Istream& is),
104         (is)
105     );
108     // Constructors
110         //- Construct from components
111         solid
112         (
113             scalar rho,
114             scalar cp,
115             scalar K,
116             scalar Hf,
117             scalar emissivity
118         );
120         //- Construct from Istream
121         solid(Istream& is);
123         //- Return a pointer to a new solid created from input
124         static autoPtr<solid> New(Istream& is);
127     // Destructor
129         virtual ~solid()
130         {}
133     // Member Functions
135         // Phisical constants which define the solid
137             //- Density [kg/m3]
138             inline scalar rho() const;
140             //- Specific heat capacity [J/(kg.K)]
141             inline scalar cp() const;
143             //- Thermal conductivity [W/(m.K)]
144             inline scalar K() const;
146             //- Heat of formation [J/kg]
147             inline scalar Hf() const;
149             //- Emissivity []
150             inline scalar emissivity() const;
153         // I-O
155             //- Write the solid properties
156             virtual void writeData(Ostream& os) const;
159         // Ostream Operator
161         friend Ostream& operator<<(Ostream& os, const solid& s);
165 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167 #include "solidI.H"
169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
171 } // End namespace Foam
173 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
175 #endif
177 // ************************************************************************* //