// Find distance to starting point void Foam::displacementLayeredMotionFvMotionSolver::walkStructured ( const label cellZoneI, const PackedBoolList& isZonePoint, const PackedBoolList& isZoneEdge, const labelList& seedPoints, const vectorField& seedData, scalarField& distance, vectorField& data ) const { List<pointEdgeStructuredWalk> seedInfo(seedPoints.size()); forAll(seedPoints, i) { seedInfo[i] = pointEdgeStructuredWalk ( points0()[seedPoints[i]], // location of data points0()[seedPoints[i]], // previous location 0.0, seedData[i] ); }
void Foam::inversePointDistanceDiffusivity::correct() { const polyBoundaryMesh& bdry = mesh().boundaryMesh(); labelHashSet patchSet(bdry.patchSet(patchNames_)); label nPatchEdges = 0; forAllConstIter(labelHashSet, patchSet, iter) { nPatchEdges += bdry[iter.key()].nEdges(); } // Distance to wall on points and edges. List<pointEdgePoint> pointWallDist(mesh().nPoints()); List<pointEdgePoint> edgeWallDist(mesh().nEdges()); int dummyTrackData = 0; { // Seeds List<pointEdgePoint> seedInfo(nPatchEdges); labelList seedPoints(nPatchEdges); nPatchEdges = 0; forAllConstIter(labelHashSet, patchSet, iter) { const polyPatch& patch = bdry[iter.key()]; const labelList& meshPoints = patch.meshPoints(); forAll(meshPoints, i) { label pointI = meshPoints[i]; if (!pointWallDist[pointI].valid(dummyTrackData)) { // Not yet seeded seedInfo[nPatchEdges] = pointEdgePoint ( mesh().points()[pointI], 0.0 ); seedPoints[nPatchEdges] = pointI; pointWallDist[pointI] = seedInfo[nPatchEdges]; nPatchEdges++; } } } seedInfo.setSize(nPatchEdges); seedPoints.setSize(nPatchEdges); // Do calculations PointEdgeWave<pointEdgePoint> waveInfo ( mesh(), seedPoints, seedInfo, pointWallDist, edgeWallDist, mesh().globalData().nTotalPoints(),// max iterations dummyTrackData ); }