ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / meshTools / coordinateSystems / coordinateSystemNew.C
blob60c4e8482d78daedc5916a7229dce3148b78a80a
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 "coordinateSystem.H"
27 #include "dictionary.H"
29 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
31 Foam::autoPtr<Foam::coordinateSystem> Foam::coordinateSystem::New
33     const word& name,
34     const dictionary& dict
37     if (debug)
38     {
39         Pout<< "coordinateSystem::New(const word&, const dictionary&) : "
40             << "constructing coordinateSystem"
41             << endl;
42     }
44     // construct base class directly, also allow 'cartesian' as an alias
45     word coordType(typeName_());
46     if
47     (
48         !dict.readIfPresent("type", coordType)
49      || coordType == typeName_()
50      || coordType == "cartesian"
51     )
52     {
53         return autoPtr<coordinateSystem>(new coordinateSystem(name, dict));
54     }
56     dictionaryConstructorTable::iterator cstrIter =
57         dictionaryConstructorTablePtr_->find(coordType);
59     if (cstrIter == dictionaryConstructorTablePtr_->end())
60     {
61         FatalIOErrorIn
62         (
63             "coordinateSystem::New(const word&, const dictionary&)",
64             dict
65         )   << "Unknown coordinateSystem type "
66             << coordType << nl << nl
67             << "Valid coordinateSystem types are :" << nl
68             << "[default: " << typeName_() << "]"
69             << dictionaryConstructorTablePtr_->sortedToc()
70             << exit(FatalIOError);
71     }
73     return autoPtr<coordinateSystem>(cstrIter()(name, dict));
77 Foam::autoPtr<Foam::coordinateSystem> Foam::coordinateSystem::New
79     const word& coordType,
80     const word& name,
81     const point& origin,
82     const coordinateRotation& cr
85     if (debug)
86     {
87         Pout<< "coordinateSystem::New(const word&, const word&, "
88             << "const point&, const coordinateRotation&) : "
89                "constructing coordinateSystem"
90             << endl;
91     }
93     origRotationConstructorTable::iterator cstrIter =
94         origRotationConstructorTablePtr_->find(coordType);
96     if (cstrIter == origRotationConstructorTablePtr_->end())
97     {
98         FatalErrorIn
99         (
100             "coordinateSystem::New(const word&, const word&, "
101             "const point&, const coordinateRotation&) : "
102             "constructing coordinateSystem"
103         )   << "Unknown coordinateSystem type "
104             << coordType << nl << nl
105             << "Valid coordinateSystem types are :" << nl
106             << origRotationConstructorTablePtr_->sortedToc()
107             << exit(FatalError);
108     }
110     return autoPtr<coordinateSystem>(cstrIter()(name, origin, cr));
114 Foam::autoPtr<Foam::coordinateSystem> Foam::coordinateSystem::New
116     Istream& is
119     const word name(is);
120     const dictionary dict(is);
122     return New(name, dict);
126 // ************************************************************************* //