Go to the documentation of this file.
65 if (!faceSizeMatch(faces, myFaces))
77 label numVert = calcLocalFaces(faces, myFaces);
79 if (numVert != vertPerCell)
85 calcEdgeAddressing(numVert);
91 vertLabels_.setSize(vertPerCell);
92 faceLabels_.setSize(facePerCell);
101 if (faceSize_[facei] == 4)
107 const face& face0 = localFaces_[face0I];
108 label face0vert0 = 0;
116 vertLabels_[0] = pointMap_[face0[face0vert0]];
117 faceLabels_[0] = faceMap_[face0I];
125 !(owner[faceMap_[face0I]] == celli)
127 vertLabels_[1] = pointMap_[face0[face0vert1]];
135 !(owner[faceMap_[face0I]] == celli)
137 vertLabels_[2] = pointMap_[face0[face0vert2]];
145 !(owner[faceMap_[face0I]] == celli)
147 vertLabels_[3] = pointMap_[face0[face0vert3]];
158 faceLabels_[1] = faceMap_[face1I];
169 faceLabels_[2] = faceMap_[face2I];
180 faceLabels_[3] = faceMap_[face3I];
191 faceLabels_[4] = faceMap_[face4I];
193 const face& face4 = localFaces_[face4I];
196 label face4vert0 = pointFaceIndex_[face0[face0vert0]][face4I];
204 !(owner[faceMap_[face4I]] == celli)
206 vertLabels_[4] = pointMap_[face4[face4vert4]];
224 if (myFaces.size() != 5)
232 for (
const label facei : myFaces)
234 const label size = faces[facei].size();
250 return (nTris == 4 && nQuads == 1);
300 shape =
cellShape(model(), vertLabels());
List< label > labelList
A List of labels.
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.
static constexpr const zero Zero
Global zero.
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 ...
#define forAll(list, i)
Loop across all elements in list.
virtual bool matches(const primitiveMesh &mesh, const label celli, cellShape &shape)
Like isA but also constructs a cellShape (if shape matches)
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.
An analytical geometric cellShape.
virtual const faceList & faces() const
Return raw faces.
labelList identity(const label len, label start=0)
Create identity map of the given length with (map[i] == i)
pyrMatcher()
Construct null.
A face is a list of labels corresponding to mesh vertices.
Various functions to operate on Lists.
Cell-face mesh analysis engine.