Transferred copyright to the OpenFOAM Foundation
[OpenFOAM-2.0.x.git] / src / finiteVolume / fields / fvPatchFields / derived / fanPressure / fanPressureFvPatchScalarField.H
blob9720684193fbc02b801c5dc879938aede599442b
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::fanPressureFvPatchScalarField
27 Description
28     Assigns pressure inlet or outlet total pressure condition for a fan.
30     User specifies:
31     - pressure drop vs volumetric flow rate table (fan curve) file name;
32     - direction of normal flow through the fan, in or out;
33     - total pressure of the environment.
35     Example of the boundary condition specification:
36     \verbatim
37         inlet
38         {
39             type            fanPressure;
40             fileName        "fanCurve"; // Fan curve file name
41             outOfBounds     clamp;      // (error|warn|clamp|repeat)
42             direction       in;         // Direction of flow through fan
43             p0              uniform 0;  // Environmental total pressure
44             value           uniform 0;  // Initial pressure
45         }
47         outlet
48         {
49             type            fanPressure;
50             fileName        "fanCurve"; // Fan curve file name
51             outOfBounds     clamp;      // (error|warn|clamp|repeat)
52             direction       out;        // Direction of flow through fan
53             p0              uniform 0;  // Environmental total pressure
54             value           uniform 0;  // Initial pressure
55         }
56     \endverbatim
58 See Also
59     Foam::totalPressureFvPatchScalarField and
60     Foam::interpolationTable
62 SourceFiles
63     fanPressureFvPatchScalarField.C
65 \*---------------------------------------------------------------------------*/
67 #ifndef fanPressureFvPatchScalarField_H
68 #define fanPressureFvPatchScalarField_H
70 #include "totalPressureFvPatchScalarField.H"
71 #include "interpolationTable.H"
73 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
75 namespace Foam
78 /*---------------------------------------------------------------------------*\
79               Class fanPressureFvPatchScalarField Declaration
80 \*---------------------------------------------------------------------------*/
82 class fanPressureFvPatchScalarField
84     public totalPressureFvPatchScalarField
87 public:
89         //- Fan flow direction
90         enum fanFlowDirection
91         {
92             ffdIn,
93             ffdOut
94         };
96         static const NamedEnum<fanFlowDirection, 2> fanFlowDirectionNames_;
98 private:
100     // Private data
102         //- Tabulated fan curve
103         interpolationTable<scalar> fanCurve_;
105         //- Direction of flow through the fan relative to patch
106         fanFlowDirection direction_;
109 public:
111     //- Runtime type information
112     TypeName("fanPressure");
115     // Constructors
117         //- Construct from patch and internal field
118         fanPressureFvPatchScalarField
119         (
120             const fvPatch&,
121             const DimensionedField<scalar, volMesh>&
122         );
124         //- Construct from patch, internal field and dictionary
125         fanPressureFvPatchScalarField
126         (
127             const fvPatch&,
128             const DimensionedField<scalar, volMesh>&,
129             const dictionary&
130         );
132         //- Construct by mapping given
133         //  fanPressureFvPatchScalarField
134         //  onto a new patch
135         fanPressureFvPatchScalarField
136         (
137             const fanPressureFvPatchScalarField&,
138             const fvPatch&,
139             const DimensionedField<scalar, volMesh>&,
140             const fvPatchFieldMapper&
141         );
143         //- Construct as copy
144         fanPressureFvPatchScalarField
145         (
146             const fanPressureFvPatchScalarField&
147         );
149         //- Construct and return a clone
150         virtual tmp<fvPatchScalarField> clone() const
151         {
152             return tmp<fvPatchScalarField>
153             (
154                 new fanPressureFvPatchScalarField(*this)
155             );
156         }
158         //- Construct as copy setting internal field reference
159         fanPressureFvPatchScalarField
160         (
161             const fanPressureFvPatchScalarField&,
162             const DimensionedField<scalar, volMesh>&
163         );
165         //- Construct and return a clone setting internal field reference
166         virtual tmp<fvPatchScalarField> clone
167         (
168             const DimensionedField<scalar, volMesh>& iF
169         ) const
170         {
171             return tmp<fvPatchScalarField>
172             (
173                 new fanPressureFvPatchScalarField
174                 (
175                     *this,
176                     iF
177                 )
178             );
179         }
182     // Member functions
184         //- Update the coefficients associated with the patch field
185         virtual void updateCoeffs();
187         //- Write
188         virtual void write(Ostream&) const;
192 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
194 } // End namespace Foam
196 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
198 #endif
200 // ************************************************************************* //