ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / meshTools / coordinateSystems / parabolicCylindricalCS.C
blobbf202bd39d161b295064bf8f537412d8f7325cb5
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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
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
19     for more details.
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 "parabolicCylindricalCS.H"
27 #include "addToRunTimeSelectionTable.H"
29 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
31 namespace Foam
33     defineTypeNameAndDebug(parabolicCylindricalCS, 0);
34     addToRunTimeSelectionTable
35     (
36         coordinateSystem,
37         parabolicCylindricalCS,
38         dictionary
39     );
43 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
45 Foam::parabolicCylindricalCS::parabolicCylindricalCS()
47     coordinateSystem()
51 Foam::parabolicCylindricalCS::parabolicCylindricalCS
53     const word& name,
54     const point& origin,
55     const coordinateRotation& cr
58     coordinateSystem(name, origin, cr)
62 Foam::parabolicCylindricalCS::parabolicCylindricalCS
64     const word& name,
65     const dictionary& dict
68     coordinateSystem(name, dict)
72 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
74 Foam::vector Foam::parabolicCylindricalCS::localToGlobal
76     const vector& local,
77     bool translate
78 ) const
80     // Notation: u = local.x() v = local.y() z = local.z();
81     if (local.y() < 0.0)
82     {
83         FatalErrorIn
84         (
85             "parabolicCylindricalCS::localToGlobal(const vector&, bool) const"
86         )
87             << "parabolic cylindrical coordinates v < 0"
88             << abort(FatalError);
89     }
91     return coordinateSystem::localToGlobal
92     (
93         vector
94         (
95             0.5*(sqr(local.x()) - sqr(local.y())),
96             local.x()*local.y(),
97             local.z()
98         ),
99         translate
100     );
104 Foam::tmp<Foam::vectorField> Foam::parabolicCylindricalCS::localToGlobal
106     const vectorField& local,
107     bool translate
108 ) const
110     if (min(local.component(vector::Y)) < 0.0)
111     {
112         FatalErrorIn
113         (
114             "parabolicCylindricalCS::localToGlobal"
115             "(const vectorField&, bool) const"
116         )   << "parabolic cylindrical coordinates v < 0"
117             << abort(FatalError);
118     }
120     vectorField lc(local.size());
121     lc.replace
122     (
123         vector::X,
124         0.5*
125         (
126             sqr(local.component(vector::X))
127           - sqr(local.component(vector::Y))
128         )
129     );
131     lc.replace
132     (
133         vector::Y,
134         local.component(vector::X) * local.component(vector::Y)
135     );
137     lc.replace
138     (
139         vector::Z,
140         local.component(vector::Z)
141     );
143     return coordinateSystem::localToGlobal(lc, translate);
147 Foam::vector Foam::parabolicCylindricalCS::globalToLocal
149     const vector& global,
150     bool translate
151 ) const
153     notImplemented
154     (
155         "parabolicCylindricalCS::globalToLocal(const vector&, bool) const"
156     );
158     return vector::zero;
162 Foam::tmp<Foam::vectorField> Foam::parabolicCylindricalCS::globalToLocal
164     const vectorField& global,
165     bool translate
166 ) const
168     notImplemented
169     (
170         "parabolicCylindricalCS::globalToLocal(const vectorField&, bool) const"
171     );
173     return tmp<vectorField>(vectorField::null());
177 // ************************************************************************* //