1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
7 -------------------------------------------------------------------------------
9 This file is part of OpenFOAM.
11 OpenFOAM is free software: you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation, either version 3 of the License, or
14 (at your option) any later version.
16 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "cylindricalCS.H"
30 #include "mathematicalConstants.H"
31 #include "addToRunTimeSelectionTable.H"
33 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
37 defineTypeNameAndDebug(cylindricalCS, 0);
38 addToRunTimeSelectionTable(coordinateSystem, cylindricalCS, dictionary);
39 addToRunTimeSelectionTable(coordinateSystem, cylindricalCS, origRotation);
43 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
45 Foam::cylindricalCS::cylindricalCS(const bool inDegrees)
52 Foam::cylindricalCS::cylindricalCS
54 const coordinateSystem& cs,
63 Foam::cylindricalCS::cylindricalCS
66 const coordinateSystem& cs,
70 coordinateSystem(name, cs),
75 Foam::cylindricalCS::cylindricalCS
79 const coordinateRotation& cr,
83 coordinateSystem(name, origin, cr),
88 Foam::cylindricalCS::cylindricalCS
97 coordinateSystem(name, origin, axis, dirn),
102 Foam::cylindricalCS::cylindricalCS
105 const dictionary& dict
108 coordinateSystem(name, dict),
109 inDegrees_(dict.lookupOrDefault<Switch>("degrees", true))
113 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
115 bool Foam::cylindricalCS::inDegrees() const
121 bool& Foam::cylindricalCS::inDegrees()
127 Foam::vector Foam::cylindricalCS::localToGlobal
135 local.y() * ( inDegrees_ ? mathematicalConstant::pi/180.0 : 1.0 )
138 return coordinateSystem::localToGlobal
140 vector(local.x()*cos(theta), local.x()*sin(theta), local.z()),
146 Foam::tmp<Foam::vectorField> Foam::cylindricalCS::localToGlobal
148 const vectorField& local,
154 local.component(vector::Y)
155 * ( inDegrees_ ? mathematicalConstant::pi/180.0 : 1.0 )
159 vectorField lc(local.size());
160 lc.replace(vector::X, local.component(vector::X)*cos(theta));
161 lc.replace(vector::Y, local.component(vector::X)*sin(theta));
162 lc.replace(vector::Z, local.component(vector::Z));
164 return coordinateSystem::localToGlobal(lc, translate);
168 Foam::vector Foam::cylindricalCS::globalToLocal
170 const vector& global,
174 const vector lc = coordinateSystem::globalToLocal(global, translate);
178 sqrt(sqr(lc.x()) + sqr(lc.y())),
183 ) * ( inDegrees_ ? 180.0/mathematicalConstant::pi : 1.0 ),
189 Foam::tmp<Foam::vectorField> Foam::cylindricalCS::globalToLocal
191 const vectorField& global,
195 const vectorField lc =
196 coordinateSystem::globalToLocal(global, translate);
198 tmp<vectorField> tresult(new vectorField(lc.size()));
199 vectorField& result = tresult();
204 sqrt(sqr(lc.component(vector::X)) + sqr(lc.component(vector::Y)))
212 lc.component(vector::Y),
213 lc.component(vector::X)
214 ) * ( inDegrees_ ? 180.0/mathematicalConstant::pi : 1.0 )
217 result.replace(vector::Z, lc.component(vector::Z));
223 // ************************************************************************* //