48 const primitiveMesh&
mesh,
70 Foam::label Foam::regionSide::otherEdge
72 const primitiveMesh&
mesh,
81 label freePointi =
e.otherVertex(pointi);
87 const label otherEdgeI = fEdges[fEdgeI];
88 const edge& otherE =
mesh.
edges()[otherEdgeI];
93 otherE.start() == pointi
94 && otherE.end() != freePointi
97 otherE.end() == pointi
98 && otherE.start() != freePointi
108 <<
"Cannot find other edge on face " << facei <<
" that uses point "
109 << pointi <<
" but not point " << freePointi <<
endl
110 <<
"Edges on face:" << fEdges
111 <<
" verts:" << UIndirectList<edge>(
mesh.
edges(), fEdges)
112 <<
" Vertices on face:"
122 void Foam::regionSide::visitConnectedFaces
124 const primitiveMesh&
mesh,
132 if (!visitedFace.found(facei))
136 Info<<
"visitConnectedFaces : celli:" << celli <<
" facei:"
137 << facei <<
" isOwner:" << (celli ==
mesh.
faceOwner()[facei])
142 visitedFace.insert(facei);
147 sideOwner_.insert(facei);
157 label edgeI = fEdges[fEdgeI];
159 if (!fenceEdges.found(edgeI))
169 label otherCelli = celli;
173 while (!region.found(otherFacei))
175 visitedFace.insert(otherFacei);
179 Info<<
"visitConnectedFaces : celli:" << celli
180 <<
" found insideEdgeFace:" << otherFacei
224 void Foam::regionSide::walkPointConnectedFaces
226 const primitiveMesh&
mesh,
228 const label regionPointi,
229 const label startFacei,
230 const label startEdgeI,
235 insidePointFaces_.insert(startFacei);
239 Info<<
"walkPointConnectedFaces : regionPointi:" << regionPointi
240 <<
" facei:" << startFacei
241 <<
" edgeI:" << startEdgeI <<
" verts:"
247 label edgeI =
otherEdge(
mesh, startFacei, startEdgeI, regionPointi);
249 if (!regionEdges.found(edgeI))
251 if (!visitedEdges.found(edgeI))
253 visitedEdges.insert(edgeI);
257 Info<<
"Crossed face from "
258 <<
" edgeI:" << startEdgeI <<
" verts:"
260 <<
" to edge:" << edgeI <<
" verts:"
271 label facei = eFaces[eFacei];
273 walkPointConnectedFaces
290 void Foam::regionSide::walkAllPointConnectedFaces
292 const primitiveMesh&
mesh,
302 for (
const label facei : regionFaces)
306 regionEdges.insert(fEdges);
318 for (
const label pointi : fencePoints)
320 visitedPoint.insert(pointi);
328 Info<<
"Excluding visit of points:" << visitedPoint <<
endl;
331 for (
const label facei : regionFaces)
336 if (sideOwner_.found(facei))
350 label edgeI = fEdges[fEdgeI];
358 if (!visitedPoint.found(
e.start()))
360 Info<<
"Determining visibility from point " <<
e.start()
363 visitedPoint.insert(
e.start());
367 walkPointConnectedFaces
377 if (!visitedPoint.found(
e.end()))
379 Info<<
"Determining visibility from point " <<
e.end()
382 visitedPoint.insert(
e.end());
386 walkPointConnectedFaces
406 const primitiveMesh&
mesh,
409 const label startCelli,
410 const label startFacei
413 sideOwner_(region.size()),
414 insidePointFaces_(region.size())
439 for (
const label edgei : fenceEdges)
441 const edge&
e =
mesh.edges()[edgei];
443 fencePoints.insert(
e.start());
444 fencePoints.insert(
e.end());
447 walkAllPointConnectedFaces(
mesh, region, fencePoints);