From d703f09d11a97d28a1e65f6566292ac308f533f7 Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 29 May 2018 12:13:13 +0100 Subject: [PATCH] BUG: fileOperation: avoid par syn in uncollated. Fixes #846. --- .../redistributePar/redistributePar.C | 6 ++++++ .../fileOperation/fileOperation.C | 20 +++++++++++++++++-- .../fileOperation/fileOperation.H | 16 +++++++++++---- .../uncollatedFileOperation.C | 17 +++++++++++++++- .../uncollatedFileOperation.H | 11 +++++++++- 5 files changed, 62 insertions(+), 8 deletions(-) diff --git a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C index baf3104190..e463f8d493 100644 --- a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C +++ b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C @@ -2396,7 +2396,10 @@ int main(int argc, char *argv[]) instantList timeDirs; if (Pstream::master()) { + const bool oldParRun = Pstream::parRun(); + Pstream::parRun() = false; timeDirs = Time::findTimes(args.path(), "constant"); + Pstream::parRun() = oldParRun; } Pstream::scatter(timeDirs); for (const instant& t : timeDirs) @@ -2432,7 +2435,10 @@ int main(int argc, char *argv[]) if (Pstream::master()) { + const bool oldParRun = Pstream::parRun(); + Pstream::parRun() = false; timeDirs = Time::findTimes(basePath, "constant"); + Pstream::parRun() = oldParRun; } Pstream::scatter(timeDirs); for (const instant& t : timeDirs) diff --git a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C index 999562fa03..e66c6fc019 100644 --- a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C +++ b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C @@ -238,7 +238,11 @@ bool Foam::fileOperation::isFileOrDir(const bool isFile, const fileName& f) Foam::tmpNrc -Foam::fileOperation::lookupProcessorsPath(const fileName& fName) const +Foam::fileOperation::lookupAndCacheProcessorsPath +( + const fileName& fName, + const bool syncPar +) const { // If path is local to a processor (e.g. contains 'processor2') // find the corresponding actual processor directory (e.g. 'processors4') @@ -344,7 +348,11 @@ Foam::fileOperation::lookupProcessorsPath(const fileName& fName) const } } - if (returnReduce(procDirs.size(), sumOp