From 1df1f8fe208081e61f054acdd916b88cecf6b430 Mon Sep 17 00:00:00 2001 From: mark <mark@opencfd> Date: Wed, 19 Oct 2016 10:42:47 +0200 Subject: [PATCH] STYLE: adjust mergePoints to ease adoption of different list types (issue #250) - A preliminary minor adjustment only. --- src/OpenFOAM/meshes/meshTools/mergePoints.C | 25 +++++++++------------ 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/OpenFOAM/meshes/meshTools/mergePoints.C b/src/OpenFOAM/meshes/meshTools/mergePoints.C index 04d34621977..506082895da 100644 --- a/src/OpenFOAM/meshes/meshTools/mergePoints.C +++ b/src/OpenFOAM/meshes/meshTools/mergePoints.C @@ -39,23 +39,22 @@ Foam::label Foam::mergePoints const Type& origin ) { - Type compareOrigin = origin; - - if (origin == Type::max) - { - if (points.size()) - { - compareOrigin = sum(points)/points.size(); - } - } - // Create a old to new point mapping array pointMap.setSize(points.size()); pointMap = -1; if (points.empty()) { - return points.size(); + return 0; + } + + // Explicitly convert to Field to support various list types + tmp<Field<Type>> tPoints(new Field<Type>(points)); + + Type compareOrigin = origin; + if (origin == Type::max) + { + compareOrigin = sum(tPoints())/points.size(); } // We're comparing distance squared to origin first. @@ -70,7 +69,7 @@ Foam::label Foam::mergePoints const scalar mergeTolSqr = Foam::sqr(scalar(mergeTol)); // Sort points by magSqr - const Field<Type> d(points - compareOrigin); + const Field<Type> d(tPoints - compareOrigin); List<scalar> magSqrD(d.size()); forAll(d, pointI) @@ -98,12 +97,10 @@ Foam::label Foam::mergePoints label newPointI = 0; - // Handle 0th point separately (is always unique) label pointI = order[0]; pointMap[pointI] = newPointI++; - for (label sortI = 1; sortI < order.size(); sortI++) { // Get original point index -- GitLab