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 \*---------------------------------------------------------------------------*/ 00025 00026 #include "writeRegisteredObject.H" 00027 #include <OpenFOAM/dictionary.H> 00028 #include <OpenFOAM/Time.H> 00029 00030 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // 00031 00032 namespace Foam 00033 { 00034 defineTypeNameAndDebug(writeRegisteredObject, 0); 00035 } 00036 00037 00038 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // 00039 00040 Foam::writeRegisteredObject::writeRegisteredObject 00041 ( 00042 const word& name, 00043 const objectRegistry& obr, 00044 const dictionary& dict, 00045 const bool loadFromFiles 00046 ) 00047 : 00048 name_(name), 00049 obr_(obr), 00050 active_(true), 00051 objectNames_() 00052 { 00053 read(dict); 00054 } 00055 00056 00057 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // 00058 00059 Foam::writeRegisteredObject::~writeRegisteredObject() 00060 {} 00061 00062 00063 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // 00064 00065 void Foam::writeRegisteredObject::read(const dictionary& dict) 00066 { 00067 if (active_) 00068 { 00069 dict.lookup("objectNames") >> objectNames_; 00070 } 00071 } 00072 00073 00074 void Foam::writeRegisteredObject::execute() 00075 { 00076 // Do nothing - only valid on write 00077 } 00078 00079 00080 void Foam::writeRegisteredObject::end() 00081 { 00082 // Do nothing - only valid on write 00083 } 00084 00085 00086 void Foam::writeRegisteredObject::write() 00087 { 00088 if (active_) 00089 { 00090 forAll(objectNames_, i) 00091 { 00092 if (obr_.foundObject<regIOobject>(objectNames_[i])) 00093 { 00094 regIOobject& obj = 00095 const_cast<regIOobject&> 00096 ( 00097 obr_.lookupObject<regIOobject>(objectNames_[i]) 00098 ); 00099 // Switch off automatic writing to prevent double write 00100 obj.writeOpt() = IOobject::NO_WRITE; 00101 obj.write(); 00102 } 00103 else 00104 { 00105 WarningIn 00106 ( 00107 "Foam::writeRegisteredObject::read(const dictionary&)" 00108 ) << "Object " << objectNames_[i] << " not found in " 00109 << "database. Available objects are:" << nl << obr_.toc() 00110 << endl; 00111 } 00112 00113 } 00114 } 00115 } 00116 00117 00118 // ************************ vim: set sw=4 sts=4 et: ************************ //