From bed8dd4bc79b7b0b070a8cd0f0d77b91c5ccfc6e Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Fri, 11 Aug 2017 00:07:48 +0100 Subject: [PATCH] fileOperation: Corrected processor counting for moving mesh cases --- .../decomposePar/decomposePar.C | 6 +++++ src/OSspecific/POSIX/POSIX.C | 26 +++++++++++++++++++ .../fileOperation/fileOperation.C | 9 +------ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C index c545815932..8a2c513fa0 100644 --- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C +++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C @@ -392,6 +392,12 @@ int main(int argc, char *argv[]) Info<< "Using existing processor directories" << nl; } + if (args.optionFound("region")) + { + procDirsProblem = false; + forceOverwrite = false; + } + if (forceOverwrite) { Info<< "Removing " << nProcs diff --git a/src/OSspecific/POSIX/POSIX.C b/src/OSspecific/POSIX/POSIX.C index 9fa15a2e52..708375bfad 100644 --- a/src/OSspecific/POSIX/POSIX.C +++ b/src/OSspecific/POSIX/POSIX.C @@ -884,6 +884,32 @@ bool Foam::cp(const fileName& src, const fileName& dest, const bool followLink) return false; } + char* realSrcPath = realpath(src.c_str(), nullptr); + char* realDestPath = realpath(destFile.c_str(), nullptr); + const bool samePath = strcmp(realSrcPath, realDestPath) == 0; + + if (POSIX::debug && samePath) + { + InfoInFunction + << "Attempt to copy " << realSrcPath << " to itself" << endl; + } + + if (realSrcPath) + { + free(realSrcPath); + } + + if (realDestPath) + { + free(realDestPath); + } + + // Do not copy over self when src is actually a link to dest + if (samePath) + { + return false; + } + // Copy files fileNameList contents = readDir(src, fileName::FILE, false, followLink); forAll(contents, i) diff --git a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C index 5949754fe7..110849d575 100644 --- a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C +++ b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C @@ -591,14 +591,7 @@ Foam::label Foam::fileOperation::nProcs label nProcs = 0; while ( - isDir - ( - dir - /(word("processor") + name(nProcs)) - /"constant" - /local - /polyMesh::meshSubDir - ) + isDir(dir/(word("processor") + name(nProcs))) ) { ++nProcs;