Report patch name instead of index in debug
[foam-extend-3.2.git] / src / foam / coordinateSystems / toroidalCS.H
blobc53ea4b6b930b97b80b490088c5f34d01c0a3a22
1 /*---------------------------------------------------------------------------*\
2   =========                 |
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 -------------------------------------------------------------------------------
8 License
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 Class
25     Foam::toroidalCS
27 Description
28     Toroidal coordinate system, always in degrees
30 Note
31     The maintenance of this class may lag that of the main types.
33 SourceFiles
34     toroidalCS.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef toroidalCS_H
39 #define toroidalCS_H
41 #include "coordinateSystem.H"
42 #include "Switch.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         //- Are angles in degrees? (default = true)
64         Switch inDegrees_;
67     // Private Member Functions
69         //- Convert from local coordinate system to the global Cartesian system
70         //  with optional translation for the origin
71         virtual vector localToGlobal(const vector&, bool translate) const;
73         //- Convert from local coordinate system to the global Cartesian system
74         //  with optional translation for the origin
75         virtual tmp<vectorField> localToGlobal
76         (
77             const vectorField&,
78             bool translate
79         ) const;
81         //- Convert from global Cartesian system to the local coordinate system
82         //  with optional translation for the origin
83         virtual vector globalToLocal(const vector&, bool translate) const;
85         //- Convert from global Cartesian system to the local coordinate system
86         //  with optional translation for the origin
87         virtual tmp<vectorField> globalToLocal
88         (
89             const vectorField&,
90             bool translate
91         ) const;
93 public:
95     //- Runtime type information
96     TypeName("toroidal");
99     // Constructors
101         //- Construct from origin, rotation and radius
102         toroidalCS
103         (
104             const word& name,
105             const point& origin,
106             const coordinateRotation&,
107             const scalar radius,
108             const bool inDegrees = true
109         );
112         //- Construct from dictionary
113         toroidalCS(const word& name, const dictionary&);
115         //- Return clone
116         virtual autoPtr<coordinateSystem> clone() const
117         {
118             return autoPtr<coordinateSystem>(new toroidalCS(*this));
119         }
122     // Member Functions
124         // Global information about the coordinate system
126             //- Directions in which the span is limited
127             virtual spanInfo spanLimited() const;
129             //- Span bounds
130             virtual boundBox spanBounds() const;
133         //- Are angles in degrees?
134         bool inDegrees() const;
136         //- Non-const access to inDegrees
137         Switch& inDegrees();
139         //- Return radius
140         scalar radius() const
141         {
142             return radius_;
143         }
145         //- Write
146         virtual void write(Ostream&) const;
148         //- Write dictionary
149         virtual void writeDict(Ostream&, bool subDict = true) const;
153 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
155 } // End namespace Foam
157 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
159 #endif
161 // ************************************************************************* //