45 const primitiveMesh&
mesh,
69 const primitiveMesh& mesh,
75 const edge&
e = mesh.edges()[edgeI];
78 label freePointI = e.otherVertex(pointI);
80 const labelList& fEdges = mesh.faceEdges()[faceI];
84 label otherEdgeI = fEdges[fEdgeI];
86 const edge& otherE = mesh.edges()[otherEdgeI];
91 otherE.start() == pointI
92 && otherE.end() != freePointI
95 otherE.end() == pointI
96 && otherE.start() != freePointI
107 "regionSide::otherEdge(const primitiveMesh&, const label, const label"
109 ) <<
"Cannot find other edge on face " << faceI <<
" that uses point "
110 << pointI <<
" but not point " << freePointI <<
endl
111 <<
"Edges on face:" << fEdges
112 <<
" verts:" << UIndirectList<edge>(mesh.edges(), fEdges)()
113 <<
" Vertices on face:"
114 << mesh.faces()[faceI]
123 void Foam::regionSide::visitConnectedFaces
125 const primitiveMesh& mesh,
133 if (!visitedFace.found(faceI))
137 Info<<
"visitConnectedFaces : cellI:" << cellI <<
" faceI:"
138 << faceI <<
" isOwner:" << (cellI == mesh.faceOwner()[faceI])
143 visitedFace.insert(faceI);
146 if (cellI == mesh.faceOwner()[faceI])
148 sideOwner_.insert(faceI);
154 const labelList& fEdges = mesh.faceEdges()[faceI];
158 label edgeI = fEdges[fEdgeI];
160 if (!fenceEdges.found(edgeI))
166 label otherFaceI =
otherFace(mesh, cellI, faceI, edgeI);
168 if (mesh.isInternalFace(otherFaceI))
170 label otherCellI = cellI;
174 while (!region.found(otherFaceI))
176 visitedFace.insert(otherFaceI);
180 Info<<
"visitConnectedFaces : cellI:" << cellI
181 <<
" found insideEdgeFace:" << otherFaceI
225 void Foam::regionSide::walkPointConnectedFaces
227 const primitiveMesh& mesh,
229 const label regionPointI,
230 const label startFaceI,
231 const label startEdgeI,
236 insidePointFaces_.insert(startFaceI);
240 Info<<
"walkPointConnectedFaces : regionPointI:" << regionPointI
241 <<
" faceI:" << startFaceI
242 <<
" edgeI:" << startEdgeI <<
" verts:"
243 << mesh.edges()[startEdgeI]
248 label edgeI =
otherEdge(mesh, startFaceI, startEdgeI, regionPointI);
250 if (!regionEdges.found(edgeI))
252 if (!visitedEdges.found(edgeI))
254 visitedEdges.insert(edgeI);
258 Info<<
"Crossed face from "
259 <<
" edgeI:" << startEdgeI <<
" verts:"
260 << mesh.edges()[startEdgeI]
261 <<
" to edge:" << edgeI <<
" verts:"
262 << mesh.edges()[edgeI]
268 const labelList& eFaces = mesh.edgeFaces()[edgeI];
272 label faceI = eFaces[eFaceI];
274 walkPointConnectedFaces
291 void Foam::regionSide::walkAllPointConnectedFaces
293 const primitiveMesh& mesh,
306 iter != regionFaces.end();
310 label faceI = iter.key();
312 const labelList& fEdges = mesh.faceEdges()[faceI];
316 regionEdges.insert(fEdges[fEdgeI]);
332 iter != fencePoints.end();
336 visitedPoint.
insert(iter.key());
344 Info<<
"Excluding visit of points:" << visitedPoint <<
endl;
350 iter != regionFaces.end();
354 label faceI = iter.key();
359 if (sideOwner_.found(faceI))
361 cellI = mesh.faceOwner()[faceI];
365 cellI = mesh.faceNeighbour()[faceI];
369 const labelList& fEdges = mesh.faceEdges()[faceI];
373 label edgeI = fEdges[fEdgeI];
376 label otherFaceI =
otherFace(mesh, cellI, faceI, edgeI);
379 const edge& e = mesh.edges()[edgeI];
381 if (!visitedPoint.found(e.start()))
383 Info<<
"Determining visibility from point " << e.start()
386 visitedPoint.insert(e.start());
390 walkPointConnectedFaces
400 if (!visitedPoint.found(e.end()))
402 Info<<
"Determining visibility from point " << e.end()
405 visitedPoint.insert(e.end());
409 walkPointConnectedFaces
429 const primitiveMesh& mesh,
432 const label startCellI,
433 const label startFaceI
436 sideOwner_(region.size()),
437 insidePointFaces_(region.size())
465 iter != fenceEdges.end();
469 const edge& e = mesh.edges()[iter.key()];
471 fencePoints.
insert(e.start());
472 fencePoints.insert(e.end());
475 walkAllPointConnectedFaces(mesh, region, fencePoints);