FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

gradScheme.C

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software: you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by
00013     the Free Software Foundation, either version 3 of the License, or
00014     (at your option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
00023 
00024 Description
00025     Abstract base class for finite volume calculus gradient schemes.
00026 
00027 \*---------------------------------------------------------------------------*/
00028 
00029 #include <finiteVolume/fv.H>
00030 #include <OpenFOAM/HashTable.H>
00031 
00032 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00033 
00034 namespace Foam
00035 {
00036 
00037 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00038 
00039 namespace fv
00040 {
00041 
00042 // * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
00043 
00044 template<class Type>
00045 tmp<gradScheme<Type> > gradScheme<Type>::New
00046 (
00047     const fvMesh& mesh,
00048     Istream& schemeData
00049 )
00050 {
00051     if (fv::debug)
00052     {
00053         Info<< "gradScheme<Type>::New(Istream& schemeData) : "
00054                "constructing gradScheme<Type>"
00055             << endl;
00056     }
00057 
00058     if (schemeData.eof())
00059     {
00060         FatalIOErrorIn
00061         (
00062             "gradScheme<Type>::New(Istream& schemeData)",
00063             schemeData
00064         )   << "Grad scheme not specified" << endl << endl
00065             << "Valid grad schemes are :" << endl
00066             << IstreamConstructorTablePtr_->sortedToc()
00067             << exit(FatalIOError);
00068     }
00069 
00070     word schemeName(schemeData);
00071 
00072     typename IstreamConstructorTable::iterator cstrIter =
00073         IstreamConstructorTablePtr_->find(schemeName);
00074 
00075     if (cstrIter == IstreamConstructorTablePtr_->end())
00076     {
00077         FatalIOErrorIn
00078         (
00079             "gradScheme<Type>::New(Istream& schemeData)",
00080             schemeData
00081         )   << "unknown grad scheme " << schemeName << endl << endl
00082             << "Valid grad schemes are :" << endl
00083             << IstreamConstructorTablePtr_->sortedToc()
00084             << exit(FatalIOError);
00085     }
00086 
00087     return cstrIter()(mesh, schemeData);
00088 }
00089 
00090 
00091 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
00092 
00093 template<class Type>
00094 gradScheme<Type>::~gradScheme()
00095 {}
00096 
00097 
00098 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00099 
00100 } // End namespace fv
00101 
00102 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00103 
00104 } // End namespace Foam
00105 
00106 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines