34 void Foam::edgeMesh::calcPointEdges()
const
36 if (pointEdgesPtr_.
valid())
50 const edge&
e = edges_[edgeI];
52 nEdgesPerPoint[e[0]]++;
53 nEdgesPerPoint[e[1]]++;
59 pointEdges[pointI].setSize(nEdgesPerPoint[pointI]);
67 const edge&
e = edges_[edgeI];
70 pointEdges[p0][nEdgesPerPoint[p0]++] = edgeI;
72 pointEdges[p1][nEdgesPerPoint[p1]++] = edgeI;
100 edgeRegion.
setSize(edges_.size());
103 label startEdgeI = 0;
105 label currentRegion = 0;
109 while (startEdgeI < edges_.size() && edgeRegion[startEdgeI] != -1)
114 if (startEdgeI == edges_.size())
122 edgeRegion[startEdgeI] = currentRegion;
125 while (edgesToVisit.
size())
133 label edgeI = edgesToVisit[i];
136 const edge&
e = edges_[edgeI];
140 const labelList& pEdges = pointEdges()[e[fp]];
144 label nbrEdgeI = pEdges[pEdgeI];
146 if (edgeRegion[nbrEdgeI] == -1)
148 edgeRegion[nbrEdgeI] = currentRegion;
149 newEdgesToVisit.
append(nbrEdgeI);
155 edgesToVisit.
transfer(newEdgesToVisit);
160 return currentRegion;
181 pointEdgesPtr_.clear();
183 points_.transfer(newPoints);
188 edge&
e = edges_[edgeI];
190 label p0 = pointMap[e[0]];
191 label p1 = pointMap[e[1]];
215 const edge&
e = edges_[edgeI];
219 if (edgeToLabel.insert(e, newEdgeI))
226 edges_.setSize(newEdgeI);
232 iter != edgeToLabel.end();
236 edges_[iter()] = iter.key();
246 points_ = rhs.points_;
248 pointEdgesPtr_.reset(NULL);