From 3b63c760a953d554880b235d6904d07760d70b27 Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Tue, 17 May 2016 12:36:49 +0100 Subject: [PATCH] writeRegisteredObject: Now writes the <time>/uniform/time dictionary --- src/OpenFOAM/db/Time/Time.H | 3 + src/OpenFOAM/db/Time/TimeIO.C | 63 ++++++++++++------- .../writeRegisteredObject.C | 5 ++ 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/OpenFOAM/db/Time/Time.H b/src/OpenFOAM/db/Time/Time.H index b57d7739466..2d1fefe6dd0 100644 --- a/src/OpenFOAM/db/Time/Time.H +++ b/src/OpenFOAM/db/Time/Time.H @@ -372,6 +372,9 @@ public: const word& constantName = "constant" ); + //- Write time dictionary to the <time>/uniform directory + virtual bool writeTimeDict() const; + //- Write using given format, version and compression virtual bool writeObject ( diff --git a/src/OpenFOAM/db/Time/TimeIO.C b/src/OpenFOAM/db/Time/TimeIO.C index 918bdd548a1..436661040fa 100644 --- a/src/OpenFOAM/db/Time/TimeIO.C +++ b/src/OpenFOAM/db/Time/TimeIO.C @@ -410,6 +410,39 @@ void Foam::Time::readModifiedObjects() } +bool Foam::Time::writeTimeDict() const +{ + const word tmName(timeName()); + + IOdictionary timeDict + ( + IOobject + ( + "time", + tmName, + "uniform", + *this, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ) + ); + + timeDict.add("value", timeName(timeToUserTime(value()), maxPrecision_)); + timeDict.add("name", string(tmName)); + timeDict.add("index", timeIndex_); + timeDict.add("deltaT", timeToUserTime(deltaT_)); + timeDict.add("deltaT0", timeToUserTime(deltaT0_)); + + return timeDict.regIOobject::writeObject + ( + IOstream::ASCII, + IOstream::currentVersion, + IOstream::UNCOMPRESSED + ); +} + + bool Foam::Time::writeObject ( IOstream::streamFormat fmt, @@ -419,37 +452,19 @@ bool Foam::Time::writeObject { if (writeTime()) { - const word tmName(timeName()); - - IOdictionary timeDict - ( - IOobject - ( - "time", - tmName, - "uniform", - *this, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ) - ); - - timeDict.add("value", timeName(timeToUserTime(value()), maxPrecision_)); - timeDict.add("name", string(tmName)); - timeDict.add("index", timeIndex_); - timeDict.add("deltaT", timeToUserTime(deltaT_)); - timeDict.add("deltaT0", timeToUserTime(deltaT0_)); + bool writeOK = writeTimeDict(); - timeDict.regIOobject::writeObject(fmt, ver, cmp); - bool writeOK = objectRegistry::writeObject(fmt, ver, cmp); + if (writeOK) + { + writeOK = objectRegistry::writeObject(fmt, ver, cmp); + } if (writeOK) { // Does the writeTime trigger purging? if (writeTime_ && purgeWrite_) { - previousWriteTimes_.push(tmName); + previousWriteTimes_.push(timeName()); while (previousWriteTimes_.size() > purgeWrite_) { diff --git a/src/postProcessing/functionObjects/utilities/writeRegisteredObject/writeRegisteredObject.C b/src/postProcessing/functionObjects/utilities/writeRegisteredObject/writeRegisteredObject.C index 0963320dbcf..17dc699b4c0 100644 --- a/src/postProcessing/functionObjects/utilities/writeRegisteredObject/writeRegisteredObject.C +++ b/src/postProcessing/functionObjects/utilities/writeRegisteredObject/writeRegisteredObject.C @@ -103,6 +103,11 @@ bool Foam::functionObjects::writeRegisteredObject::write { Info<< type() << " " << name() << " output:" << nl; + if (!obr_.time().writeTime()) + { + obr_.time().writeTimeDict(); + } + DynamicList<word> allNames(obr_.toc().size()); forAll(objectNames_, i) { -- GitLab