55 void Foam::topoCellLooper::subsetList
69 <<
"startI:" << startI <<
" freeI:" << freeI
72 lst.setCapacity(freeI);
78 for (label elemI = startI; elemI < freeI; elemI++)
80 lst[newI++] = lst[elemI];
83 if ((freeI - startI) < 0)
86 <<
"startI:" << startI <<
" freeI:" << freeI
90 lst.setCapacity(freeI - startI);
138 const cellFeatures& features,
140 const label startEdgeI,
141 const label startVertI,
142 const label nFeaturePts,
162 if (features.isFeatureVertex(faceI, vertI))
172 edgeI = getFirstVertEdge(faceI, vertI);
182 if (nVisited == nFeaturePts)
187 vertI =
mesh().
edges()[edgeI].otherVertex(vertI);
189 if (features.isFeatureVertex(faceI, vertI))
203 const cellFeatures& features,
205 const label startEdgeI,
206 const label startVertI
212 label superVertI = 0;
215 label edgeI = startEdgeI;
217 label vertI = startVertI;
219 superVerts[superVertI++] = vertI;
221 label prevEdgeI = -1;
225 vertI =
mesh().
edges()[edgeI].otherVertex(vertI);
227 superVerts[superVertI++] = vertI;
233 while (!features.isFeaturePoint(prevEdgeI, edgeI));
235 superVerts.setSize(superVertI);
243 Foam::label Foam::topoCellLooper::getAlignedNonFeatureEdge
247 const cellFeatures& features
255 scalar maxCos = -GREAT;
259 label edgeI = cEdges[cEdgeI];
261 if (!features.isFeatureEdge(edgeI))
272 scalar cosAngle =
mag(refDir & n);
274 if (cosAngle > maxCos)
290 void Foam::topoCellLooper::walkAcrossFace
292 const cellFeatures& features,
294 const label startEdgeI,
295 const label startVertI,
302 label oppositeVertI = -1;
303 label oppositeEdgeI = -1;
329 label sz = superEdge.size();
337 edgeI = oppositeEdgeI;
341 vertI = superEdge[1];
351 Pout<<
" Don't know what to do. Stepped to non-feature point "
352 <<
"at index " << index <<
" in superEdge:" << superEdge
356 vertI = superEdge[index];
376 void Foam::topoCellLooper::walkSplitHex
379 const cellFeatures& features,
380 const label fromFaceI,
381 const label fromEdgeI,
382 const label fromVertI,
384 DynamicList<label>& loop,
385 DynamicList<scalar>& loopWeights
389 label faceI = fromFaceI;
390 label edgeI = fromEdgeI;
391 label vertI = fromVertI;
397 Pout<<
"Entering walk with : cell:" << cellI <<
" face:" << faceI;
402 Pout<<
" edge:" << edgeI;
410 label startLoop = -1;
428 label firstFree = loop.size();
430 subsetList(startLoop, firstFree, loop);
431 subsetList(startLoop, firstFree, loopWeights);
451 label firstFree = loop.size();
453 subsetList(startLoop, firstFree, loop);
454 subsetList(startLoop, firstFree, loopWeights);
469 loop.append(edgeToEVert(edgeI));
470 loopWeights.append(0.5);
478 <<
" to face " << faceI <<
" verts:"
482 label nextEdgeI = -1;
483 label nextVertI = -1;
505 loop.append(vertToEVert(vertI));
506 loopWeights.append(-GREAT);
512 labelList nextEdges = getVertEdgesNonFace
519 if (nextEdges.empty())
526 label thisFaceI = pFaces[pFaceI];
541 Pout<<
" stepped from non-edge vertex " << vertI
542 <<
" to face " << faceI <<
" verts:"
544 <<
" since candidate edges:" << nextEdges <<
endl;
547 label nextEdgeI = -1;
548 label nextVertI = -1;
565 else if (nextEdges.size() == 1)
568 edgeI = nextEdges[0];
572 Pout<<
" stepped from non-edge vertex " << vertI
573 <<
" along edge " << edgeI <<
" verts:"
575 <<
" out of candidate edges:"
576 << nextEdges <<
endl;
579 vertI =
mesh().
edges()[edgeI].otherVertex(vertI);
588 label index = nextEdges.
size()/2;
590 edgeI = nextEdges[index];
594 Pout<<
" stepped from non-edge vertex " << vertI
595 <<
" along edge " << edgeI <<
" verts:"
597 <<
" out of candidate edges:" << nextEdges <<
endl;
600 vertI =
mesh().
edges()[edgeI].otherVertex(vertI);
616 if (nextFaces.size() == 1)
619 faceI = nextFaces[0];
621 label nextEdgeI = -1;
622 label nextVertI = -1;
639 else if (nextFaces.size() == 2)
652 vertI =
mesh().
edges()[edgeI].otherVertex(vertI);
657 <<
"Choosing from more than "
658 <<
"two candidates:" << nextFaces
659 <<
" when coming from vertex " << vertI <<
" on cell "
667 Pout<<
"Walked to : face:" << faceI;
672 Pout<<
" edge:" << edgeI;
735 getAlignedNonFeatureEdge
755 edgeI = getMisAlignedEdge(refDir, cellI);
782 if (localLoop.
size() <=2)
789 loopWeights.
transfer(localLoopWeights);
814 const plane& cutPlane,