diff --git a/src/OpenFOAM/db/functionObjects/logFiles/logFiles.C b/src/OpenFOAM/db/functionObjects/logFiles/logFiles.C index 78483c8bbb..a58b00d7d1 100644 --- a/src/OpenFOAM/db/functionObjects/logFiles/logFiles.C +++ b/src/OpenFOAM/db/functionObjects/logFiles/logFiles.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2012-2016 OpenFOAM Foundation - Copyright (C) 2016 OpenCFD Ltd. + Copyright (C) 2016-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -43,7 +43,7 @@ void Foam::functionObjects::logFiles::createFiles() { if (!filePtrs_.set(i)) { - filePtrs_.set(i, createFile(names_[i])); + filePtrs_.set(i, newFileAtStartTime(names_[i])); initStream(filePtrs_[i]); } diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C index 8c2d9f2cc4..54bde949ba 100644 --- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C +++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C @@ -76,7 +76,35 @@ Foam::fileName Foam::functionObjects::writeFile::baseTimeDir() const } -Foam::autoPtr Foam::functionObjects::writeFile::createFile +Foam::autoPtr Foam::functionObjects::writeFile::newFile +( + const fileName& fName +) const +{ + autoPtr osPtr; + + if (Pstream::master() && writeToFile_) + { + fileName outputDir(baseFileDir()/prefix_/fName.path()); + + mkDir(outputDir); + + osPtr.reset(new OFstream(outputDir/(fName.name() + ".dat"))); + + if (!osPtr->good()) + { + FatalIOErrorInFunction(osPtr()) << "Cannot open file" + << exit(FatalIOError); + } + + initStream(osPtr()); + } + + return osPtr; +} + + +Foam::autoPtr Foam::functionObjects::writeFile::newFileAtTime ( const word& name, scalar timeValue @@ -121,12 +149,13 @@ Foam::autoPtr Foam::functionObjects::writeFile::createFile } -Foam::autoPtr Foam::functionObjects::writeFile::createFile +Foam::autoPtr +Foam::functionObjects::writeFile::newFileAtStartTime ( const word& name ) const { - return createFile(name, startTime_); + return newFileAtTime(name, startTime_); } @@ -134,7 +163,7 @@ Foam::autoPtr Foam::functionObjects::writeFile::createFile void Foam::functionObjects::writeFile::resetFile(const word& fileName) { fileName_ = fileName; - filePtr_ = createFile(fileName_); + filePtr_ = newFileAtStartTime(fileName_); } @@ -200,7 +229,7 @@ Foam::functionObjects::writeFile::writeFile if (writeToFile_) { - filePtr_ = createFile(fileName_); + filePtr_ = newFileAtStartTime(fileName_); } } diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H index cb89d303ad..b856e09898 100644 --- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H +++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H @@ -137,15 +137,19 @@ protected: //- Return the base directory for the current time value fileName baseTimeDir() const; + //- Return autoPtr to a new file using file name + // Note: no check for if the file already exists + virtual autoPtr newFile(const fileName& fName) const; + //- Return autoPtr to a new file for a given time - virtual autoPtr createFile + virtual autoPtr newFileAtTime ( const word& name, scalar timeValue ) const; //- Return autoPtr to a new file using the simulation start time - virtual autoPtr createFile + virtual autoPtr newFileAtStartTime ( const word& name ) const; @@ -161,6 +165,35 @@ protected: void operator=(const writeFile&) = delete; + // Housekeeping + + //- Deprecated(2022-09) Return autoPtr to a new file for a given time + // + // \deprecated(2022-09) - use newFileAtTime function + FOAM_DEPRECATED_FOR(2022-09, "newFileAtTime function") + virtual autoPtr createFile + ( + const word& name, + scalar timeValue + ) const + { + return newFileAtTime(name, timeValue); + } + + //- Deprecated(2022-09) Return autoPtr to a new file + //- using the simulation start time + // + // \deprecated(2022-09) - use newFileAtStartTime function + FOAM_DEPRECATED_FOR(2022-09, "newFileAtStartTime function") + virtual autoPtr createFile + ( + const word& name + ) const + { + return newFileAtStartTime(name); + } + + public: //- Additional characters for writing diff --git a/src/functionObjects/field/Curle/Curle.C b/src/functionObjects/field/Curle/Curle.C index 9442cfa7d5..a03bf0fd93 100644 --- a/src/functionObjects/field/Curle/Curle.C +++ b/src/functionObjects/field/Curle/Curle.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2021 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -135,7 +135,7 @@ bool Foam::functionObjects::Curle::read(const dictionary& dict) rawFilePtrs_.set ( filei, - createFile("observer" + Foam::name(filei)) + newFileAtStartTime("observer" + Foam::name(filei)) ); if (rawFilePtrs_.set(filei)) diff --git a/src/functionObjects/field/DMD/DMDModels/derived/STDMD/STDMD.C b/src/functionObjects/field/DMD/DMDModels/derived/STDMD/STDMD.C index a1727fa865..2ef2efe23e 100644 --- a/src/functionObjects/field/DMD/DMDModels/derived/STDMD/STDMD.C +++ b/src/functionObjects/field/DMD/DMDModels/derived/STDMD/STDMD.C @@ -742,7 +742,7 @@ void Foam::DMDModels::STDMD::writeToFile(const word& fileName) const // Write objects of dynamics { autoPtr osPtr = - createFile + newFileAtTime ( fileName + "_" + fieldName_, mesh_.time().timeOutputValue() diff --git a/src/functionObjects/field/binField/binModels/binModel/binModel.C b/src/functionObjects/field/binField/binModels/binModel/binModel.C index 049860f116..13ff87985d 100644 --- a/src/functionObjects/field/binField/binModels/binModel/binModel.C +++ b/src/functionObjects/field/binField/binModels/binModel/binModel.C @@ -190,7 +190,7 @@ bool Foam::binModel::read(const dictionary& dict) filePtrs_.setSize(fieldNames_.size()); forAll(filePtrs_, i) { - filePtrs_.set(i, createFile(fieldNames_[i] + "Bin")); + filePtrs_.set(i, newFileAtStartTime(fieldNames_[i] + "Bin")); } setCoordinateSystem(dict); diff --git a/src/functionObjects/field/fluxSummary/fluxSummary.C b/src/functionObjects/field/fluxSummary/fluxSummary.C index 93c9b5ae87..d87ab130e6 100644 --- a/src/functionObjects/field/fluxSummary/fluxSummary.C +++ b/src/functionObjects/field/fluxSummary/fluxSummary.C @@ -910,7 +910,7 @@ bool Foam::functionObjects::fluxSummary::update() forAll(filePtrs_, zonei) { const word& zoneName = zoneNames_[zonei]; - filePtrs_.set(zonei, createFile(zoneName)); + filePtrs_.set(zonei, newFileAtStartTime(zoneName)); writeFileHeader ( zoneName, diff --git a/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C b/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C index ef50d4e471..73dff8766f 100644 --- a/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C +++ b/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2016-2020 OpenCFD Ltd. + Copyright (C) 2016-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -36,19 +36,19 @@ createFileNames() { if (writeToFile() && !prodFilePtr_) { - prodFilePtr_ = createFile("production"); + prodFilePtr_ = newFileAtStartTime("production"); writeHeader(prodFilePtr_(), "production"); writeFileHeader(prodFilePtr_()); - consFilePtr_ = createFile("consumption"); + consFilePtr_ = newFileAtStartTime("consumption"); writeHeader(consFilePtr_(), "consumption"); writeFileHeader(consFilePtr_()); - prodIntFilePtr_ = createFile("productionInt"); + prodIntFilePtr_ = newFileAtStartTime("productionInt"); writeHeader(prodIntFilePtr_(), "productionInt"); writeFileHeader(prodIntFilePtr_()); - consIntFilePtr_ = createFile("consumptionInt"); + consIntFilePtr_ = newFileAtStartTime("consumptionInt"); writeHeader(consIntFilePtr_(), "consumptionInt"); writeFileHeader(consIntFilePtr_()); } diff --git a/src/functionObjects/forces/forceCoeffs/forceCoeffs.C b/src/functionObjects/forces/forceCoeffs/forceCoeffs.C index 7dc901d3d6..3c08879e90 100644 --- a/src/functionObjects/forces/forceCoeffs/forceCoeffs.C +++ b/src/functionObjects/forces/forceCoeffs/forceCoeffs.C @@ -206,7 +206,7 @@ void Foam::functionObjects::forceCoeffs::createIntegratedDataFile() { if (!coeffFilePtr_.valid()) { - coeffFilePtr_ = createFile("coefficient"); + coeffFilePtr_ = newFileAtStartTime("coefficient"); writeIntegratedDataFileHeader("Coefficients", coeffFilePtr_()); } } diff --git a/src/functionObjects/forces/forces/forces.C b/src/functionObjects/forces/forces/forces.C index c1509c733d..4689e00656 100644 --- a/src/functionObjects/forces/forces/forces.C +++ b/src/functionObjects/forces/forces/forces.C @@ -386,13 +386,13 @@ void Foam::functionObjects::forces::createIntegratedDataFiles() { if (!forceFilePtr_.valid()) { - forceFilePtr_ = createFile("force"); + forceFilePtr_ = newFileAtStartTime("force"); writeIntegratedDataFileHeader("Force", forceFilePtr_()); } if (!momentFilePtr_.valid()) { - momentFilePtr_ = createFile("moment"); + momentFilePtr_ = newFileAtStartTime("moment"); writeIntegratedDataFileHeader("Moment", momentFilePtr_()); } } diff --git a/src/functionObjects/forces/propellerInfo/propellerInfo.C b/src/functionObjects/forces/propellerInfo/propellerInfo.C index a8f5e88b6c..5ea5e80224 100644 --- a/src/functionObjects/forces/propellerInfo/propellerInfo.C +++ b/src/functionObjects/forces/propellerInfo/propellerInfo.C @@ -181,7 +181,8 @@ void Foam::functionObjects::propellerInfo::createFiles() if (writePropellerPerformance_ && !propellerPerformanceFilePtr_) { - propellerPerformanceFilePtr_ = createFile("propellerPerformance"); + propellerPerformanceFilePtr_ = + newFileAtStartTime("propellerPerformance"); auto& os = propellerPerformanceFilePtr_(); writeHeader(os, "Propeller performance"); @@ -203,8 +204,9 @@ void Foam::functionObjects::propellerInfo::createFiles() if (writeWakeFields_) { - if (!wakeFilePtr_) wakeFilePtr_ = createFile("wake"); - if (!axialWakeFilePtr_) axialWakeFilePtr_ = createFile("axialWake"); + if (!wakeFilePtr_) wakeFilePtr_ = newFileAtStartTime("wake"); + if (!axialWakeFilePtr_) axialWakeFilePtr_ = + newFileAtStartTime("axialWake"); } } diff --git a/src/functionObjects/phaseSystems/sizeDistribution/sizeDistribution.C b/src/functionObjects/phaseSystems/sizeDistribution/sizeDistribution.C index 49dd86c8eb..41d0c784b8 100644 --- a/src/functionObjects/phaseSystems/sizeDistribution/sizeDistribution.C +++ b/src/functionObjects/phaseSystems/sizeDistribution/sizeDistribution.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2017-2019 OpenFOAM Foundation - Copyright (C) 2019-2020 OpenCFD Ltd. + Copyright (C) 2019-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -378,7 +378,7 @@ Foam::functionObjects::sizeDistribution::sizeDistribution { read(dict); resetFile(name); - createFile(name); + newFileAtStartTime(name); } diff --git a/src/functionObjects/randomProcesses/energySpectrum/energySpectrum.C b/src/functionObjects/randomProcesses/energySpectrum/energySpectrum.C index fe7072831c..13074535a0 100644 --- a/src/functionObjects/randomProcesses/energySpectrum/energySpectrum.C +++ b/src/functionObjects/randomProcesses/energySpectrum/energySpectrum.C @@ -105,7 +105,7 @@ void Foam::functionObjects::energySpectrum::calcAndWriteSpectrum E /= kappaNorm; Log << "Writing spectrum" << endl; - autoPtr osPtr = createFile(name(), time_.value()); + autoPtr osPtr = newFileAtTime(name(), time_.value()); OFstream& os = osPtr.ref(); writeFileHeader(os); diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FaceInteraction/FaceInteraction.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FaceInteraction/FaceInteraction.C index 1f246cbc10..bb2162c1b3 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FaceInteraction/FaceInteraction.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FaceInteraction/FaceInteraction.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2021 OpenCFD Ltd. + Copyright (C) 2021-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -209,7 +209,7 @@ Foam::FaceInteraction::FaceInteraction filePtrs_.set ( nZone, - this->createFile(modelName + '_' + zoneName) + this->newFileAtStartTime(modelName + '_' + zoneName) ); writeHeaderValue(filePtrs_[nZone], "Source", type()); diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleZoneInfo/ParticleZoneInfo.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleZoneInfo/ParticleZoneInfo.C index 74cf0cd89c..5f3c92bb17 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleZoneInfo/ParticleZoneInfo.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleZoneInfo/ParticleZoneInfo.C @@ -351,7 +351,11 @@ template void Foam::ParticleZoneInfo::write() { autoPtr osPtr = - this->createFile("particles", this->owner().time().timeOutputValue()); + this->newFileAtTime + ( + "particles", + this->owner().time().timeOutputValue() + ); if (Pstream::parRun()) {