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 00026 \*---------------------------------------------------------------------------*/ 00027 00028 #include <finiteVolume/SRFModel.H> 00029 00030 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00031 00032 namespace Foam 00033 { 00034 namespace SRF 00035 { 00036 00037 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // 00038 00039 autoPtr<SRFModel> SRFModel::New 00040 ( 00041 const volVectorField& Urel 00042 ) 00043 { 00044 word SRFModelTypeName; 00045 00046 // Enclose the creation of the SRFPropertiesDict to ensure it is 00047 // deleted before the SRFModel is created - otherwise the dictionary 00048 // is entered in the database twice 00049 { 00050 IOdictionary SRFPropertiesDict 00051 ( 00052 IOobject 00053 ( 00054 "SRFProperties", 00055 Urel.time().constant(), 00056 Urel.db(), 00057 IOobject::MUST_READ, 00058 IOobject::NO_WRITE 00059 ) 00060 ); 00061 00062 SRFPropertiesDict.lookup("SRFModel") >> SRFModelTypeName; 00063 } 00064 00065 Info<< "Selecting SRFModel " << SRFModelTypeName << endl; 00066 00067 dictionaryConstructorTable::iterator cstrIter = 00068 dictionaryConstructorTablePtr_->find(SRFModelTypeName); 00069 00070 if (cstrIter == dictionaryConstructorTablePtr_->end()) 00071 { 00072 FatalErrorIn 00073 ( 00074 "SRFModel::New(const fvMesh&)" 00075 ) << "Unknown SRFModel type " << SRFModelTypeName 00076 << nl << nl 00077 << "Valid SRFModel types are :" << nl 00078 << dictionaryConstructorTablePtr_->sortedToc() 00079 << exit(FatalError); 00080 } 00081 00082 return autoPtr<SRFModel>(cstrIter()(Urel)); 00083 } 00084 00085 00086 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00087 00088 } // End namespace SRF 00089 } // End namespace Foam 00090 00091 // ************************ vim: set sw=4 sts=4 et: ************************ //