// Locate point on patch. Returns (mesh) point label. label findPoint(const primitivePatch& pp, const point& nearPoint) { const pointField& points = pp.points(); const labelList& meshPoints = pp.meshPoints(); // Find nearest and next nearest scalar minDistSqr = GREAT; label minI = -1; scalar almostMinDistSqr = GREAT; label almostMinI = -1; forAll(meshPoints, i) { label pointI = meshPoints[i]; scalar distSqr = magSqr(nearPoint - points[pointI]); if (distSqr < minDistSqr) { almostMinDistSqr = minDistSqr; almostMinI = minI; minDistSqr = distSqr; minI = pointI; } else if (distSqr < almostMinDistSqr) { almostMinDistSqr = distSqr; almostMinI = pointI; } }
// Collect all topological information about a point on a patch. // (this information is the patch faces using the point and the relative // position of the point in the face) void Foam::globalPoints::addToSend ( const primitivePatch& pp, const label patchPointI, const procPointList& knownInfo, DynamicList<label>& patchFaces, DynamicList<label>& indexInFace, DynamicList<procPointList>& allInfo ) { label meshPointI = pp.meshPoints()[patchPointI]; // Add all faces using the point so we are sure we find it on the // other side. const labelList& pFaces = pp.pointFaces()[patchPointI]; forAll(pFaces, i) { label patchFaceI = pFaces[i]; const face& f = pp[patchFaceI]; patchFaces.append(patchFaceI); indexInFace.append(findIndex(f, meshPointI)); allInfo.append(knownInfo); }