Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / applications / solvers / heatTransfer / chtMultiRegionFoam / coupledDerivedFvPatchFields / externalWallHeatFluxTemperature / externalWallHeatFluxTemperatureFvPatchScalarField.H
blob2df7613542a0c0e23201d9823f8fc70a3ea29e84
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011-2011 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     externalWallHeatFluxTemperatureFvPatchScalarField
27 Description
28     Heat flux boundary condition for temperature on external wall.
30     If h and Ta are specified then fixed_heat_transfer_coefficient mode is used
31     If q is specified then fixed_heat_flux is used.
33     Example usage:
34         myWallPatch
35         {
36             type            externalWallHeatFluxTemperature;
37             K               solidThermo;       // solidThermo or lookup
38             q               uniform 1000;      // Heat flux / [W/m2]
39             Ta              uniform 300.0;     // Tambient temperature /[K]
40             h               uniform 10.0;      // Heat transfer coeff /[W/Km2]
41             value           uniform 300.0;     // Initial temperature / [K]
42             KName           none;
43         }
45 Note:
46     Only the pair h, Ta or q can be specified in the dictionary.
49 SourceFiles
50     externalWallHeatFluxTemperatureFvPatchScalarField.C
52 \*---------------------------------------------------------------------------*/
54 #ifndef solidWallHeatFluxTemperatureFvPatchScalarField_H
55 #define solidWallHeatFluxTemperatureFvPatchScalarField_H
57 #include "mixedFvPatchFields.H"
58 #include "temperatureCoupledBase.H"
60 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
62 namespace Foam
65 /*---------------------------------------------------------------------------*\
66       Class externalWallHeatFluxTemperatureFvPatchScalarField Declaration
67 \*---------------------------------------------------------------------------*/
69 class externalWallHeatFluxTemperatureFvPatchScalarField
71     public mixedFvPatchScalarField,
72     public temperatureCoupledBase
74 public:
76     // Public data
78         //- Operation mode enumeration
79         enum operationMode
80         {
81             fixedHeatFlux,
82             fixedHeatTransferCoeff,
83             unknown
84         };
85         static const NamedEnum<operationMode, 3> operationModeNames;
88 private:
90     // Private data
92         //- Operation mode
93         operationMode oldMode_;
95         //- Heat flux / [W/m2]
96         scalarField q_;
98         //- Heat transfer coefficient / [W/m2K]
99         scalarField h_;
101         //- Ambient temperature / [K]
102         scalarField Ta_;
105 public:
107     //- Runtime type information
108     TypeName("externalWallHeatFluxTemperature");
111     // Constructors
113         //- Construct from patch and internal field
114         externalWallHeatFluxTemperatureFvPatchScalarField
115         (
116             const fvPatch&,
117             const DimensionedField<scalar, volMesh>&
118         );
120         //- Construct from patch, internal field and dictionary
121         externalWallHeatFluxTemperatureFvPatchScalarField
122         (
123             const fvPatch&,
124             const DimensionedField<scalar, volMesh>&,
125             const dictionary&
126         );
128         //- Construct by mapping given
129         // externalWallHeatFluxTemperatureFvPatchScalarField
130         // onto a new patch
131         externalWallHeatFluxTemperatureFvPatchScalarField
132         (
133             const externalWallHeatFluxTemperatureFvPatchScalarField&,
134             const fvPatch&,
135             const DimensionedField<scalar, volMesh>&,
136             const fvPatchFieldMapper&
137         );
139         //- Construct as copy
140         externalWallHeatFluxTemperatureFvPatchScalarField
141         (
142             const externalWallHeatFluxTemperatureFvPatchScalarField&
143         );
145         //- Construct and return a clone
146         virtual tmp<fvPatchScalarField> clone() const
147         {
148             return tmp<fvPatchScalarField>
149             (
150                 new externalWallHeatFluxTemperatureFvPatchScalarField(*this)
151             );
152         }
154         //- Construct as copy setting internal field reference
155         externalWallHeatFluxTemperatureFvPatchScalarField
156         (
157             const externalWallHeatFluxTemperatureFvPatchScalarField&,
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 externalWallHeatFluxTemperatureFvPatchScalarField(*this, iF)
170             );
171         }
174     // Member functions
176         // Evaluation functions
178             //- Update the coefficients associated with the patch field
179             virtual void updateCoeffs();
181         // I-O
183             //- Write
184             void write(Ostream&) const;
188 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
190 } // End namespace Foam
192 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
194 #endif
196 // ************************************************************************* //