Merge branch 'upstream/OpenFOAM' into master
[freefoam.git] / src / meshTools / coordinateSystems / toroidalCS.H
blob65b9cc2911342d3f23cbce6e485d3ad320ec2a88
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::toroidalCS
28 Description
29     Toroidal coordinate system, always in degrees
31 Note
32     The maintenance of this class may lag that of the main types.
34 SourceFiles
35     toroidalCS.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef toroidalCS_H
40 #define toroidalCS_H
42 #include <meshTools/coordinateSystem.H>
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                         Class toroidalCS Declaration
52 \*---------------------------------------------------------------------------*/
54 class toroidalCS
56     public coordinateSystem
58     // Private data
60         //- Radius of the torus
61         scalar radius_;
63     // Private Member Functions
65         //- Convert from local coordinate system to the global Cartesian system
66         //  with optional translation for the origin
67         virtual vector localToGlobal(const vector&, bool translate) const;
69         //- Convert from local coordinate system to the global Cartesian system
70         //  with optional translation for the origin
71         virtual tmp<vectorField> localToGlobal
72         (
73             const vectorField&,
74             bool translate
75         ) const;
77         //- Convert from global Cartesian system to the local coordinate system
78         //  with optional translation for the origin
79         virtual vector globalToLocal(const vector&, bool translate) const;
81         //- Convert from global Cartesian system to the local coordinate system
82         //  with optional translation for the origin
83         virtual tmp<vectorField> globalToLocal
84         (
85             const vectorField&,
86             bool translate
87         ) const;
89 public:
91     //- Runtime type information
92     TypeName("toroidal");
95     // Constructors
97         //- Construct from origin, rotation and radius
98         toroidalCS
99         (
100             const word& name,
101             const point& origin,
102             const coordinateRotation&,
103             const scalar radius
104         );
107         //- Construct from dictionary
108         toroidalCS(const word& name, const dictionary&);
111     // Member Functions
113         //- Return radius
114         scalar radius() const
115         {
116             return radius_;
117         }
119         //- Write
120         virtual void write(Ostream&) const;
122         //- Write dictionary
123         virtual void writeDict(Ostream&, bool subDict=true) const;
127 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
129 } // End namespace Foam
131 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
133 #endif
135 // ************************ vim: set sw=4 sts=4 et: ************************ //