From d9740aa33ed5aca77e74be521a6b0eb7b089b09f Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 21 Nov 2016 17:20:34 +0000 Subject: [PATCH] ENH: redistributePar: remove pointFields --- .../redistributePar/redistributePar.C | 63 +++++++++++++++++++ .../polyTopoChange/hexRef8/hexRef8.C | 35 ++++++++++- .../polyTopoChange/hexRef8/hexRef8.H | 5 +- .../hexRef8/refinementHistory.C | 23 ++++++- .../hexRef8/refinementHistory.H | 8 ++- .../meshRefinement/meshRefinement.C | 24 +++++++ .../meshRefinement/meshRefinement.H | 4 +- .../reconstruct/reconstruct/processorMeshes.C | 3 +- 8 files changed, 158 insertions(+), 7 deletions(-) diff --git a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C index 25030ac9c1..6dc98535c0 100644 --- a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C +++ b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C @@ -81,6 +81,7 @@ Usage #include "parLagrangianRedistributor.H" #include "unmappedPassiveParticleCloud.H" #include "hexRef8Data.H" +#include "pointFields.H" using namespace Foam; @@ -838,6 +839,8 @@ autoPtr redistributeAndWrite PtrList> dimSymmTensorFields; PtrList> dimTensorFields; + DynamicList pointFieldNames; + if (doReadFields) { @@ -1051,6 +1054,40 @@ autoPtr redistributeAndWrite ); + // pointFields currently not supported. Read their names so we + // can delete them. + { + // Get my objects of type + pointFieldNames.append + ( + objects.lookupClass(pointScalarField::typeName).sortedNames() + ); + pointFieldNames.append + ( + objects.lookupClass(pointVectorField::typeName).sortedNames() + ); + pointFieldNames.append + ( + objects.lookupClass + ( + pointSphericalTensorField::typeName + ).sortedNames() + ); + pointFieldNames.append + ( + objects.lookupClass + ( + pointSymmTensorField::typeName + ).sortedNames() + ); + pointFieldNames.append + ( + objects.lookupClass(pointTensorField::typeName).sortedNames() + ); + + // Make sure all processors have the same set + Pstream::scatter(pointFieldNames); + } if (Pstream::master() && decompose) { @@ -1138,6 +1175,19 @@ autoPtr redistributeAndWrite mesh.write(); topoSet::removeFiles(mesh); + forAll(pointFieldNames, i) + { + IOobject io + ( + pointFieldNames[i], + runTime.timeName(), + mesh + ); + + fileName fieldFile(io.objectPath()); + if (topoSet::debug) DebugVar(fieldFile); + rm(fieldFile); + } // Now we've written all. Reset caseName on master Info<< "Restoring caseName to " << proc0CaseName << endl; @@ -1148,6 +1198,19 @@ autoPtr redistributeAndWrite { mesh.write(); topoSet::removeFiles(mesh); + forAll(pointFieldNames, i) + { + IOobject io + ( + pointFieldNames[i], + runTime.timeName(), + mesh + ); + + fileName fieldFile(io.objectPath()); + if (topoSet::debug) DebugVar(fieldFile); + rm(fieldFile); + } } Info<< "Written redistributed mesh to " << mesh.facesInstance() << nl << endl; diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C index 9aceb0b459..259f747bc8 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -5751,9 +5751,42 @@ bool Foam::hexRef8::write() const { writeOk = writeOk && history_.write(); } + else + { + refinementHistory::removeFiles(mesh_); + } return writeOk; } +void Foam::hexRef8::removeFiles(const polyMesh& mesh) +{ + IOobject io + ( + "dummy", + mesh.facesInstance(), + mesh.meshSubDir, + mesh + ); + fileName setsDir(io.path()); + + if (topoSet::debug) DebugVar(setsDir); + + if (exists(setsDir/"cellLevel")) + { + rm(setsDir/"cellLevel"); + } + if (exists(setsDir/"pointLevel")) + { + rm(setsDir/"pointLevel"); + } + if (exists(setsDir/"level0Edge")) + { + rm(setsDir/"level0Edge"); + } + refinementHistory::removeFiles(mesh); +} + + // ************************************************************************* // diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.H index 09694f7a41..e14e9761c7 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.H +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -568,6 +568,9 @@ public: //- Force writing refinement+history to polyMesh directory. bool write() const; + //- Helper: remove all relevant files from mesh instance + static void removeFiles(const polyMesh&); + }; diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C index 1a76ea75b4..fb4254a4e2 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,6 +28,7 @@ License #include "mapDistributePolyMesh.H" #include "polyMesh.H" #include "syncTools.H" +#include "topoSet.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -1736,6 +1737,26 @@ bool Foam::refinementHistory::writeData(Ostream& os) const } +void Foam::refinementHistory::removeFiles(const polyMesh& mesh) +{ + IOobject io + ( + "dummy", + mesh.facesInstance(), + mesh.meshSubDir, + mesh + ); + fileName setsDir(io.path()); + + if (topoSet::debug) DebugVar(setsDir); + + if (exists(setsDir/typeName)) + { + rm(setsDir/typeName); + } +} + + // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // Foam::Istream& Foam::operator>>(Istream& is, refinementHistory& rh) diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.H index 88874be430..1a883bc5da 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.H +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -87,7 +87,7 @@ namespace Foam // Forward declaration of classes class mapPolyMesh; class mapDistributePolyMesh; - +class polyMesh; // Forward declaration of friend functions and operators @@ -401,6 +401,10 @@ public: ) const; + //- Helper: remove all sets files from mesh instance + static void removeFiles(const polyMesh&); + + // IOstream Operators //- Istream operator. Note: does not do a reduction - does not set diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C index 81f81dc508..acd25a6e59 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C +++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C @@ -3038,6 +3038,30 @@ void Foam::meshRefinement::write } +void Foam::meshRefinement::removeFiles(const polyMesh& mesh) +{ + IOobject io + ( + "dummy", + mesh.facesInstance(), + mesh.meshSubDir, + mesh + ); + fileName setsDir(io.path()); + + if (topoSet::debug) DebugVar(setsDir); + + // Remove local files + if (exists(setsDir/"surfaceIndex")) + { + rm(setsDir/"surfaceIndex"); + } + + // Remove other files + hexRef8::removeFiles(mesh); +} + + Foam::meshRefinement::writeType Foam::meshRefinement::writeLevel() { return writeLevel_; diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H index 8666d5bf80..e01bb3f781 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H +++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H @@ -1447,6 +1447,9 @@ public: const fileName& ) const; + //- Helper: remove all relevant files from mesh instance + static void removeFiles(const polyMesh&); + //- Helper: calculate average template static T gAverage @@ -1468,7 +1471,6 @@ public: // NamedEnum template static int readFlags(const Enum& namedEnum, const wordList&); - }; diff --git a/src/parallel/reconstruct/reconstruct/processorMeshes.C b/src/parallel/reconstruct/reconstruct/processorMeshes.C index b678c4f654..2ecfee034b 100644 --- a/src/parallel/reconstruct/reconstruct/processorMeshes.C +++ b/src/parallel/reconstruct/reconstruct/processorMeshes.C @@ -26,6 +26,7 @@ License #include "processorMeshes.H" #include "Time.H" #include "primitiveMesh.H" +#include "topoSet.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -279,7 +280,7 @@ void Foam::processorMeshes::removeFiles(const polyMesh& mesh) mesh ).objectPath() ); - if (debug) DebugVar(pointPath); + if (topoSet::debug) DebugVar(pointPath); rm(pointPath); rm