Description of cuts across cells. More...
Public Member Functions | |
ClassName ("cellCuts") | |
Runtime type information. More... | |
cellCuts (const polyMesh &mesh, const labelList &cutCells, const labelList &meshVerts, const labelList &meshEdges, const scalarField &meshEdgeWeights) | |
Construct from cells to cut and pattern of cuts. More... | |
cellCuts (const polyMesh &mesh, const labelList &meshVerts, const labelList &meshEdges, const scalarField &meshEdgeWeights) | |
Construct from pattern of cuts. Detect cells to cut. More... | |
cellCuts (const polyMesh &mesh, const labelList &cellLabels, const labelListList &cellLoops, const List< scalarField > &cellEdgeWeights) | |
Construct from complete cellLoops through specified cells. More... | |
cellCuts (const polyMesh &mesh, const cellLooper &cellCutter, const List< refineCell > &refCells) | |
Construct from list of cells to cut and direction to cut in. More... | |
cellCuts (const polyMesh &mesh, const cellLooper &cellCutter, const labelList &cellLabels, const List< plane > &cutPlanes) | |
Construct from list of cells to cut and plane to cut with and. More... | |
cellCuts (const polyMesh &mesh, const boolList &pointIsCut, const boolList &edgeIsCut, const scalarField &edgeWeight, const Map< edge > &faceSplitCut, const labelListList &cellLoops, const label nLoops, const labelListList &cellAnchorPoints) | |
Construct from components. More... | |
~cellCuts () | |
Destructor. More... | |
void | clearOut () |
Clear out demand driven storage. More... | |
const boolList & | pointIsCut () const |
Is mesh point cut. More... | |
const boolList & | edgeIsCut () const |
Is edge cut. More... | |
const scalarField & | edgeWeight () const |
If edge is cut gives weight (ratio between start() and end()) More... | |
const labelListList & | faceCuts () const |
Cuts per existing face (includes those along edge of face) More... | |
const Map< edge > & | faceSplitCut () const |
Gives for split face the two cuts that split the face into two. More... | |
const labelListList & | cellLoops () const |
For each cut cell the cut along the circumference. More... | |
label | nLoops () const |
Number of valid cell loops. More... | |
const labelListList & | cellAnchorPoints () const |
For each cut cell the points on the 'anchor' side of the cell. More... | |
pointField | loopPoints (const label celli) const |
Returns coordinates of points on loop for given cell. More... | |
labelList | nonAnchorPoints (const labelList &cellPoints, const labelList &anchorPoints, const labelList &loop) const |
Invert anchor point selection. More... | |
void | flip (const label celli) |
Flip loop for celli. Updates anchor points as well. More... | |
void | flipLoopOnly (const label celli) |
Flip loop for celli. Does not update anchors. Use with care. More... | |
void | writeOBJ (Ostream &os, const pointField &loopPoints, label &vertI) const |
debugging:Write list of cuts to stream in OBJ format More... | |
void | writeOBJ (Ostream &os) const |
debugging:Write all of cuts to stream in OBJ format More... | |
void | writeCellOBJ (const fileName &dir, const label celli) const |
debugging:Write edges of cell and loop More... | |
Public Member Functions inherited from edgeVertex | |
edgeVertex (const polyMesh &mesh) | |
Construct from mesh. 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... | |
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... | |
Description of cuts across cells.
Description of cut is given as list of vertices and list of edges to be cut (and position on edge).
Does some checking of correctness/non-overlapping of cuts. 2x2x2 refinement has to be done in three passes since cuts can not overlap (would make addressing too complicated)
Introduces concept of 'cut' which is either an existing vertex or a edge.
Input can either be
CellCuts constructed from cellLoops (B, C) can have multiple cut-edges and/or cut-point as long as there is per face only one (or none) cut across a face, i.e. a face can only be split into two faces.
The information available after construction:
AnchorPoints: connected loops have to be oriented in the same way to be able to grow new internal faces out of the same bottom faces. (limitation of the mapping procedure). The loop is cellLoop is oriented such that the normal of it points towards the anchorPoints. This is the only routine which uses geometric information.
Limitations:
Definition at line 108 of file cellCuts.H.
cellCuts | ( | const polyMesh & | mesh, |
const labelList & | cutCells, | ||
const labelList & | meshVerts, | ||
const labelList & | meshEdges, | ||
const scalarField & | meshEdgeWeights | ||
) |
Construct from cells to cut and pattern of cuts.
Definition at line 2832 of file cellCuts.C.
References Foam::endl(), and Foam::Pout.
cellCuts | ( | const polyMesh & | mesh, |
const labelList & | meshVerts, | ||
const labelList & | meshEdges, | ||
const scalarField & | meshEdgeWeights | ||
) |
Construct from pattern of cuts. Detect cells to cut.
Definition at line 2875 of file cellCuts.C.
References Foam::endl(), Foam::identity(), primitiveMesh::nCells(), and Foam::Pout.
cellCuts | ( | const polyMesh & | mesh, |
const labelList & | cellLabels, | ||
const labelListList & | cellLoops, | ||
const List< scalarField > & | cellEdgeWeights | ||
) |
Construct from complete cellLoops through specified cells.
Checks for consistency. Constructs cut-cut addressing and cellAnchorPoints.
Definition at line 2922 of file cellCuts.C.
References Foam::endl(), and Foam::Pout.
cellCuts | ( | const polyMesh & | mesh, |
const cellLooper & | cellCutter, | ||
const List< refineCell > & | refCells | ||
) |
Construct from list of cells to cut and direction to cut in.
(always through cell centre) and celllooper.
Definition at line 2968 of file cellCuts.C.
References Foam::endl(), and Foam::Pout.
cellCuts | ( | const polyMesh & | mesh, |
const cellLooper & | cellCutter, | ||
const labelList & | cellLabels, | ||
const List< plane > & | cutPlanes | ||
) |
Construct from list of cells to cut and plane to cut with and.
celllooper. (constructor above always cuts through cell centre)
Definition at line 3013 of file cellCuts.C.
References Foam::endl(), and Foam::Pout.
cellCuts | ( | const polyMesh & | mesh, |
const boolList & | pointIsCut, | ||
const boolList & | edgeIsCut, | ||
const scalarField & | edgeWeight, | ||
const Map< edge > & | faceSplitCut, | ||
const labelListList & | cellLoops, | ||
const label | nLoops, | ||
const labelListList & | cellAnchorPoints | ||
) |
Construct from components.
Definition at line 3061 of file cellCuts.C.
References Foam::endl(), and Foam::Pout.
~cellCuts | ( | ) |
Destructor.
Definition at line 3091 of file cellCuts.C.
ClassName | ( | "cellCuts" | ) |
Runtime type information.
void clearOut | ( | ) |
Clear out demand driven storage.
Definition at line 3097 of file cellCuts.C.
|
inline |
Is mesh point cut.
Definition at line 542 of file cellCuts.H.
Referenced by meshCutAndRemove::setRefinement().
|
inline |
Is edge cut.
Definition at line 548 of file cellCuts.H.
Referenced by meshCutAndRemove::setRefinement(), and meshCutter::setRefinement().
|
inline |
If edge is cut gives weight (ratio between start() and end())
Definition at line 554 of file cellCuts.H.
References cellCuts::faceCuts(), and autoPtr< T >::valid().
Referenced by meshCutAndRemove::setRefinement(), and meshCutter::setRefinement().
|
inline |
Cuts per existing face (includes those along edge of face)
Cuts in no particular order
Definition at line 561 of file cellCuts.H.
Referenced by cellCuts::edgeWeight().
Gives for split face the two cuts that split the face into two.
Definition at line 571 of file cellCuts.H.
Referenced by meshCutAndRemove::setRefinement(), and meshCutter::setRefinement().
|
inline |
For each cut cell the cut along the circumference.
Definition at line 577 of file cellCuts.H.
Referenced by meshCutAndRemove::setRefinement(), and meshCutter::setRefinement().
|
inline |
Number of valid cell loops.
Definition at line 583 of file cellCuts.H.
Referenced by refinementIterator::setRefinement(), meshCutAndRemove::setRefinement(), and meshCutter::setRefinement().
|
inline |
For each cut cell the points on the 'anchor' side of the cell.
Definition at line 589 of file cellCuts.H.
References cellCuts::flip(), cellCuts::flipLoopOnly(), cellCuts::nonAnchorPoints(), and cellCuts::writeCellOBJ().
Referenced by meshCutAndRemove::setRefinement(), and meshCutter::setRefinement().
Foam::pointField loopPoints | ( | const label | celli | ) | const |
Returns coordinates of points on loop for given cell.
Uses cellLoops_ and edgeWeight_
Definition at line 3105 of file cellCuts.C.
References forAll, and List< T >::size().
Foam::labelList nonAnchorPoints | ( | const labelList & | cellPoints, |
const labelList & | anchorPoints, | ||
const labelList & | loop | ||
) | const |
Invert anchor point selection.
Definition at line 1321 of file cellCuts.C.
References Foam::abort(), DynamicList< T, SizeInc, SizeMult, SizeDiv >::append(), refineCell::cellNo(), cells, face::centre(), cellLooper::cut(), refineCell::direction(), Foam::e, UList< T >::empty(), edge::end(), Foam::endl(), f(), Foam::meshTools::faceOnCell(), Foam::FatalError, FatalErrorInFunction, Foam::meshTools::findEdge(), Foam::findIndex(), forAll, forAllConstIter(), HashTable< T, Key, Hash >::found(), Foam::identity(), Foam::Info, HashTable< T, label, Hash< label > >::insert(), HashTable< T, Key, Hash >::insert(), Foam::mag(), mesh, Foam::nl, face::normal(), pFaces, points, Foam::Pout, List< T >::setSize(), DynamicList< T, SizeInc, SizeMult, SizeDiv >::shrink(), List< T >::size(), geomCellLooper::snapTol(), edge::start(), syncTools::swapBoundaryCellList(), List< T >::transfer(), WarningInFunction, Foam::meshTools::writeOBJ(), and Foam::Zero.
Referenced by cellCuts::cellAnchorPoints().
void flip | ( | const label | celli | ) |
Flip loop for celli. Updates anchor points as well.
Definition at line 3130 of file cellCuts.C.
References mesh, and Foam::reverse().
Referenced by cellCuts::cellAnchorPoints().
void flipLoopOnly | ( | const label | celli | ) |
Flip loop for celli. Does not update anchors. Use with care.
(only if you're sure loop orientation is wrong)
Definition at line 3147 of file cellCuts.C.
References Foam::reverse().
Referenced by cellCuts::cellAnchorPoints().
void writeOBJ | ( | Ostream & | os, |
const pointField & | loopPoints, | ||
label & | vertI | ||
) | const |
debugging:Write list of cuts to stream in OBJ format
Definition at line 3156 of file cellCuts.C.
References Foam::endl(), forAll, Vector< Cmpt >::x(), Vector< Cmpt >::y(), and Vector< Cmpt >::z().
void writeOBJ | ( | Ostream & | os | ) | const |
debugging:Write all of cuts to stream in OBJ format
Definition at line 3182 of file cellCuts.C.
References forAll, and Foam::meshTools::writeOBJ().
debugging:Write edges of cell and loop
Definition at line 3193 of file cellCuts.C.
References Foam::meshTools::writeOBJ().
Referenced by cellCuts::cellAnchorPoints().