diff --git a/applications/utilities/mesh/manipulation/polyDualMesh/meshDualiser.C b/applications/utilities/mesh/manipulation/polyDualMesh/meshDualiser.C index ea88cf6198bfa5de24ce1f6b1a419591a29b23f9..9ef58b47e40934bcf8a0a2cc5c14953b333769f4 100644 --- a/applications/utilities/mesh/manipulation/polyDualMesh/meshDualiser.C +++ b/applications/utilities/mesh/manipulation/polyDualMesh/meshDualiser.C @@ -49,19 +49,17 @@ void Foam::meshDualiser::checkPolyTopoChange(const polyTopoChange& meshMod) } labelList oldToNew; - pointField newPoints; - bool hasMerged = mergePoints + label nUnique = mergePoints ( points, 1E-6, false, - oldToNew, - newPoints + oldToNew ); - if (hasMerged) + if (nUnique < points.size()) { - labelListList newToOld(invertOneToMany(newPoints.size(), oldToNew)); + labelListList newToOld(invertOneToMany(nUnique, oldToNew)); forAll(newToOld, newI) { @@ -225,17 +223,15 @@ Foam::label Foam::meshDualiser::addInternalFace pointField facePoints(meshMod.points(), newFace); labelList oldToNew; - pointField newPoints; - bool hasMerged = mergePoints + label nUnique = mergePoints ( facePoints, 1E-6, false, - oldToNew, - newPoints + oldToNew ); - if (hasMerged) + if (nUnique < facePoints.size()) { FatalErrorIn("addInternalFace(..)") << "verts:" << verts << " newFace:" << newFace diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index da569b2e2113f39cd7b1c4401847cc2938f3e715..cbd98885739d0a9f300d2630dc591c273cf59ffd 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -45,6 +45,7 @@ primitives/Tensor/lists/symmTensorList.C primitives/Tensor/lists/tensorList.C primitives/Vector/complexVector/complexVector.C +primitives/Vector/floatVector/floatVector.C primitives/Vector/labelVector/labelVector.C primitives/Vector/vector/vector.C primitives/Vector/lists/vectorList.C @@ -501,7 +502,6 @@ meshes/treeBoundBox/treeBoundBox.C meshTools = meshes/meshTools $(meshTools)/matchPoints.C -$(meshTools)/mergePoints.C fields/UniformDimensionedFields/uniformDimensionedFields.C fields/cloud/cloud.C diff --git a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C index 10ac331363c8f4217b4b382b075ac2f722b846e7..3ce3d4a51bda1f701dbd9270588e6cdaadcd8095 100644 --- a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C +++ b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C @@ -36,7 +36,6 @@ License #include "removeCells.H" #include "polyModifyFace.H" #include "polyRemovePoint.H" -#include "mergePoints.H" #include "mapDistributePolyMesh.H" #include "surfaceFields.H" #include "syncTools.H" diff --git a/src/dynamicMesh/polyMeshAdder/polyMeshAdder.C b/src/dynamicMesh/polyMeshAdder/polyMeshAdder.C index c2cde770f2e5807024066cf86c6b75af1f9b98f2..348f61db2bf8f7d09514e0d70fe3f5cad5ac42cb 100644 --- a/src/dynamicMesh/polyMeshAdder/polyMeshAdder.C +++ b/src/dynamicMesh/polyMeshAdder/polyMeshAdder.C @@ -1859,24 +1859,22 @@ Foam::Map<Foam::label> Foam::polyMeshAdder::findSharedPoints ); labelList toMergedPoints; - pointField mergedPoints; - bool hasMerged = Foam::mergePoints + label nUnique = Foam::mergePoints ( connectedPoints, mergeDist, false, - toMergedPoints, - mergedPoints + toMergedPoints ); - if (hasMerged) + if (nUnique < connectedPoints.size()) { // Invert toMergedPoints const labelListList mergeSets ( invertOneToMany ( - mergedPoints.size(), + nUnique, toMergedPoints ) ); @@ -1919,8 +1917,7 @@ Foam::Map<Foam::label> Foam::polyMeshAdder::findSharedPoints //- Old: geometric merging. Causes problems for two close shared points. //labelList sharedToMerged; - //pointField mergedPoints; - //bool hasMerged = Foam::mergePoints + //label nUnique = Foam::mergePoints //( // pointField // ( @@ -1929,8 +1926,7 @@ Foam::Map<Foam::label> Foam::polyMeshAdder::findSharedPoints // ), // mergeDist, // false, - // sharedToMerged, - // mergedPoints + // sharedToMerged //); // //// Find out which sets of points get merged and create a map from @@ -1938,7 +1934,7 @@ Foam::Map<Foam::label> Foam::polyMeshAdder::findSharedPoints // //Map<label> pointToMaster(10*sharedToMerged.size()); // - //if (hasMerged) + //if (nUnique < sharedPointLabels.size()) //{ // labelListList mergeSets // ( diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C index dcb2c6cca5dc9d4af4b7aa0786b5aa7c6c650698..ea29efbb8454bcc368960ac1887ec7648eb9937b 100644 --- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C +++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C @@ -63,27 +63,26 @@ Foam::label Foam::autoSnapDriver::getCollocatedPoints ) { labelList pointMap; - pointField newPoints; - bool hasMerged = mergePoints + label nUnique = mergePoints ( points, // points tol, // mergeTol false, // verbose - pointMap, - newPoints + pointMap ); + bool hasMerged = (nUnique < points.size()); if (!returnReduce(hasMerged, orOp<bool>())) { return 0; } - // Determine which newPoints are referenced more than once + // Determine which merged points are referenced more than once label nCollocated = 0; // Per old point the newPoint. Or -1 (not set yet) or -2 (already seen // twice) - labelList firstOldPoint(newPoints.size(), -1); + labelList firstOldPoint(nUnique, -1); forAll(pointMap, oldPointI) { label newPointI = pointMap[oldPointI]; diff --git a/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.C b/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.C index 451d00c03d56060f2bfee18f77529cfad4e9580b..022d6fb8218149404dcc72e150693fc36de1de53 100644 --- a/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.C +++ b/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.C @@ -2096,7 +2096,8 @@ Foam::triSurface Foam::triSurfaceTools::mergePoints ( newTriangles, surf.patches(), - newPoints + newPoints, + true //reuse storage ); } else