diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C index ded70e9529..9a5351a1f4 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C @@ -791,15 +791,19 @@ Foam::DistributedDelaunayMesh::rangeInsertReferredWithInfo label count = 0; for (PointIterator it = begin; it != end; ++it) { - const scalar distFromBbSqr = bb.distanceFromBoxSqr - ( - topoint(it->point()) - ); + const pointFromPoint samplePoint = topoint(it->point()); - pointsBbDistSqr.append - ( - std::make_pair(distFromBbSqr, count++) - ); + if (!bb.contains(samplePoint)) + { + const Foam::point nearestPoint = bb.nearest(samplePoint); + + const scalar distFromBbSqr = magSqr(nearestPoint - samplePoint); + + pointsBbDistSqr.append + ( + std::make_pair(distFromBbSqr, count++) + ); + } } std::random_shuffle(pointsBbDistSqr.begin(), pointsBbDistSqr.end()); diff --git a/src/OpenFOAM/meshes/boundBox/boundBox.C b/src/OpenFOAM/meshes/boundBox/boundBox.C index db628c32a1..c29e17554c 100644 --- a/src/OpenFOAM/meshes/boundBox/boundBox.C +++ b/src/OpenFOAM/meshes/boundBox/boundBox.C @@ -300,21 +300,14 @@ bool Foam::boundBox::containsAny } -Foam::scalar Foam::boundBox::distanceFromBoxSqr(const point& pt) const +Foam::point Foam::boundBox::nearest(const point& pt) const { - if (contains(pt)) - { - return 0; - } - // Clip the point to the range of the bounding box const scalar surfPtx = Foam::max(Foam::min(pt.x(), max_.x()), min_.x()); const scalar surfPty = Foam::max(Foam::min(pt.y(), max_.y()), min_.y()); const scalar surfPtz = Foam::max(Foam::min(pt.z(), max_.z()), min_.z()); - const point surfacePt(surfPtx, surfPty, surfPtz); - - return magSqr(pt - surfacePt); + return point(surfPtx, surfPty, surfPtz); } diff --git a/src/OpenFOAM/meshes/boundBox/boundBox.H b/src/OpenFOAM/meshes/boundBox/boundBox.H index 857f41e2bf..f0c353d5df 100644 --- a/src/OpenFOAM/meshes/boundBox/boundBox.H +++ b/src/OpenFOAM/meshes/boundBox/boundBox.H @@ -225,9 +225,10 @@ public: const FixedList& indices ) const; - //- Distance of a point from the box. - // Return 0 if inside. - scalar distanceFromBoxSqr(const point&) const; + //- Return the nearest point on the boundBox to the supplied point. + // If point is inside the boundBox then the point is returned + // unchanged. + point nearest(const point&) const; // Friend Operators