Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / finiteVolume / fields / fvPatchFields / derived / uniformDensityHydrostaticPressure / uniformDensityHydrostaticPressureFvPatchScalarField.H
blob5d93e4fe998bd8c0d6efb05e0618ef13c1a162eb
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  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 // ************************************************************************* //