undoableMeshCutter Class Reference

The main refinement handler. Gets cellCuts which is structure that describes which cells are to be cut and in what way. Maintains an undo list (if told so during construction). Apart from undo list is just wrapper around meshCutter. More...

Inheritance diagram for undoableMeshCutter:
[legend]
Collaboration diagram for undoableMeshCutter:
[legend]

Public Member Functions

 ClassName ("undoableMeshCutter")
 Runtime type information. More...
 
 undoableMeshCutter (const polyMesh &mesh, const bool undoable=true)
 
 ~undoableMeshCutter ()
 Destructor. More...
 
const Map< splitCell * > & liveSplitCells () const
 All current live split cells. Warning: cell labels will change. More...
 
const removeFacesfaceRemover () const
 
void setRefinement (const cellCuts &cuts, polyTopoChange &)
 Refine cells acc. to cellCuts. Plays topology changes. More...
 
void updateMesh (const mapPolyMesh &morphMap)
 Update stored refinement pattern for changes to mesh. Only. More...
 
labelList getSplitFaces () const
 Calculate split faces from current liveCells. Only. More...
 
Map< label > getAddedCells () const
 Like getSplitFaces but returns map from original to added cell. More...
 
labelList removeSplitFaces (const labelList &splitFaces, polyTopoChange &)
 Remove some refinement. Needs to be supplied subset of. More...
 
- Public Member Functions inherited from meshCutter
 ClassName ("meshCutter")
 Runtime type information. More...
 
 meshCutter (const polyMesh &mesh)
 Construct from mesh. More...
 
 ~meshCutter ()=default
 Destructor. More...
 
void setRefinement (const cellCuts &cuts, polyTopoChange &meshMod)
 Do actual cutting with cut description. Inserts mesh changes. More...
 
void updateMesh (const mapPolyMesh &)
 Force recalculation of locally stored data on topological change. More...
 
const Map< label > & addedCells () const
 Cells added. Per split cell label of added cell. More...
 
const Map< label > & addedFaces () const
 Faces added. Per split cell label of added face. More...
 
const EdgeMap< label > & addedPoints () const
 Points added. Per split edge label of added point. More...
 
- Public Member Functions inherited from edgeVertex
 edgeVertex (const polyMesh &mesh)
 Construct from mesh. More...
 
const polyMeshmesh () const
 
bool isEdge (const label eVert) const
 
label getEdge (const label eVert) const
 
label getVertex (const label eVert) const
 
label vertToEVert (const label vertI) const
 
label edgeToEVert (const label edgeI) const
 
point coord (const label cut, const scalar weight) const
 
label cutPairToEdge (const label cut0, const label cut1) const
 
OstreamwriteCut (Ostream &os, const label cut, const scalar) const
 Write cut description to Ostream. More...
 
OstreamwriteCuts (Ostream &os, const labelList &, const scalarField &) const
 Write cut descriptions to Ostream. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from edgeVertex
static void updateLabels (const labelList &map, List< refineCell > &)
 Update refine list from map. Used to update cell/face labels. More...
 
static void updateLabels (const labelList &map, Map< label > &)
 Update map from map. Used to update cell/face labels. More...
 
static void updateLabels (const labelList &map, labelHashSet &)
 Update map from map. Used to update cell/face labels. More...
 
static bool isEdge (const primitiveMesh &mesh, const label eVert)
 Is eVert an edge? More...
 
static label getEdge (const primitiveMesh &mesh, const label eVert)
 Convert eVert to edge label. More...
 
static label getVertex (const primitiveMesh &mesh, const label eVert)
 Convert eVert to vertex label. More...
 
static label vertToEVert (const primitiveMesh &mesh, const label vertI)
 Convert pointi to eVert. More...
 
static label edgeToEVert (const primitiveMesh &mesh, const label edgeI)
 Convert edgeI to eVert. More...
 
static point coord (const primitiveMesh &, const label cut, const scalar weight)
 Return coordinate of cut (uses weight if edgeCut) More...
 
static label cutPairToEdge (const primitiveMesh &, const label cut0, const label cut1)
 Find mesh edge (or -1) between two cuts. More...
 

Detailed Description

The main refinement handler. Gets cellCuts which is structure that describes which cells are to be cut and in what way. Maintains an undo list (if told so during construction). Apart from undo list is just wrapper around meshCutter.

Undo list: contains a refinement tree (of type splitCell; cell labels are of no consequence) and a list of visible splitCells, i.e. the top of the tree (where the cell labels are valid). Now every cell added gets put on the tree and every updateMesh action updates the labels of visible splitcells.

