Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / turbulenceModels / incompressible / RAS / derivedFvPatchFields / turbulentHeatFluxTemperature / turbulentHeatFluxTemperatureFvPatchScalarField.H
blobcf828453165324f8fc3e77b551578682c91a899c
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::turbulentHeatFluxTemperatureFvPatchScalarField
27 Description
28     Fixed heat boundary condition to specify temperature gradient. Input
29     heat source either specified in terms of an absolute power [W], or as a
30     flux [W/m2].
32     Example usage:
34         hotWall
35         {
36             type            turbulentHeatFluxTemperature;
37             heatSource      flux;        // power [W]; flux [W/m2]
38             q               uniform 10;  // heat power or flux
39             alphaEff        alphaEff;    // alphaEff field name;
40                                          // alphaEff in [kg/m/s]
41             Cp              Cp;          // Cp field name; Cp in [J/kg/K]
42             value           uniform 300; // initial temperature value
43         }
45 SourceFiles
46     turbulentHeatFluxTemperatureFvPatchScalarField.C
48 \*---------------------------------------------------------------------------*/
50 #ifndef turbulentHeatFluxTemperatureFvPatchScalarFields_H
51 #define turbulentHeatFluxTemperatureFvPatchScalarFields_H
53 #include "fvPatchFields.H"
54 #include "fixedGradientFvPatchFields.H"
55 #include "NamedEnum.H"
57 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
59 namespace Foam
61 namespace incompressible
64 /*---------------------------------------------------------------------------*\
65        Class turbulentHeatFluxTemperatureFvPatchScalarField Declaration
66 \*---------------------------------------------------------------------------*/
68 class turbulentHeatFluxTemperatureFvPatchScalarField
70     public fixedGradientFvPatchScalarField
72 public:
74     // Data types
76         //- Enumeration listing the possible hest source input modes
77         enum heatSourceType
78         {
79             hsPower,
80             hsFlux
81         };
84 private:
86     // Private data
88         //- Heat source type names
89         static const NamedEnum<heatSourceType, 2> heatSourceTypeNames_;
91         //- Heat source type
92         heatSourceType heatSource_;
94         //- Heat power [W] or flux [W/m2]
95         //  NOTE: to be divided by density, rho, if used in kinematic form
96         scalarField q_;
98         //- Name of effective thermal diffusivity field
99         word alphaEffName_;
101         //- Name of specific heat capacity field
102         word CpName_;
105 public:
107     //- Runtime type information
108     TypeName("turbulentHeatFluxTemperature");
111     // Constructors
113         //- Construct from patch and internal field
114         turbulentHeatFluxTemperatureFvPatchScalarField
115         (
116             const fvPatch&,
117             const DimensionedField<scalar, volMesh>&
118         );
120         //- Construct from patch, internal field and dictionary
121         turbulentHeatFluxTemperatureFvPatchScalarField
122         (
123             const fvPatch&,
124             const DimensionedField<scalar, volMesh>&,
125             const dictionary&
126         );
128         //- Construct by mapping given
129         //  turbulentHeatFluxTemperatureFvPatchScalarField onto
130         //  a new patch
131         turbulentHeatFluxTemperatureFvPatchScalarField
132         (
133             const turbulentHeatFluxTemperatureFvPatchScalarField&,
134             const fvPatch&,
135             const DimensionedField<scalar, volMesh>&,
136             const fvPatchFieldMapper&
137         );
139         //- Construct as copy
140         turbulentHeatFluxTemperatureFvPatchScalarField
141         (
142             const turbulentHeatFluxTemperatureFvPatchScalarField&
143         );
145         //- Construct and return a clone
146         virtual tmp<fvPatchScalarField> clone() const
147         {
148             return tmp<fvPatchScalarField>
149             (
150                 new turbulentHeatFluxTemperatureFvPatchScalarField(*this)
151             );
152         }
154         //- Construct as copy setting internal field reference
155         turbulentHeatFluxTemperatureFvPatchScalarField
156         (
157             const turbulentHeatFluxTemperatureFvPatchScalarField&,
158             const DimensionedField<scalar, volMesh>&
159         );
161         //- Construct and return a clone setting internal field reference
162         virtual tmp<fvPatchScalarField> clone
163         (
164             const DimensionedField<scalar, volMesh>& iF
165         ) const
166         {
167             return tmp<fvPatchScalarField>
168             (
169                 new turbulentHeatFluxTemperatureFvPatchScalarField
170                 (
171                     *this,
172                     iF
173                 )
174             );
175         }
178     // Member functions
180         // Mapping functions
182             //- Map (and resize as needed) from self given a mapping object
183             virtual void autoMap(const fvPatchFieldMapper&);
185             //- Reverse map the given fvPatchField onto this fvPatchField
186             virtual void rmap
187             (
188                 const fvPatchScalarField&,
189                 const labelList&
190             );
193         // Evaluation functions
195             //- Update the coefficients associated with the patch field
196             virtual void updateCoeffs();
199         // I-O
201             //- Write
202             virtual void write(Ostream&) const;
206 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
208 } // End namespace incompressible
209 } // End namespace Foam
211 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
213 #endif
215 // ************************************************************************* //