initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / src / finiteVolume / finiteVolume / gradSchemes / gradScheme / gradScheme.C
blobd5197fdc525da0c21467c9c530b7804d02deaee0
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Description
26     Abstract base class for finite volume calculus gradient schemes.
28 \*---------------------------------------------------------------------------*/
30 #include "fv.H"
31 #include "HashTable.H"
33 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
35 namespace Foam
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 namespace fv
43 // * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
45 template<class Type>
46 tmp<gradScheme<Type> > gradScheme<Type>::New
48     const fvMesh& mesh,
49     Istream& schemeData
52     if (fv::debug)
53     {
54         Info<< "gradScheme<Type>::New(Istream& schemeData) : "
55                "constructing gradScheme<Type>"
56             << endl;
57     }
59     if (schemeData.eof())
60     {
61         FatalIOErrorIn
62         (
63             "gradScheme<Type>::New(Istream& schemeData)",
64             schemeData
65         )   << "Grad scheme not specified" << endl << endl
66             << "Valid grad schemes are :" << endl
67             << IstreamConstructorTablePtr_->toc()
68             << exit(FatalIOError);
69     }
71     word schemeName(schemeData);
73     typename IstreamConstructorTable::iterator cstrIter =
74         IstreamConstructorTablePtr_->find(schemeName);
76     if (cstrIter == IstreamConstructorTablePtr_->end())
77     {
78         FatalIOErrorIn
79         (
80             "gradScheme<Type>::New(Istream& schemeData)",
81             schemeData
82         )   << "unknown grad scheme " << schemeName << endl << endl
83             << "Valid grad schemes are :" << endl
84             << IstreamConstructorTablePtr_->toc()
85             << exit(FatalIOError);
86     }
88     return cstrIter()(mesh, schemeData);
92 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
94 template<class Type>
95 gradScheme<Type>::~gradScheme()
99 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
101 } // End namespace fv
103 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
105 } // End namespace Foam
107 // ************************************************************************* //