41 const label cellIndex,
46 const label pointOffset,
50 const static cellModel* hexModelPtr_ = NULL;
57 const cellModel&
hex = *hexModelPtr_;
60 if (faceLabels.size() != 4)
64 "extrudedQuadCellShape(const label cellIndex, "
65 "const labelList& faceLabels, const faceList& faces, "
66 "const labelList& owner, const labelList& neighbour, "
67 "const label pointOffset, faceList& frontAndBackFaces)"
68 ) <<
"Trying to create a quad with " << faceLabels.size() <<
" faces"
77 const label curFaceLabel = faceLabels[faceI];
79 const face& curFace = faces[curFaceLabel];
81 if (curFace.size() != 2)
85 "extrudedQuadCellShape(const label cellIndex, "
86 "const labelList& faceLabels, const faceList& faces, "
87 "const labelList& owner, const labelList& neighbour, "
88 "const label pointOffset, faceList& frontAndBackFaces)"
89 ) <<
"face " << curFaceLabel
90 <<
"does not have 2 vertices. Number of vertices: " << curFace
94 if (owner[curFaceLabel] == cellIndex)
96 localFaces[faceI] = curFace;
98 else if (neighbour[curFaceLabel] == cellIndex)
103 localFaces[faceI].setSize(curFace.size());
107 localFaces[faceI][curFace.size() - i - 1] =
115 "extrudedQuadCellShape(const label cellIndex, "
116 "const labelList& faceLabels, const faceList& faces, "
117 "const labelList& owner, const labelList& neighbour, "
118 "const label pointOffset, faceList& frontAndBackFaces)"
119 ) <<
"face " << curFaceLabel
120 <<
" does not belong to cell " << cellIndex
121 <<
". Face owner: " << owner[curFaceLabel] <<
" neighbour: "
122 << neighbour[curFaceLabel]
133 localFaces[0][0] != localFaces[1][1]
134 && localFaces[0][1] != localFaces[1][0]
141 missingPlaneFace[0] = localFaces[0][0];
142 missingPlaneFace[1] = localFaces[1][1];
143 missingPlaneFace[2] = localFaces[1][0];
144 missingPlaneFace[3] = localFaces[0][1];
146 frontAndBackFaces[2*cellIndex] = face(missingPlaneFace);
149 missingPlaneFace[0] = localFaces[0][0] + pointOffset;
150 missingPlaneFace[1] = localFaces[0][1] + pointOffset;
151 missingPlaneFace[2] = localFaces[1][0] + pointOffset;
152 missingPlaneFace[3] = localFaces[1][1] + pointOffset;
154 frontAndBackFaces[2*cellIndex + 1] = face(missingPlaneFace);
159 cellShapeLabels[0] = localFaces[0][0];
160 cellShapeLabels[1] = localFaces[0][1];
161 cellShapeLabels[2] = localFaces[1][0];
162 cellShapeLabels[3] = localFaces[1][1];
164 cellShapeLabels[4] = localFaces[0][0] + pointOffset;
165 cellShapeLabels[5] = localFaces[0][1] + pointOffset;
166 cellShapeLabels[6] = localFaces[1][0] + pointOffset;
167 cellShapeLabels[7] = localFaces[1][1] + pointOffset;
170 return cellShape(hex, cellShapeLabels);
174 localFaces[0][0] != localFaces[2][1]
175 && localFaces[0][1] != localFaces[2][0]
182 missingPlaneFace[0] = localFaces[0][0];
183 missingPlaneFace[1] = localFaces[2][1];
184 missingPlaneFace[2] = localFaces[2][0];
185 missingPlaneFace[3] = localFaces[0][1];
187 frontAndBackFaces[2*cellIndex] = face(missingPlaneFace);
190 missingPlaneFace[0] = localFaces[0][0] + pointOffset;
191 missingPlaneFace[1] = localFaces[0][1] + pointOffset;
192 missingPlaneFace[2] = localFaces[2][0] + pointOffset;
193 missingPlaneFace[3] = localFaces[2][1] + pointOffset;
195 frontAndBackFaces[2*cellIndex + 1] = face(missingPlaneFace);
200 cellShapeLabels[0] = localFaces[0][0];
201 cellShapeLabels[1] = localFaces[0][1];
202 cellShapeLabels[2] = localFaces[2][0];
203 cellShapeLabels[3] = localFaces[2][1];
205 cellShapeLabels[4] = localFaces[0][0] + pointOffset;
206 cellShapeLabels[5] = localFaces[0][1] + pointOffset;
207 cellShapeLabels[6] = localFaces[2][0] + pointOffset;
208 cellShapeLabels[7] = localFaces[2][1] + pointOffset;
211 return cellShape(hex, cellShapeLabels);
215 localFaces[0][0] != localFaces[3][1]
216 && localFaces[0][1] != localFaces[3][0]
223 missingPlaneFace[0] = localFaces[0][0];
224 missingPlaneFace[1] = localFaces[3][1];
225 missingPlaneFace[2] = localFaces[3][0];
226 missingPlaneFace[3] = localFaces[0][1];
228 frontAndBackFaces[2*cellIndex] = face(missingPlaneFace);
231 missingPlaneFace[0] = localFaces[0][0] + pointOffset;
232 missingPlaneFace[1] = localFaces[0][1] + pointOffset;
233 missingPlaneFace[2] = localFaces[3][0] + pointOffset;
234 missingPlaneFace[3] = localFaces[3][1] + pointOffset;
236 frontAndBackFaces[2*cellIndex + 1] = face(missingPlaneFace);
241 cellShapeLabels[0] = localFaces[0][0];
242 cellShapeLabels[1] = localFaces[0][1];
243 cellShapeLabels[2] = localFaces[3][0];
244 cellShapeLabels[3] = localFaces[3][1];
246 cellShapeLabels[4] = localFaces[0][0] + pointOffset;
247 cellShapeLabels[5] = localFaces[0][1] + pointOffset;
248 cellShapeLabels[6] = localFaces[3][0] + pointOffset;
249 cellShapeLabels[7] = localFaces[3][1] + pointOffset;
252 return cellShape(hex, cellShapeLabels);
258 "extrudedQuadCellShape(const label cellIndex, "
259 "const labelList& faceLabels, const faceList& faces, "
260 "const labelList& owner, const labelList& neighbour, "
261 "const label pointOffset, faceList& frontAndBackFaces)"
262 ) <<
"Problem with edge matching. Edges: " << localFaces