Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / primitives / Scalar / Scalar.C
blob7c49ab02f55a9c4e866f72975997a3a10adb321a
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 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
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 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
28 namespace Foam
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
33 const char* const pTraits<Scalar>::typeName = "scalar";
34 const Scalar pTraits<Scalar>::zero = 0.0;
35 const Scalar pTraits<Scalar>::one = 1.0;
36 const Scalar pTraits<Scalar>::min = -ScalarVGREAT;
37 const Scalar pTraits<Scalar>::max = ScalarVGREAT;
39 const char* pTraits<Scalar>::componentNames[] = { "x" };
41 pTraits<Scalar>::pTraits(const Scalar& p)
43     p_(p)
47 pTraits<Scalar>::pTraits(Istream& is)
49     is >> p_;
53 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
55 word name(const Scalar val)
57     std::ostringstream buf;
58     buf << val;
59     return buf.str();
63 // * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
65 Scalar readScalar(Istream& is)
67     Scalar rs;
68     is  >> rs;
70     return rs;
74 Istream& operator>>(Istream& is, Scalar& s)
76     token t(is);
78     if (!t.good())
79     {
80         is.setBad();
81         return is;
82     }
84     if (t.isNumber())
85     {
86         s = t.number();
87     }
88     else
89     {
90         is.setBad();
91         FatalIOErrorIn("operator>>(Istream&, Scalar&)", is)
92             << "wrong token type - expected Scalar, found " << t.info()
93             << exit(FatalIOError);
95         return is;
96     }
98     // Check state of Istream
99     is.check("Istream& operator>>(Istream&, Scalar&)");
101     return is;
105 Ostream& operator<<(Ostream& os, const Scalar s)
107     os.write(s);
108     os.check("Ostream& operator<<(Ostream&, const Scalar&)");
109     return os;
113 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
115 } // End namespace Foam
117 // ************************************************************************* //