From 925173d04073c327b3be35e3bf045612fb82c62c Mon Sep 17 00:00:00 2001 From: Andrew Heather <> Date: Fri, 16 Nov 2018 15:20:26 +0000 Subject: [PATCH] ENH: writeFile - enable file creation at a specified time. Fixes #1096 --- .../db/functionObjects/writeFile/writeFile.C | 34 +++++++++++-------- .../db/functionObjects/writeFile/writeFile.H | 19 +++++++++-- 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C index 48f4e217bc..2326536279 100644 --- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C +++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C @@ -84,18 +84,18 @@ Foam::fileName Foam::functionObjects::writeFile::baseTimeDir() const Foam::autoPtr Foam::functionObjects::writeFile::createFile ( - const word& name + const word& name, + const scalar time ) const { autoPtr osPtr; if (Pstream::master() && writeToFile_) { - const scalar startTime = fileObr_.time().startTime().value(); - const scalar userStartTime = fileObr_.time().timeToUserTime(startTime); - const word startTimeName = Time::timeName(userStartTime); + const scalar userTime = fileObr_.time().timeToUserTime(time); + const word timeName = Time::timeName(userTime); - fileName outputDir(baseFileDir()/prefix_/startTimeName); + fileName outputDir(baseFileDir()/prefix_/timeName); mkDir(outputDir); @@ -105,7 +105,7 @@ Foam::autoPtr Foam::functionObjects::writeFile::createFile IFstream is(outputDir/(fName + ".dat")); if (is.good()) { - fName = fName + "_" + startTimeName; + fName = fName + "_" + timeName; } osPtr.reset(new OFstream(outputDir/(fName + ".dat"))); @@ -123,6 +123,16 @@ Foam::autoPtr Foam::functionObjects::writeFile::createFile } +Foam::autoPtr Foam::functionObjects::writeFile::createFile +( + const word& name +) const +{ + return createFile(name, startTime_); + +} + + void Foam::functionObjects::writeFile::resetFile(const word& fileName) { fileName_ = fileName; @@ -153,7 +163,8 @@ Foam::functionObjects::writeFile::writeFile filePtr_(), writePrecision_(IOstream::defaultPrecision()), writeToFile_(true), - writtenHeader_(false) + writtenHeader_(false), + startTime_(obr.time().startTime().value()) {} @@ -171,7 +182,8 @@ Foam::functionObjects::writeFile::writeFile filePtr_(), writePrecision_(IOstream::defaultPrecision()), writeToFile_(true), - writtenHeader_(false) + writtenHeader_(false), + startTime_(obr.time().startTime().value()) { read(dict); @@ -182,12 +194,6 @@ Foam::functionObjects::writeFile::writeFile } -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::functionObjects::writeFile::~writeFile() -{} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // bool Foam::functionObjects::writeFile::read(const dictionary& dict) diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H index 6d58cb29fc..3dcc397ff6 100644 --- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H +++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -82,6 +82,9 @@ protected: //- Flag to identify whether the header has been written bool writtenHeader_; + //- Start time value + scalar startTime_; + // Protected Member Functions @@ -94,8 +97,18 @@ protected: //- Return the base directory for the current time value fileName baseTimeDir() const; + //- Return an autoPtr to a new file for a given time + virtual autoPtr createFile + ( + const word& name, + const scalar time + ) const; + //- Return an autoPtr to a new file - virtual autoPtr createFile(const word& name) const; + virtual autoPtr createFile + ( + const word& name + ) const; //- Reset internal file pointer to new file with new name virtual void resetFile(const word& name); @@ -142,7 +155,7 @@ public: //- Destructor - virtual ~writeFile(); + virtual ~writeFile() = default; // Member Functions