diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C index 8bfb29b03b..fe856398ff 100644 --- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C +++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C @@ -161,6 +161,7 @@ Foam::functionObjects::writeFile::writeFile(const writeFile& wf) filePtr_(), writePrecision_(wf.writePrecision_), writeToFile_(wf.writeToFile_), + updateHeader_(wf.updateHeader_), writtenHeader_(wf.writtenHeader_), useUserTime_(wf.useUserTime_), startTime_(wf.startTime_) @@ -180,6 +181,7 @@ Foam::functionObjects::writeFile::writeFile fileName_(name), filePtr_(), writePrecision_(IOstream::defaultPrecision()), + updateHeader_(true), writeToFile_(writeToFile), writtenHeader_(false), useUserTime_(true), @@ -214,6 +216,9 @@ bool Foam::functionObjects::writeFile::read(const dictionary& dict) writePrecision_ = dict.getOrDefault("writePrecision", IOstream::defaultPrecision()); + updateHeader_ = + dict.lookupOrDefault("updateHeader", updateHeader_); + // Only write on master writeToFile_ = Pstream::master() && dict.getOrDefault("writeToFile", writeToFile_); @@ -248,6 +253,12 @@ bool Foam::functionObjects::writeFile::writeToFile() const } +bool Foam::functionObjects::writeFile::canWriteHeader() const +{ + return writeToFile_ && (updateHeader_ || !writtenHeader_); +} + + Foam::label Foam::functionObjects::writeFile::charWidth() const { return writePrecision_ + addChars; diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H index 3d5a99d839..e59b73c61c 100644 --- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H +++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H @@ -82,6 +82,10 @@ protected: //- Flag to enable/disable writing to file bool writeToFile_; + //- Flag to update the header, e.g. on mesh changes. + //- Default is true. + bool updateHeader_; + //- Flag to identify whether the header has been written bool writtenHeader_; @@ -175,6 +179,9 @@ public: //- Flag to allow writing to file virtual bool writeToFile() const; + //- Flag to allow writing the header + virtual bool canWriteHeader() const; + //- Return width of character stream output virtual label charWidth() const; diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C index 59f9a8dd9b..ccc3c31375 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C @@ -543,9 +543,9 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::update() void Foam::functionObjects::fieldValues::surfaceFieldValue::writeFileHeader ( Ostream& os -) const +) { - if (operation_ != opNone) + if (canWriteHeader() && (operation_ != opNone)) { writeCommented(os, "Region type : "); os << regionTypeNames_[regionType_] << " " << regionName_ << endl; @@ -575,6 +575,8 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::writeFileHeader os << endl; } + + writtenHeader_ = true; } diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H index d5f264f440..f6d0ff0a14 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H @@ -529,7 +529,7 @@ protected: //- Output file header information - virtual void writeFileHeader(Ostream& os) const; + virtual void writeFileHeader(Ostream& os); public: