Loading...
Searching...
No Matches
cylindricalInletVelocityFvPatchVectorField.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-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
30#include "volFields.H"
32#include "fvPatchFieldMapper.H"
33#include "surfaceFields.H"
34#include "unitConversion.H"
35
36// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
37
40(
41 const fvPatch& p,
43)
44:
46 origin_(Zero),
47 axis_(Zero),
48 axialVelocity_(),
49 radialVelocity_(),
50 rpm_()
51{}
52
53
56(
58 const fvPatch& p,
60 const fvPatchFieldMapper& mapper
61)
62:
63 fixedValueFvPatchField<vector>(ptf, p, iF, mapper),
64 origin_(ptf.origin_),
65 axis_(ptf.axis_),
66 axialVelocity_(ptf.axialVelocity_.clone()),
67 radialVelocity_(ptf.radialVelocity_.clone()),
68 rpm_(ptf.rpm_.clone())
69{}
70
71
74(
75 const fvPatch& p,
77 const dictionary& dict
78)
79:
81 origin_(dict.getCompat<vector>("origin", {{"centre", 1712}})),
82 axis_(dict.get<vector>("axis")),
83 axialVelocity_(Function1<scalar>::New("axialVelocity", dict, &db())),
84 radialVelocity_
85 (
86 Function1<scalar>::New("radialVelocity", dict, &db())
87 ),
88 rpm_(Function1<scalar>::New("rpm", dict, &db()))
89{}
90
91
94(
96)
97:
99 origin_(ptf.origin_),
100 axis_(ptf.axis_),
101 axialVelocity_(ptf.axialVelocity_.clone()),
102 radialVelocity_(ptf.radialVelocity_.clone()),
103 rpm_(ptf.rpm_.clone())
104{}
105
106
109(
112)
113:
115 origin_(ptf.origin_),
116 axis_(ptf.axis_),
117 axialVelocity_(ptf.axialVelocity_.clone()),
118 radialVelocity_(ptf.radialVelocity_.clone()),
119 rpm_(ptf.rpm_.clone())
120{}
121
122
123// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
124
126{
127 if (updated())
128 {
129 return;
130 }
131
132 const scalar t = this->db().time().timeOutputValue();
133 const scalar axialVelocity = axialVelocity_->value(t);
134 const scalar radialVelocity = radialVelocity_->value(t);
135 const scalar omega = rpmToRads(rpm_->value(t));
136
137 const vector axisHat = axis_/mag(axis_);
138
139 const vectorField r(patch().Cf() - origin_);
140 const vectorField d(r - (axisHat & r)*axisHat);
141
142 tmp<vectorField> tangVel
143 (
144 (omega * axisHat) ^ d
145 );
147 operator==(tangVel + axisHat*axialVelocity + radialVelocity*d/mag(d));
148
150}
151
152
154{
156 os.writeEntry("origin", origin_);
157 os.writeEntry("axis", axis_);
158 axialVelocity_->writeData(os);
159 radialVelocity_->writeData(os);
160 rpm_->writeData(os);
163
164
165// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
166
167namespace Foam
168{
170 (
172 cylindricalInletVelocityFvPatchVectorField
173 );
174}
175
176
177// ************************************************************************* //
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...
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition Ostream.H:59
This boundary condition describes an inlet vector boundary condition in cylindrical coordinates given...
virtual tmp< fvPatchField< vector > > clone() const
Return a clone.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
cylindricalInletVelocityFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
T get(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a T. FatalIOError if not found, or if the number of tokens is incorrect.
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
A class for managing temporary objects.
Definition tmp.H:75
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.
constexpr scalar rpmToRads() noexcept
Multiplication factor for revolutions/minute to radians/sec.
tmp< faMatrix< Type > > operator==(const faMatrix< Type > &, const faMatrix< Type > &)
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
Foam::surfaceFields.
Unit conversion functions.