pressureInletVelocityFvPatchVectorField.C
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2011-2016 OpenFOAM Foundation
9 Copyright (C) 2020 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
12 This file is part of OpenFOAM.
13
14 OpenFOAM is free software: you can redistribute it and/or modify it
15 under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 3 of the License, or
17 (at your option) any later version.
18
19 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26
27\*---------------------------------------------------------------------------*/
28
31#include "volFields.H"
32#include "surfaceFields.H"
33
34// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
35
36Foam::pressureInletVelocityFvPatchVectorField::
37pressureInletVelocityFvPatchVectorField
38(
39 const fvPatch& p,
41)
42:
43 fixedValueFvPatchVectorField(p, iF),
44 phiName_("phi"),
45 rhoName_("rho")
46{}
47
48
49Foam::pressureInletVelocityFvPatchVectorField::
50pressureInletVelocityFvPatchVectorField
51(
53 const fvPatch& p,
55 const fvPatchFieldMapper& mapper
56)
57:
58 fixedValueFvPatchVectorField(ptf, p, iF, mapper),
59 phiName_(ptf.phiName_),
60 rhoName_(ptf.rhoName_)
61{}
62
63
64Foam::pressureInletVelocityFvPatchVectorField::
65pressureInletVelocityFvPatchVectorField
66(
67 const fvPatch& p,
69 const dictionary& dict
70)
71:
72 fixedValueFvPatchVectorField(p, iF, dict),
73 phiName_(dict.getOrDefault<word>("phi", "phi")),
74 rhoName_(dict.getOrDefault<word>("rho", "rho"))
75{}
76
77
78Foam::pressureInletVelocityFvPatchVectorField::
79pressureInletVelocityFvPatchVectorField
80(
82)
83:
84 fixedValueFvPatchVectorField(pivpvf),
85 phiName_(pivpvf.phiName_),
86 rhoName_(pivpvf.rhoName_)
87{}
88
89
90Foam::pressureInletVelocityFvPatchVectorField::
91pressureInletVelocityFvPatchVectorField
92(
95)
96:
97 fixedValueFvPatchVectorField(pivpvf, iF),
98 phiName_(pivpvf.phiName_),
99 rhoName_(pivpvf.rhoName_)
100{}
101
102
103// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
104
106{
107 if (updated())
108 {
109 return;
110 }
111
112 const surfaceScalarField& phi =
113 db().lookupObject<surfaceScalarField>(phiName_);
114
115 const fvsPatchField<scalar>& phip =
116 patch().patchField<surfaceScalarField, scalar>(phi);
117
118 tmp<vectorField> n = patch().nf();
119 const Field<scalar>& magS = patch().magSf();
120
122 {
123 operator==(n*phip/magS);
124 }
126 {
127 const fvPatchField<scalar>& rhop =
128 patch().lookupPatchField<volScalarField, scalar>(rhoName_);
129
130 operator==(n*phip/(rhop*magS));
131 }
132 else
133 {
135 << "dimensions of phi are not correct"
136 << "\n on patch " << this->patch().name()
137 << " of field " << this->internalField().name()
138 << " in file " << this->internalField().objectPath()
139 << exit(FatalError);
140 }
141
142 fixedValueFvPatchVectorField::updateCoeffs();
143}
144
145
147{
149 os.writeEntryIfDifferent<word>("phi", "phi", phiName_);
150 os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
151 writeEntry("value", os);
152}
153
154
155// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
156
158(
159 const fvPatchField<vector>& pvf
160)
161{
162 fvPatchField<vector>::operator=(patch().nf()*(patch().nf() & pvf));
163}
164
165
166// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167
168namespace Foam
169{
171 (
174 );
175}
176
177// ************************************************************************* //
label n
Macros for easy insertion into run-time selection tables.
surfaceScalarField & phi
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
const dimensionSet & dimensions() const
Return dimensions.
Generic templated field type.
Definition: Field.H:82
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:62
Ostream & writeEntryIfDifferent(const word &key, const T &value1, const T &value2)
Write a keyword/value entry only when the two values differ.
Definition: Ostream.H:251
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
friend Ostream & operator(Ostream &, const faMatrix< Type > &)
virtual bool write()
Write the output fields.
A FieldMapper for finite-volume patch fields.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
Definition: fvPatchField.H:82
virtual void operator=(const UList< Type > &)
Definition: fvPatchField.C:408
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:71
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
Definition: fvsPatchField.H:79
This velocity inlet boundary condition is applied to patches where the pressure is specified....
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
A class for managing temporary objects.
Definition: tmp.H:65
A class for handling words, derived from Foam::string.
Definition: word.H:68
volScalarField & p
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:453
OBJstream os(runTime.globalPath()/outputName)
#define makePatchTypeField(PatchTypeField, typePatchTypeField)
Definition: fvPatchField.H:676
Namespace for OpenFOAM.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:82
const dimensionSet dimArea(sqr(dimLength))
Definition: dimensionSets.H:59
const dimensionSet dimVelocity
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
tmp< faMatrix< Type > > operator==(const faMatrix< Type > &, const faMatrix< Type > &)
error FatalError
const dimensionSet dimDensity
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition: errorManip.H:130
dictionary dict
Foam::surfaceFields.