Implementation of cellLooper. Does pure geometric cut through cell. More...
Public Member Functions | |
TypeName ("geomCellLooper") | |
geomCellLooper (const polyMesh &mesh) | |
virtual | ~geomCellLooper ()=default |
virtual bool | cut (const vector &refDir, const label celli, const boolList &vertIsCut, const boolList &edgeIsCut, const scalarField &edgeWeight, labelList &loop, scalarField &loopWeights) const |
virtual bool | cut (const plane &cutPlane, const label celli, const boolList &vertIsCut, const boolList &edgeIsCut, const scalarField &edgeWeight, labelList &loop, scalarField &loopWeights) const |
![]() | |
TypeName ("cellLooper") | |
declareRunTimeSelectionTable (autoPtr, cellLooper, word,(const polyMesh &mesh),(mesh)) | |
cellLooper (const polyMesh &mesh) | |
autoPtr< cellLooper > | clone () const |
virtual | ~cellLooper ()=default |
![]() | |
edgeVertex (const polyMesh &mesh) | |
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 |
Ostream & | writeCuts (Ostream &os, const labelList &, const scalarField &) const |
Static Public Member Functions | |
static scalar | snapTol () |
static void | setSnapTol (const scalar tol) |
![]() | |
static autoPtr< cellLooper > | New (const word &type, const polyMesh &mesh) |
![]() | |
static void | updateLabels (const labelList &map, List< refineCell > &) |
static void | updateLabels (const labelList &map, Map< label > &) |
static void | updateLabels (const labelList &map, labelHashSet &) |
static bool | isEdge (const primitiveMesh &mesh, const label eVert) |
static label | getEdge (const primitiveMesh &mesh, const label eVert) |
static label | getVertex (const primitiveMesh &mesh, const label eVert) |
static label | vertToEVert (const primitiveMesh &mesh, const label vertI) |
static label | edgeToEVert (const primitiveMesh &mesh, const label edgeI) |
static point | coord (const primitiveMesh &, const label cut, const scalar weight) |
static label | cutPairToEdge (const primitiveMesh &, const label cut0, const label cut1) |
Additional Inherited Members | |
![]() | |
labelList | getVertFacesNonEdge (const label celli, const label edgeI, const label vertI) const |
label | getFirstVertEdge (const label facei, const label vertI) const |
labelList | getVertEdgesNonFace (const label celli, const label facei, const label vertI) const |
label | getMisAlignedEdge (const vector &refDir, const label celli) const |
cellLooper (const cellLooper &)=delete | |
void | operator= (const cellLooper &)=delete |
Implementation of cellLooper. Does pure geometric cut through cell.
Handles all cell shapes in the same way: cut edges with plane through cell centre and normal in direction of provided direction. Snaps cuts close to edge endpoints (close = snapTol * minEdgeLen) to vertices.
Currently determines cuts through edges (and edge endpoints close to plane) in random order and then sorts them acc. to angle. Could be converted to use walk but problem is that face can be cut multiple times (since does not need to be convex). Another problem is that edges parallel to plane might not be cut. So these are handled by looking at the distance from edge endpoints to the plane.
Definition at line 62 of file geomCellLooper.H.
|
explicit |
Definition at line 201 of file geomCellLooper.C.
|
virtualdefault |
TypeName | ( | "geomCellLooper" | ) |
|
inlinestatic |
Definition at line 127 of file geomCellLooper.H.
|
inlinestatic |
Definition at line 132 of file geomCellLooper.H.
|
virtual |
Implements cellLooper.
Reimplemented in topoCellLooper, and hexCellLooper.
Definition at line 210 of file geomCellLooper.C.
References mesh.
Referenced by hexCellLooper::cut().
|
virtual |
Implements cellLooper.
Reimplemented in topoCellLooper, and hexCellLooper.
Definition at line 236 of file geomCellLooper.C.
References DynamicList::append(), primitiveMesh::cellEdges(), primitiveMesh::cells(), Foam::expressions::patchExpr::debug, plane::distance(), Foam::constant::electromagnetic::e, primitiveMesh::edges(), Foam::endl(), forAll, SortableList::indices(), HashSet::insert(), mesh, plane::normal(), Foam::normalised(), points, polyMesh::points(), Foam::Pout, Foam::pseudoAngle(), List::setSize(), DynamicList::shrink(), SortableList::sort(), List::transfer(), and Foam::Zero.
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.