We can now ask this structure for a list of visible split cells or the list of faces between these. These can be passed to removeFaces for actual deletion and we delete the top splitCell and update the now newly visible underlying cells for the new cell number (passed back from removeFaces).

NOTE: Undoing note properly tested. Expect it to fail if the faces to be removed cause other faces to be additionally removed (i.e. removeFaces adds additional faces to remove).

splitCell:

  • original cell number.
  • pointer to parent (null for first level splitCell)
  • two pointers to splitCell children. Both null (unrefined=visible cell) or both non-null.
  • live are: (-all unrefined cells (original cell without any splitCells)) -all splitCells with null children
  • liveSplitCells contains pointers to splitCells with null children.
Source files

Definition at line 93 of file undoableMeshCutter.H.

Constructor & Destructor Documentation

◆ undoableMeshCutter()

undoableMeshCutter ( const polyMesh mesh,
const bool  undoable = true 
)
explicit

Construct from mesh and flag whether refinement pattern needs to be stored.

Definition at line 177 of file undoableMeshCutter.C.

◆ ~undoableMeshCutter()

Destructor.

Definition at line 196 of file undoableMeshCutter.C.

References forAllIters, splitCell::getOther(), and splitCell::parent().

Here is the call graph for this function:

Member Function Documentation

◆ ClassName()

ClassName ( "undoableMeshCutter"  )

Runtime type information.

◆ liveSplitCells()

const Map< splitCell * > & liveSplitCells ( ) const
inline

All current live split cells. Warning: cell labels will change.

during morphing. Only this map is guaranteed to hold uptodate info.

Definition at line 165 of file undoableMeshCutter.H.

◆ faceRemover()

const removeFaces & faceRemover ( ) const
inline

Definition at line 170 of file undoableMeshCutter.H.

◆ setRefinement()

void setRefinement ( const cellCuts cuts,
polyTopoChange meshMod 
)

Refine cells acc. to cellCuts. Plays topology changes.

into polyTopoChange.

Definition at line 230 of file undoableMeshCutter.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAllConstIters, splitCell::master(), Foam::Pout, meshCutter::setRefinement(), and splitCell::slave().

Here is the call graph for this function:

◆ updateMesh()

void updateMesh ( const mapPolyMesh morphMap)

Update stored refinement pattern for changes to mesh. Only.

call if undoable set.

Definition at line 323 of file undoableMeshCutter.C.

References mapPolyMesh::reverseCellMap(), and motionSmootherAlgo::updateMesh().

Here is the call graph for this function:

◆ getSplitFaces()

Foam::labelList getSplitFaces ( ) const

Calculate split faces from current liveCells. Only.

call if undoable set.

Definition at line 341 of file undoableMeshCutter.C.

References Foam::abort(), DynamicList< T, SizeMin >::append(), splitCell::cellLabel(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAllConstIters, splitCell::getOther(), Foam::meshTools::getSharedFace(), splitCell::isMaster(), splitCell::isUnrefined(), mesh, splitCell::parent(), and DynamicList< T, SizeMin >::shrink().

Here is the call graph for this function:

◆ getAddedCells()

Foam::Map< Foam::label > getAddedCells ( ) const

Like getSplitFaces but returns map from original to added cell.

Only call if undoable set.

Definition at line 400 of file undoableMeshCutter.C.

References Foam::abort(), splitCell::cellLabel(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAllConstIters, splitCell::getOther(), HashTable< T, Key, Hash >::insert(), splitCell::isMaster(), splitCell::isUnrefined(), and splitCell::parent().

Here is the call graph for this function:

◆ removeSplitFaces()

Foam::labelList removeSplitFaces ( const labelList splitFaces,
polyTopoChange meshMod 
)

Remove some refinement. Needs to be supplied subset of.

getSplitFaces() output. Returns list of faces removed (can be more or equal but never less than splitFaces - since removeFaces might decide to take down unnecessary faces) Only call if undoable set.

important: Redo search since ownFind entry deleted.

Definition at line 446 of file undoableMeshCutter.C.

References Foam::abort(), splitCell::cellLabel(), Foam::endl(), polyMesh::faceNeighbour(), polyMesh::faceOwner(), Foam::FatalError, FatalErrorInFunction, UList< T >::find(), forAll, splitCell::isUnrefined(), mesh, splitCell::parent(), Foam::Pout, and UList< T >::size().

Here is the call graph for this function:

The documentation for this class was generated from the following files: