1 /*---------------------------------------------------------------------------*\
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 -------------------------------------------------------------------------------
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 \*---------------------------------------------------------------------------*/
26 #include "rotatingPressureInletOutletVelocityFvPatchVectorField.H"
27 #include "addToRunTimeSelectionTable.H"
28 #include "volFields.H"
29 #include "surfaceFields.H"
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
36 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
38 void rotatingPressureInletOutletVelocityFvPatchVectorField::
39 calcTangentialVelocity()
41 vector axisHat = omega_/mag(omega_);
42 vectorField tangentialVelocity =
43 (-omega_) ^ (patch().Cf() - axisHat*(axisHat & patch().Cf()));
45 vectorField n = patch().nf();
46 refValue() = tangentialVelocity - n*(n & tangentialVelocity);
50 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
52 rotatingPressureInletOutletVelocityFvPatchVectorField::
53 rotatingPressureInletOutletVelocityFvPatchVectorField
56 const DimensionedField<vector, volMesh>& iF
59 pressureInletOutletVelocityFvPatchVectorField(p, iF),
64 rotatingPressureInletOutletVelocityFvPatchVectorField::
65 rotatingPressureInletOutletVelocityFvPatchVectorField
67 const rotatingPressureInletOutletVelocityFvPatchVectorField& ptf,
69 const DimensionedField<vector, volMesh>& iF,
70 const fvPatchFieldMapper& mapper
73 pressureInletOutletVelocityFvPatchVectorField(ptf, p, iF, mapper),
76 calcTangentialVelocity();
80 rotatingPressureInletOutletVelocityFvPatchVectorField::
81 rotatingPressureInletOutletVelocityFvPatchVectorField
84 const DimensionedField<vector, volMesh>& iF,
85 const dictionary& dict
88 pressureInletOutletVelocityFvPatchVectorField(p, iF, dict),
89 omega_(dict.lookup("omega"))
91 calcTangentialVelocity();
95 rotatingPressureInletOutletVelocityFvPatchVectorField::
96 rotatingPressureInletOutletVelocityFvPatchVectorField
98 const rotatingPressureInletOutletVelocityFvPatchVectorField& pivpvf
101 pressureInletOutletVelocityFvPatchVectorField(pivpvf),
102 omega_(pivpvf.omega_)
104 calcTangentialVelocity();
108 rotatingPressureInletOutletVelocityFvPatchVectorField::
109 rotatingPressureInletOutletVelocityFvPatchVectorField
111 const rotatingPressureInletOutletVelocityFvPatchVectorField& pivpvf,
112 const DimensionedField<vector, volMesh>& iF
115 pressureInletOutletVelocityFvPatchVectorField(pivpvf, iF),
116 omega_(pivpvf.omega_)
118 calcTangentialVelocity();
122 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
124 void rotatingPressureInletOutletVelocityFvPatchVectorField::
125 write(Ostream& os) const
127 fvPatchVectorField::write(os);
128 os.writeKeyword("phi") << phiName() << token::END_STATEMENT << nl;
129 os.writeKeyword("omega")<< omega_ << token::END_STATEMENT << nl;
130 writeEntry("value", os);
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 rotatingPressureInletOutletVelocityFvPatchVectorField
142 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
144 } // End namespace Foam
146 // ************************************************************************* //