ENH: writeFile - enable file creation at a specified time. Fixes #1096

This commit is contained in:
Andrew Heather
2018-11-16 15:20:26 +00:00
parent cab7820fb3
commit 925173d040
2 changed files with 36 additions and 17 deletions

View File

@ -84,18 +84,18 @@ Foam::fileName Foam::functionObjects::writeFile::baseTimeDir() const
Foam::autoPtr<Foam::OFstream> Foam::functionObjects::writeFile::createFile
(
const word& name
const word& name,
const scalar time
) const
{
autoPtr<OFstream> 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::OFstream> 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::OFstream> Foam::functionObjects::writeFile::createFile
}
Foam::autoPtr<Foam::OFstream> 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)

View File

@ -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<OFstream> createFile
(
const word& name,
const scalar time
) const;
//- Return an autoPtr to a new file
virtual autoPtr<OFstream> createFile(const word& name) const;
virtual autoPtr<OFstream> 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