rotatingPressureInletOutletVelocityFvPatchVectorField.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) 2017-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#include "volFields.H"
32#include "surfaceFields.H"
33
34// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
35
36void Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
37calcTangentialVelocity()
38{
39 const scalar t = this->db().time().timeOutputValue();
40 vector om = omega_->value(t);
41
42 vector axisHat = om/mag(om);
44 (
45 (-om) ^ (patch().Cf() - axisHat*(axisHat & patch().Cf()))
46 );
47
48 const vectorField n(patch().nf());
49 refValue() = tangentialVelocity - n*(n & tangentialVelocity);
50}
51
52
53// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
54
55Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
56rotatingPressureInletOutletVelocityFvPatchVectorField
57(
58 const fvPatch& p,
60)
61:
63 omega_()
64{}
65
66
67Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
68rotatingPressureInletOutletVelocityFvPatchVectorField
69(
71 const fvPatch& p,
73 const fvPatchFieldMapper& mapper
74)
75:
77 omega_(ptf.omega_.clone())
78{
79 calcTangentialVelocity();
80}
81
82
83Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
84rotatingPressureInletOutletVelocityFvPatchVectorField
85(
86 const fvPatch& p,
88 const dictionary& dict
89)
90:
92 omega_(Function1<vector>::New("omega", dict, &db()))
93{
94 patchType() = dict.getOrDefault<word>("patchType", word::null);
95 calcTangentialVelocity();
96}
97
98
99Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
100rotatingPressureInletOutletVelocityFvPatchVectorField
101(
103)
104:
106 omega_(rppvf.omega_.clone())
107{
108 calcTangentialVelocity();
109}
110
111
112Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
113rotatingPressureInletOutletVelocityFvPatchVectorField
114(
117)
118:
120 omega_(rppvf.omega_.clone())
121{
122 calcTangentialVelocity();
123}
124
125
126// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
127
129(
130 Ostream& os
131) const
132{
134 os.writeEntry("phi", phiName());
135 omega_->writeData(os);
136 writeEntry("value", os);
137}
138
139
140// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141
142namespace Foam
143{
145 (
148 );
149}
150
151// ************************************************************************* //
label n
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:96
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:62
Ostream & writeEntry(const keyType &key, const T &value)
Write a keyword/value entry.
Definition: Ostream.H:239
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
T getOrDefault(const word &keyword, const T &deflt, enum keyType::option matchOpt=keyType::REGEX) const
virtual bool write()
Write the output fields.
A FieldMapper for finite-volume patch fields.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:71
This velocity inlet/outlet boundary condition is applied to velocity boundaries where the pressure is...
const vectorField & tangentialVelocity() const
Return the tangential velocity.
This velocity inlet/outlet boundary condition is applied to patches in a rotating frame where the pre...
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
A class for handling words, derived from Foam::string.
Definition: word.H:68
static const word null
An empty word.
Definition: word.H:80
volScalarField & p
OBJstream os(runTime.globalPath()/outputName)
#define makePatchTypeField(PatchTypeField, typePatchTypeField)
Definition: fvPatchField.H:676
const std::string patch
OpenFOAM patch number as a std::string.
Namespace for OpenFOAM.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
Field< vector > vectorField
Specialisation of Field<T> for vector.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
dictionary dict
Foam::surfaceFields.
optimisationManager & om
Definition: createFields.H:6