From fafb3e888542b47a1bf8fc04f0b57b983d829cdb Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 12 Feb 2009 22:13:30 +0100 Subject: [PATCH] functionObjectList and Time modifications - added clear() method to functionObjectList. It also gets called by ~Time(). This should destroy function objects before anything else gets destroyed (eg, objectRegistry). --- src/OpenFOAM/db/Time/Time.C | 19 ++++++++++++------- src/OpenFOAM/db/Time/TimeIO.C | 17 +++-------------- .../functionObjectList/functionObjectList.C | 16 +++++++++++++--- .../functionObjectList/functionObjectList.H | 10 ++++++++++ .../db/objectRegistry/objectRegistry.C | 16 +++++----------- src/postProcessing/Allwmake | 2 +- .../outputFilterOutputControl.C | 8 ++++---- .../outputFilterOutputControl.H | 12 ++++-------- src/turbulenceModels/Allwmake | 6 +++--- 9 files changed, 55 insertions(+), 51 deletions(-) diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C index b65652fb9c..22c9a5236f 100644 --- a/src/OpenFOAM/db/Time/Time.C +++ b/src/OpenFOAM/db/Time/Time.C @@ -27,6 +27,8 @@ License #include "Time.H" #include "PstreamReduceOps.H" +#include + // * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * * // defineTypeNameAndDebug(Foam::Time, 0); @@ -350,18 +352,21 @@ Foam::Time::Time // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::Time::~Time() -{} +{ + // destroy function objects first + functionObjects_.clear(); +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::word Foam::Time::timeName(const scalar t) { - std::ostringstream osBuffer; - osBuffer.setf(ios_base::fmtflags(format_), ios_base::floatfield); - osBuffer.precision(precision_); - osBuffer << t; - return osBuffer.str(); + std::ostringstream buf; + buf.setf(ios_base::fmtflags(format_), ios_base::floatfield); + buf.precision(precision_); + buf << t; + return buf.str(); } @@ -643,7 +648,7 @@ Foam::Time& Foam::Time::operator++() setTime(0.0, timeIndex_); } - switch(writeControl_) + switch (writeControl_) { case wcTimeStep: outputTime_ = !(timeIndex_ % label(writeInterval_)); diff --git a/src/OpenFOAM/db/Time/TimeIO.C b/src/OpenFOAM/db/Time/TimeIO.C index 5a1795e1ef..58197b520e 100644 --- a/src/OpenFOAM/db/Time/TimeIO.C +++ b/src/OpenFOAM/db/Time/TimeIO.C @@ -264,19 +264,8 @@ bool Foam::Time::writeObject timeDict.add("deltaT", deltaT_); timeDict.add("deltaT0", deltaT0_); - timeDict.regIOobject::writeObject - ( - fmt, - ver, - cmp - ); - - bool writeOK = objectRegistry::writeObject - ( - fmt, - ver, - cmp - ); + timeDict.regIOobject::writeObject(fmt, ver, cmp); + bool writeOK = objectRegistry::writeObject(fmt, ver, cmp); if (writeOK && purgeWrite_) { @@ -306,7 +295,7 @@ bool Foam::Time::writeNow() bool Foam::Time::writeAndEnd() { - stopAt_ = saWriteNow; + stopAt_ = saWriteNow; endTime_ = value(); return writeNow(); diff --git a/src/OpenFOAM/db/functionObjectList/functionObjectList.C b/src/OpenFOAM/db/functionObjectList/functionObjectList.C index 6f014d7859..a4f046b451 100644 --- a/src/OpenFOAM/db/functionObjectList/functionObjectList.C +++ b/src/OpenFOAM/db/functionObjectList/functionObjectList.C @@ -97,6 +97,15 @@ Foam::functionObjectList::~functionObjectList() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::functionObjectList::clear() +{ + PtrList::clear(); + digests_.clear(); + indices_.clear(); + updated_ = false; +} + + bool Foam::functionObjectList::start() { return read(); @@ -157,7 +166,6 @@ bool Foam::functionObjectList::read() HashTable