Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / finiteVolume / fields / fvPatchFields / derived / uniformDensityHydrostaticPressure / uniformDensityHydrostaticPressureFvPatchScalarField.H
blob9122c533155acce5233cab259f9f24098c9c6a16
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2009-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     Foam::uniformDensityHydrostaticPressureFvPatchScalarField
27 Description
28     Hydrostatic pressure boundary condition calculated as
30     pRefValue + rho*g.(x - pRefPoint)
32     where rho is provided and assumed uniform.
34 SourceFiles
35     uniformDensityHydrostaticPressureFvPatchScalarField.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef uniformDensityHydrostaticPressureFvPatchScalarField_H
40 #define uniformDensityHydrostaticPressureFvPatchScalarField_H
42 #include "fixedValueFvPatchFields.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 /*---------------------------------------------------------------------------*\
50           Class uniformDensityHydrostaticPressureFvPatch Declaration
51 \*---------------------------------------------------------------------------*/
53 class uniformDensityHydrostaticPressureFvPatchScalarField
55     public fixedValueFvPatchScalarField
57     // Private data
59         //- Constant density in the far-field
60         scalar rho_;
62         //- Reference pressure
63         scalar pRefValue_;
65         //- Reference pressure location
66         vector pRefPoint_;
69 public:
71     //- Runtime type information
72     TypeName("uniformDensityHydrostaticPressure");
75     // Constructors
77         //- Construct from patch and internal field
78         uniformDensityHydrostaticPressureFvPatchScalarField
79         (
80             const fvPatch&,
81             const DimensionedField<scalar, volMesh>&
82         );
84         //- Construct from patch, internal field and dictionary
85         uniformDensityHydrostaticPressureFvPatchScalarField
86         (
87             const fvPatch&,
88             const DimensionedField<scalar, volMesh>&,
89             const dictionary&
90         );
92         //- Construct by mapping given
93         //  uniformDensityHydrostaticPressureFvPatchScalarField onto a new patch
94         uniformDensityHydrostaticPressureFvPatchScalarField
95         (
96             const uniformDensityHydrostaticPressureFvPatchScalarField&,
97             const fvPatch&,
98             const DimensionedField<scalar, volMesh>&,
99             const fvPatchFieldMapper&
100         );
102         //- Construct as copy
103         uniformDensityHydrostaticPressureFvPatchScalarField
104         (
105             const uniformDensityHydrostaticPressureFvPatchScalarField&
106         );
108         //- Construct and return a clone
109         virtual tmp<fvPatchScalarField> clone() const
110         {
111             return tmp<fvPatchScalarField>
112             (
113                 new uniformDensityHydrostaticPressureFvPatchScalarField(*this)
114             );
115         }
117         //- Construct as copy setting internal field reference
118         uniformDensityHydrostaticPressureFvPatchScalarField
119         (
120             const uniformDensityHydrostaticPressureFvPatchScalarField&,
121             const DimensionedField<scalar, volMesh>&
122         );
124         //- Construct and return a clone setting internal field reference
125         virtual tmp<fvPatchScalarField> clone
126         (
127             const DimensionedField<scalar, volMesh>& iF
128         ) const
129         {
130             return tmp<fvPatchScalarField>
131             (
132                 new uniformDensityHydrostaticPressureFvPatchScalarField
133                 (
134                     *this,
135                     iF
136                 )
137             );
138         }
141     // Member functions
143         // Access
145             //- Return the constant density in the far-field
146             scalar rho() const
147             {
148                 return rho_;
149             }
151             //- Return reference to the constant density in the far-field
152             //  to allow adjustment
153             scalar& rho()
154             {
155                 return rho_;
156             }
158             //- Return the reference pressure
159             scalar pRefValue() const
160             {
161                 return pRefValue_;
162             }
164             //- Return reference to the reference pressure to allow adjustment
165             scalar& pRefValue()
166             {
167                 return pRefValue_;
168             }
170             //- Return the pressure reference location
171             const vector& pRefPoint() const
172             {
173                 return pRefPoint_;
174             }
176             //- Return reference to the pressure reference location
177             //  to allow adjustment
178             vector& pRefPoint()
179             {
180                 return pRefPoint_;
181             }
184         // Evaluation functions
186             //- Update the coefficients associated with the patch field
187             virtual void updateCoeffs();
190         //- Write
191         virtual void write(Ostream&) const;
195 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
197 } // End namespace Foam
199 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
201 #endif
203 // ************************************************************************* //