Loading...
Searching...
No Matches
swirlInletVelocityFvPatchVectorField.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) 2017 OpenFOAM Foundation
9 Copyright (C) 2021 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
32// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
33
36(
37 const fvPatch& p,
39)
40:
42 origin_(Zero),
43 axis_(Zero),
44 axialVelocity_(),
45 radialVelocity_(),
46 tangentialVelocity_()
47{}
48
49
52(
54 const fvPatch& p,
56 const fvPatchFieldMapper& mapper
57)
58:
59 fixedValueFvPatchField<vector>(ptf, p, iF, mapper),
60 origin_(ptf.origin_),
61 axis_(ptf.axis_),
62 axialVelocity_(ptf.axialVelocity_.clone()),
63 radialVelocity_(ptf.radialVelocity_.clone()),
64 tangentialVelocity_(ptf.tangentialVelocity_.clone())
65{}
66
67
70(
71 const fvPatch& p,
73 const dictionary& dict
74)
75:
77 origin_(dict.get<vector>("origin")),
78 axis_(dict.get<vector>("axis")),
79 axialVelocity_(Function1<scalar>::New("axialVelocity", dict, &db())),
80 radialVelocity_
81 (
82 Function1<scalar>::New("radialVelocity", dict, &db())
83 ),
84 tangentialVelocity_
85 (
86 Function1<scalar>::New("tangentialVelocity", dict, &db())
87 )
88{}
89
90
93(
95)
96:
98 origin_(ptf.origin_),
99 axis_(ptf.axis_),
100 axialVelocity_(ptf.axialVelocity_.clone()),
101 radialVelocity_(ptf.radialVelocity_.clone()),
102 tangentialVelocity_(ptf.tangentialVelocity_.clone())
103{}
104
105
108(
111)
112:
114 origin_(ptf.origin_),
115 axis_(ptf.axis_),
116 axialVelocity_(ptf.axialVelocity_.clone()),
117 radialVelocity_(ptf.radialVelocity_.clone()),
118 tangentialVelocity_(ptf.tangentialVelocity_.clone())
119{}
120
121
122// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
123
125{
126 if (updated())
127 {
128 return;
129 }
130
131 const vector axisHat = axis_/mag(axis_);
132
133 // Radius vector in plane of rotation
134 vectorField r(patch().Cf() - origin_);
135 r -= (axisHat & r)*axisHat;
136 const scalarField magr(mag(r));
137 const vectorField rHat(r/magr);
138
139 const scalarField axialVelocity(axialVelocity_->value(magr));
140 const scalarField radialVelocity(radialVelocity_->value(magr));
141 const scalarField tangentialVelocity(tangentialVelocity_->value(magr));
142
143 operator==
144 (
145 axialVelocity*axisHat
146 + radialVelocity*rHat
147 + tangentialVelocity*(axisHat ^ rHat)
148 );
149
151}
152
153
155{
157 os.writeEntry("origin", origin_);
158 os.writeEntry("axis", axis_);
159 axialVelocity_->writeData(os);
160 radialVelocity_->writeData(os);
161 tangentialVelocity_->writeData(os);
164
165
166// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167
168namespace Foam
169{
171 (
173 swirlInletVelocityFvPatchVectorField
174 );
175}
176
177
178// ************************************************************************* //
Macros for easy insertion into run-time selection tables.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
Definition Function1.H:92
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition Ostream.H:59
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
This boundary condition supplies a fixed value constraint, and is the base class for a number of othe...
A FieldMapper for finite-volume patch fields.
virtual void write(Ostream &) const
Write.
void writeValueEntry(Ostream &os) const
Write *this field as a "value" entry.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition fvPatch.H:71
This boundary condition describes an inlet vector boundary condition in swirl coordinates given a cen...
virtual tmp< fvPatchField< vector > > clone() const
Return a clone.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
swirlInletVelocityFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
volScalarField & p
OBJstream os(runTime.globalPath()/outputName)
#define makePatchTypeField(PatchTypeField, typePatchTypeField)
Define a concrete fvPatchField type and add to run-time tables Example, (fvPatchScalarField,...
Namespace for OpenFOAM.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
Field< vector > vectorField
Specialisation of Field<T> for vector.
static constexpr const zero Zero
Global zero (0).
Definition zero.H:127
Vector< scalar > vector
Definition vector.H:57
fvPatchField< vector > fvPatchVectorField
dictionary dict