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...
Public Member Functions | |
ClassName ("undoableMeshCutter") | |
Runtime type information. More... | |
undoableMeshCutter (const polyMesh &mesh, const bool undoable=true) | |
Construct from mesh and flag whether refinement pattern needs. More... | |
undoableMeshCutter (const undoableMeshCutter &)=delete | |
Disallow default bitwise copy construction. More... | |
~undoableMeshCutter () | |
Destructor. More... | |
const Map< splitCell * > & | liveSplitCells () const |
All current live split cells. Warning: cell labels will change. More... | |
const removeFaces & | faceRemover () 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... | |
void | operator= (const undoableMeshCutter &)=delete |
Disallow default bitwise assignment. More... | |
Public Member Functions inherited from meshCutter | |
ClassName ("meshCutter") | |
Runtime type information. More... | |
meshCutter (const polyMesh &mesh) | |
Construct from mesh. More... | |
meshCutter (const meshCutter &)=delete | |
Disallow default bitwise copy construction. More... | |
~meshCutter () | |
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 HashTable< label, edge, Hash< edge > > & | addedPoints () const |
Points added. Per split edge label of added point. More... | |
void | operator= (const meshCutter &)=delete |
Disallow default bitwise assignment. More... | |
Public Member Functions inherited from edgeVertex | |
edgeVertex (const polyMesh &mesh) | |
Construct from mesh. More... | |
edgeVertex (const edgeVertex &)=delete | |
Disallow default bitwise copy construction. More... | |
const polyMesh & | mesh () 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 |
Ostream & | writeCut (Ostream &os, const label cut, const scalar) const |
Write cut description to Ostream. More... | |
Ostream & | writeCuts (Ostream &os, const labelList &, const scalarField &) const |
Write cut descriptions to Ostream. More... | |
void | operator= (const edgeVertex &)=delete |
Disallow default bitwise assignment. 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... | |
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).
Definition at line 93 of file undoableMeshCutter.H.
undoableMeshCutter | ( | const polyMesh & | mesh, |
const bool | undoable = true |
||
) |
Construct from mesh and flag whether refinement pattern needs.
to be stored.
Definition at line 176 of file undoableMeshCutter.C.
|
delete |
Disallow default bitwise copy construction.
~undoableMeshCutter | ( | ) |
Destructor.
Definition at line 194 of file undoableMeshCutter.C.
References forAllIter, splitCell::getOther(), splitCell::parent(), and undoableMeshCutter::setRefinement().
ClassName | ( | "undoableMeshCutter" | ) |
Runtime type information.
All current live split cells. Warning: cell labels will change.
during morphing. Only this map is guaranteed to hold uptodate info.
Definition at line 158 of file undoableMeshCutter.H.
|
inline |
Definition at line 163 of file undoableMeshCutter.H.
References undoableMeshCutter::getAddedCells(), undoableMeshCutter::getSplitFaces(), undoableMeshCutter::operator=(), undoableMeshCutter::removeSplitFaces(), undoableMeshCutter::setRefinement(), and undoableMeshCutter::updateMesh().
void setRefinement | ( | const cellCuts & | cuts, |
polyTopoChange & | meshMod | ||
) |
Refine cells acc. to cellCuts. Plays topology changes.
into polyTopoChange.
Definition at line 229 of file undoableMeshCutter.C.
References Foam::abort(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAllConstIter(), splitCell::master(), Foam::Pout, meshCutter::setRefinement(), and splitCell::slave().
Referenced by undoableMeshCutter::faceRemover(), and undoableMeshCutter::~undoableMeshCutter().
void updateMesh | ( | const mapPolyMesh & | morphMap | ) |
Update stored refinement pattern for changes to mesh. Only.
call if undoable set.
Definition at line 324 of file undoableMeshCutter.C.
References mapPolyMesh::reverseCellMap(), and meshCutter::updateMesh().
Referenced by undoableMeshCutter::faceRemover().
Foam::labelList getSplitFaces | ( | ) | const |
Calculate split faces from current liveCells. Only.
call if undoable set.
Definition at line 342 of file undoableMeshCutter.C.
References Foam::abort(), splitCell::cellLabel(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAllConstIter(), splitCell::getOther(), Foam::meshTools::getSharedFace(), splitCell::isMaster(), splitCell::isUnrefined(), mesh, and splitCell::parent().
Referenced by undoableMeshCutter::faceRemover().
Foam::Map< Foam::label > getAddedCells | ( | ) | const |
Like getSplitFaces but returns map from original to added cell.
Only call if undoable set.
Definition at line 401 of file undoableMeshCutter.C.
References Foam::abort(), splitCell::cellLabel(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAllConstIter(), splitCell::getOther(), splitCell::isMaster(), splitCell::isUnrefined(), splitCell::parent(), and undoableMeshCutter::removeSplitFaces().
Referenced by undoableMeshCutter::faceRemover().
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 448 of file undoableMeshCutter.C.
References Foam::abort(), splitCell::cellLabel(), Foam::endl(), polyMesh::faceNeighbour(), polyMesh::faceOwner(), Foam::FatalError, FatalErrorInFunction, forAll, splitCell::isUnrefined(), mesh, splitCell::parent(), Foam::Pout, and List< T >::size().
Referenced by undoableMeshCutter::faceRemover(), and undoableMeshCutter::getAddedCells().
|
delete |
Disallow default bitwise assignment.
Referenced by undoableMeshCutter::faceRemover().