FreeFOAM The Cross-Platform CFD Toolkit
toroidalCS.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 Class
25  Foam::toroidalCS
26 
27 Description
28  Toroidal coordinate system, always in degrees
29 
30 Note
31  The maintenance of this class may lag that of the main types.
32 
33 SourceFiles
34  toroidalCS.C
35 
36 \*---------------------------------------------------------------------------*/
37 
38 #ifndef toroidalCS_H
39 #define toroidalCS_H
40 
42 
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 
45 namespace Foam
46 {
47 
48 
49 /*---------------------------------------------------------------------------*\
50  Class toroidalCS Declaration
51 \*---------------------------------------------------------------------------*/
52 
54 :
55  public coordinateSystem
56 {
57  // Private data
58 
59  //- Radius of the torus
60  scalar radius_;
61 
62  // Private Member Functions
63 
64  //- Convert from local coordinate system to the global Cartesian system
65  // with optional translation for the origin
66  virtual vector localToGlobal(const vector&, bool translate) const;
67 
68  //- Convert from local coordinate system to the global Cartesian system
69  // with optional translation for the origin
70  virtual tmp<vectorField> localToGlobal
71  (
72  const vectorField&,
73  bool translate
74  ) const;
75 
76  //- Convert from global Cartesian system to the local coordinate system
77  // with optional translation for the origin
78  virtual vector globalToLocal(const vector&, bool translate) const;
79 
80  //- Convert from global Cartesian system to the local coordinate system
81  // with optional translation for the origin
82  virtual tmp<vectorField> globalToLocal
83  (
84  const vectorField&,
85  bool translate
86  ) const;
87 
88 public:
89 
90  //- Runtime type information
91  TypeName("toroidal");
92 
93 
94  // Constructors
95 
96  //- Construct from origin, rotation and radius
98  (
99  const word& name,
100  const point& origin,
101  const coordinateRotation&,
102  const scalar radius
103  );
104 
105 
106  //- Construct from dictionary
107  toroidalCS(const word& name, const dictionary&);
108 
109 
110  // Member Functions
111 
112  //- Return radius
113  scalar radius() const
114  {
115  return radius_;
116  }
117 
118  //- Write
119  virtual void write(Ostream&) const;
120 
121  //- Write dictionary
122  virtual void writeDict(Ostream&, bool subDict=true) const;
123 };
124 
125 
126 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
127 
128 } // End namespace Foam
129 
130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
131 
132 #endif
133 
134 // ************************ vim: set sw=4 sts=4 et: ************************ //