42 const label cellIndex,
47 const label pointOffset,
51 const static cellModel* prismModelPtr_ = NULL;
58 const cellModel& prism = *prismModelPtr_;
61 if (faceLabels.size() != 3)
65 "extrudedTriangleCellShape(const label cellIndex, "
66 "const labelList& faceLabels, const faceList& faces, "
67 "const labelList& owner, const labelList& neighbour, "
68 "const label pointOffset, faceList& frontAndBackFaces)"
69 ) <<
"Trying to create a triangle with " << faceLabels.size()
79 const label curFaceLabel = faceLabels[faceI];
81 const face& curFace = faces[curFaceLabel];
83 if (curFace.size() != 2)
87 "extrudedTriangleCellShape(const label cellIndex, "
88 "const labelList& faceLabels, const faceList& faces, "
89 "const labelList& owner, const labelList& neighbour, "
90 "const label pointOffset, faceList& frontAndBackFaces)"
91 ) <<
"face " << curFaceLabel
92 <<
"does not have 2 vertices. Number of vertices: " << curFace
96 if (owner[curFaceLabel] == cellIndex)
98 localFaces[faceI] = curFace;
100 else if (neighbour[curFaceLabel] == cellIndex)
105 localFaces[faceI].setSize(curFace.size());
109 localFaces[faceI][curFace.size() - i - 1] =
117 "extrudedTriangleCellShape(const label cellIndex, "
118 "const labelList& faceLabels, const faceList& faces, "
119 "const labelList& owner, const labelList& neighbour, "
120 "const label pointOffset, faceList& frontAndBackFaces)"
121 ) <<
"face " << curFaceLabel
122 <<
" does not belong to cell " << cellIndex
123 <<
". Face owner: " << owner[curFaceLabel] <<
" neighbour: "
124 << neighbour[curFaceLabel]
130 if (localFaces[0][1] == localFaces[1][0])
136 missingPlaneFace[0] = localFaces[0][0];
137 missingPlaneFace[1] = localFaces[1][1];
138 missingPlaneFace[2] = localFaces[0][1];
140 frontAndBackFaces[2*cellIndex] = face(missingPlaneFace);
143 missingPlaneFace[0] = localFaces[0][0] + pointOffset;
144 missingPlaneFace[1] = localFaces[0][1] + pointOffset;
145 missingPlaneFace[2] = localFaces[1][1] + pointOffset;
147 frontAndBackFaces[2*cellIndex + 1] = face(missingPlaneFace);
152 cellShapeLabels[0] = localFaces[0][0];
153 cellShapeLabels[1] = localFaces[0][1];
154 cellShapeLabels[2] = localFaces[1][1];
156 cellShapeLabels[3] = localFaces[0][0] + pointOffset;
157 cellShapeLabels[4] = localFaces[0][1] + pointOffset;
158 cellShapeLabels[5] = localFaces[1][1] + pointOffset;
160 return cellShape(prism, cellShapeLabels);
162 else if (localFaces[0][1] == localFaces[2][0])
168 missingPlaneFace[0] = localFaces[0][0];
169 missingPlaneFace[1] = localFaces[2][1];
170 missingPlaneFace[2] = localFaces[0][1];
172 frontAndBackFaces[2*cellIndex] = face(missingPlaneFace);
175 missingPlaneFace[0] = localFaces[0][0] + pointOffset;
176 missingPlaneFace[1] = localFaces[0][1] + pointOffset;
177 missingPlaneFace[2] = localFaces[2][1] + pointOffset;
179 frontAndBackFaces[2*cellIndex + 1] = face(missingPlaneFace);
184 cellShapeLabels[0] = localFaces[0][0];
185 cellShapeLabels[1] = localFaces[0][1];
186 cellShapeLabels[2] = localFaces[2][1];
188 cellShapeLabels[3] = localFaces[0][0] + pointOffset;
189 cellShapeLabels[4] = localFaces[0][1] + pointOffset;
190 cellShapeLabels[5] = localFaces[2][1] + pointOffset;
192 return cellShape(prism, cellShapeLabels);
198 "extrudedTriangleCellShape(const label cellIndex, "
199 "const labelList& faceLabels, const faceList& faces, "
200 "const labelList& owner, const labelList& neighbour, "
201 "const label pointOffset, faceList& frontAndBackFaces)"
202 ) <<
"Problem with edge matching. Edges: " << localFaces