Go to the documentation of this file.
28 #include "primitiveMesh.H"
29 #include "primitiveMesh.H"
71 if (!faceSizeMatch(faces, myFaces))
83 label numVert = calcLocalFaces(faces, myFaces);
85 if (numVert != vertPerCell)
91 calcEdgeAddressing(numVert);
97 vertLabels_.setSize(vertPerCell);
98 faceLabels_.setSize(facePerCell);
107 if (faceSize_[faceI] == 4)
113 const face& face0 = localFaces_[face0I];
114 label face0vert0 = 0;
122 vertLabels_[0] = pointMap_[face0[face0vert0]];
123 faceLabels_[0] = faceMap_[face0I];
131 !(owner[faceMap_[face0I]] == cellI)
133 vertLabels_[1] = pointMap_[face0[face0vert1]];
141 !(owner[faceMap_[face0I]] == cellI)
143 vertLabels_[2] = pointMap_[face0[face0vert2]];
151 !(owner[faceMap_[face0I]] == cellI)
153 vertLabels_[3] = pointMap_[face0[face0vert3]];
164 faceLabels_[1] = faceMap_[face1I];
175 faceLabels_[2] = faceMap_[face2I];
186 faceLabels_[3] = faceMap_[face3I];
197 faceLabels_[4] = faceMap_[face4I];
199 const face& face4 = localFaces_[face4I];
202 label face4vert0 = pointFaceIndex_[face0[face0vert0]][face4I];
210 !(owner[faceMap_[face4I]] == cellI)
212 vertLabels_[4] = pointMap_[face4[face4vert4]];
230 if (myFaces.
size() != 5)
240 label size = faces[myFaces[myFaceI]].
size();
256 if ((nTris == 4) && (nQuads == 1))
313 shape =
cellShape(model(), vertLabels());
static const label maxVertPerFace
virtual label faceHashValue() const
Hash value of all face sizes of this shape. Can be used for.
virtual bool matchShape(const bool checkOnly, const faceList &faces, const labelList &faceOwner, const label cellI, const labelList &myFaces)
Low level shape recognition. Return true if matches.
List< label > labelList
A List of labels.
#define forAll(list, i)
Loop across all elements in list.
virtual bool isA(const primitiveMesh &mesh, const label cellI)
Exact match. Uses faceSizeMatch.
const cellList & cells() const
Base class for cellshape matchers (hexMatch, prismMatch, etc.). These are classes which given a mesh ...
static const label vertPerCell
Constants for this shape.
static const label facePerCell
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
virtual bool faceSizeMatch(const faceList &, const labelList &) const
Check whether number of face sizes match the shape.
virtual const labelList & faceOwner() const
Return face owner.
labelList identity(const label len)
Create identity map (map[i] == i) of given length.
virtual bool matches(const primitiveMesh &mesh, const label cellI, cellShape &shape)
Like isA but also constructs a cellShape (if shape matches)
An analytical geometric cellShape.
virtual const faceList & faces() const
Return raw faces.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
pyrMatcher()
Construct null.
A face is a list of labels corresponding to mesh vertices.
Various functions to operate on Lists.
void size(const label)
Override size to be inconsistent with allocated storage.
Cell-face mesh analysis engine.