initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / finiteVolume / finiteVolume / d2dt2Schemes / d2dt2Scheme / d2dt2Scheme.C
blob9783d2694d2122803996717867ad55264951e1ef
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 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 d2dt2 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<d2dt2Scheme<Type> > d2dt2Scheme<Type>::New
48     const fvMesh& mesh,
49     Istream& schemeData
52     if (fv::debug)
53     {
54         Info<< "d2dt2Scheme<Type>::New(const fvMesh&, Istream&) : "
55                "constructing d2dt2Scheme<Type>"
56             << endl;
57     }
59     if (schemeData.eof())
60     {
61         FatalIOErrorIn
62         (
63             "d2dt2Scheme<Type>::New(const fvMesh&, Istream&)",
64             schemeData
65         )   << "D2dt2 scheme not specified" << endl << endl
66             << "Valid d2dt2 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             "d2dt2Scheme<Type>::New(const fvMesh&, Istream&)",
81             schemeData
82         )   << "unknown d2dt2 scheme " << schemeName << endl << endl
83             << "Valid d2dt2 schemes are :" << endl
84             << IstreamConstructorTablePtr_->toc()
85             << exit(FatalIOError);
86     }
88     return cstrIter()(mesh, schemeData);
92 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
94 template<class Type>
95 d2dt2Scheme<Type>::~d2dt2Scheme()
99 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
101 } // End namespace fv
103 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
105 } // End namespace Foam
107 // ************************************************************************* //