137 mutable unique_ptr<labelListList> faceCutsPtr_;
159 static label findPartIndex
181 static label firstUnique
192 void writeUncutOBJ(
const fileName&,
const label celli)
const;
213 label edgeVertexToFace
221 label vertexVertexToFace
232 void calcFaceCuts()
const;
246 label loopFace(
const label celli,
const labelList& loop)
const;
252 const label startCut,
254 const label exclude0,
255 const label exclude1,
257 const label otherCut,
267 const label startCut,
269 const label otherCut,
291 const label startCut,
296 label& beforeLastCut,
307 const label startCut,
315 void calcCellLoops(
const labelList& cutCells);
340 bool loopAnchorConsistent
387 bool conservativeValidLoop
409 void setFromCellLoops();
421 void setFromCellLoops
434 void setFromCellCutter
442 void setFromCellCutter
450 void orientPlanesAndLoops();
454 void calcLoopsAndAddressing(
const labelList& cutCells);
464 void operator=(
const cellCuts&) =
delete;
483 const bool verbose =
true
493 const bool verbose =
true
505 const bool verbose =
true
515 const bool verbose =
true
526 const bool verbose =
true
540 const bool verbose =
true
581 return *faceCutsPtr_;
587 return faceSplitCut_;
605 return cellAnchorPoints_;
613 pointField loopPoints(
const label celli)
const;
624 void flip(
const label celli);
A HashTable to objects of type <T> with a label key.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Description of cuts across cells.
const labelListList & cellLoops() const
For each cut cell the cut along the circumference.
const boolList & pointIsCut() const
Is mesh point cut.
void writeCellOBJ(const fileName &dir, const label celli) const
debugging:Write edges of cell and loop
const boolList & edgeIsCut() const
Is edge cut.
void flipLoopOnly(const label celli)
Flip loop for celli. Does not update anchors. Use with care.
void flip(const label celli)
Flip loop for celli. Updates anchor points as well.
~cellCuts()=default
Destructor.
labelList nonAnchorPoints(const labelList &cellPoints, const labelList &anchorPoints, const labelList &loop) const
Invert anchor point selection.
const labelListList & cellAnchorPoints() const
For each cut cell the points on the 'anchor' side of the cell.
label nLoops() const
Number of valid cell loops.
const scalarField & edgeWeight() const
If edge is cut gives weight (ratio between start() and end())
const Map< edge > & faceSplitCut() const
Gives for split face the two cuts that split the face into two.
void clearOut()
Clear out demand-driven storage.
const labelListList & faceCuts() const
Cuts per existing face (includes those along edge of face)
ClassName("cellCuts")
Runtime type information.
Abstract base class. Concrete implementations know how to cut a cell (i.e. determine a loop around th...
Combines edge or vertex in single label. Used to specify cuts across cell circumference.
const polyMesh & mesh() const
A class for handling file names.
Mesh consisting of general polyhedral cells.
Patchify triangles based on orientation w.r.t other (triangulated or triangulatable) surfaces.
#define ClassName(TypeNameString)
Add typeName information from argument TypeNameString to a class.
OBJstream os(runTime.globalPath()/outputName)