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);
108 if (faceSize_[faceI] == 3)
115 const face& face0 = localFaces_[face0I];
118 for (
label face0vert0 = 0; face0vert0 < faceSize_[face0I]; face0vert0++)
125 vertLabels_[0] = pointMap_[face0[face0vert0]];
126 faceLabels_[0] = faceMap_[face0I];
134 !(owner[faceMap_[face0I]] == cellI)
136 vertLabels_[1] = pointMap_[face0[face0vert1]];
148 if (faceSize_[face1I] != 3)
152 faceLabels_[1] = faceMap_[face1I];
163 !(owner[faceMap_[face0I]] == cellI)
165 vertLabels_[2] = pointMap_[face0[face0vert2]];
176 faceLabels_[3] = faceMap_[face3I];
187 faceLabels_[2] = faceMap_[face2I];
190 label face3vert2 = pointFaceIndex_[face0[face0vert2]][face3I];
198 (owner[faceMap_[face3I]] == cellI)
201 const face& face3 = localFaces_[face3I];
203 vertLabels_[4] = pointMap_[face3[face3vert4]];
211 (owner[faceMap_[face3I]] == cellI)
213 vertLabels_[3] = pointMap_[face3[face3vert3]];
235 if (myFaces.
size() != 4)
245 label size = faces[myFaces[myFaceI]].
size();
260 if ((nTris == 2) && (nQuads == 2))
317 shape =
cellShape(model(), vertLabels());
List< label > labelList
A List of labels.
#define forAll(list, i)
Loop across all elements in list.
static const label maxVertPerFace
const cellList & cells() const
~tetWedgeMatcher()
Destructor.
Base class for cellshape matchers (hexMatch, prismMatch, etc.). These are classes which given a mesh ...
tetWedgeMatcher()
Construct null.
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 const labelList & faceOwner() const
Return face owner.
virtual bool matches(const primitiveMesh &mesh, const label cellI, cellShape &shape)
Like isA but also constructs a cellShape (if shape matches)
labelList identity(const label len)
Create identity map (map[i] == i) of given length.
An analytical geometric cellShape.
virtual bool faceSizeMatch(const faceList &, const labelList &) const
Check whether number of face sizes match the shape.
virtual bool isA(const primitiveMesh &mesh, const label cellI)
Exact match. Uses faceSizeMatch.
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.
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...
static const label facePerCell
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.
virtual label faceHashValue() const
Hash value of all face sizes of this shape. Can be used for.
static const label vertPerCell
Constants for this shape.
Cell-face mesh analysis engine.