BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / src / finiteVolume / fields / fvPatchFields / derived / pressureNormalInletOutletVelocity / pressureNormalInletOutletVelocityFvPatchVectorField.H
blob04351a477a332ccf25edd4c9d94e9288951d977f
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::pressureNormalInletOutletVelocityFvPatchVectorField
27 Description
28     Velocity inlet/outlet boundary condition for patches where the pressure is
29     specified.  zero-gradient is applied for outflow (as defined by the flux)
30     and for inflow the velocity is obtained from the flux with a direction
31     normal to the patch faces.
33 SourceFiles
34     pressureNormalInletOutletVelocityFvPatchVectorField.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef pressureNormalInletOutletVelocityFvPatchVectorField_H
39 #define pressureNormalInletOutletVelocityFvPatchVectorField_H
41 #include "fvPatchFields.H"
42 #include "mixedFvPatchFields.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 /*---------------------------------------------------------------------------*\
50           Class pressureNormalInletOutletVelocityFvPatch Declaration
51 \*---------------------------------------------------------------------------*/
53 class pressureNormalInletOutletVelocityFvPatchVectorField
55     public mixedFvPatchVectorField
57     // Private data
59         word phiName_;
60         word rhoName_;
63 public:
65     //- Runtime type information
66     TypeName("pressureNormalInletOutletVelocity");
69     // Constructors
71         //- Construct from patch and internal field
72         pressureNormalInletOutletVelocityFvPatchVectorField
73         (
74             const fvPatch&,
75             const DimensionedField<vector, volMesh>&
76         );
78         //- Construct from patch, internal field and dictionary
79         pressureNormalInletOutletVelocityFvPatchVectorField
80         (
81             const fvPatch&,
82             const DimensionedField<vector, volMesh>&,
83             const dictionary&
84         );
86         //- Construct by mapping given
87         //  pressureNormalInletOutletVelocityFvPatchVectorField
88         //  onto a new patch
89         pressureNormalInletOutletVelocityFvPatchVectorField
90         (
91             const pressureNormalInletOutletVelocityFvPatchVectorField&,
92             const fvPatch&,
93             const DimensionedField<vector, volMesh>&,
94             const fvPatchFieldMapper&
95         );
97         //- Construct as copy
98         pressureNormalInletOutletVelocityFvPatchVectorField
99         (
100             const pressureNormalInletOutletVelocityFvPatchVectorField&
101         );
103         //- Construct and return a clone
104         virtual tmp<fvPatchVectorField> clone() const
105         {
106             return tmp<fvPatchVectorField>
107             (
108                 new pressureNormalInletOutletVelocityFvPatchVectorField
109                 (
110                     *this
111                 )
112             );
113         }
115         //- Construct as copy setting internal field reference
116         pressureNormalInletOutletVelocityFvPatchVectorField
117         (
118             const pressureNormalInletOutletVelocityFvPatchVectorField&,
119             const DimensionedField<vector, volMesh>&
120         );
122         //- Construct and return a clone setting internal field reference
123         virtual tmp<fvPatchVectorField> clone
124         (
125             const DimensionedField<vector, volMesh>& iF
126         ) const
127         {
128             return tmp<fvPatchVectorField>
129             (
130                 new pressureNormalInletOutletVelocityFvPatchVectorField
131                 (
132                     *this,
133                     iF
134                 )
135             );
136         }
139     // Member functions
141         // Access
143             //- Return the name of rho
144             const word& rhoName() const
145             {
146                 return rhoName_;
147             }
149             //- Return reference to the name of rho to allow adjustment
150             word& rhoName()
151             {
152                 return rhoName_;
153             }
155             //- Return the name of phi
156             const word& phiName() const
157             {
158                 return phiName_;
159             }
162             //- Return reference to the name of phi to allow adjustment
163             word& phiName()
164             {
165                 return phiName_;
166             }
169         //- Update the coefficients associated with the patch field
170         virtual void updateCoeffs();
172         //- Write
173         virtual void write(Ostream&) const;
176     // Member operators
178         virtual void operator=(const fvPatchField<vector>& pvf);
182 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
184 } // End namespace Foam
186 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
188 #endif
190 // ************************************************************************* //