diff --git a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C index 25030ac9c1694a2e6e7286a729aed5e29c4ef3bf..6dc98535c0af7cc252368970e1eaa6a612af1e23 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<mapDistributePolyMesh> redistributeAndWrite PtrList<DimensionedField<symmTensor, volMesh>> dimSymmTensorFields; PtrList<DimensionedField<tensor, volMesh>> dimTensorFields; + DynamicList<word> pointFieldNames; + if (doReadFields) { @@ -1051,6 +1054,40 @@ autoPtr<mapDistributePolyMesh> 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<mapDistributePolyMesh> 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<mapDistributePolyMesh> 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 9aceb0b45923c185fcf9895f624c98f867054d04..259f747bc868ad7f58c21b3475bcbc8cc22b3e28 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 09694f7a414f99e3929aa3dfdcddd6ae7464c09d..e14e9761c762bac03c912bc021a9e6dc415ca2c9 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 1a76ea75b48df72176c25d422cc330050745cd27..fb4254a4e279682a0aea729877dfd9d7f3890a59 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 88874be430a5ee32a55e7a2e168895976cf1f553..1a883bc5da85b0738590f6e38d640966848c4405 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 81f81dc50806d351320101f8d795a2f5be513a3e..acd25a6e595d0a2ef459adb2da7a1f783bf55343 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 8666d5bf8060ff7697ec8aedae4eab90556c102f..e01bb3f781f9b2c80413397db9d41bddf182e8e0 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<class T> static T gAverage @@ -1468,7 +1471,6 @@ public: // NamedEnum template<class Enum> 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 b678c4f6548e84e3f8a02ac51536cec2c90360b2..2ecfee034b1a652a4861b2c52f2408d9766cf2b4 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