34 template<
class>
class FaceList,
39 const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
40 const extrudeModel& model
43 const pointField& surfacePoints = extrudePatch.localPoints();
44 const vectorField& surfaceNormals = extrudePatch.pointNormals();
46 const label nLayers = model.nLayers();
48 pointField ePoints((nLayers + 1)*surfacePoints.size());
50 for (
label layer=0; layer<=nLayers; layer++)
52 label offset = layer*surfacePoints.size();
56 ePoints[offset + i] = model
70 template<
class Face,
template<
class>
class FaceList,
class PointField>
73 const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
74 const extrudeModel& model
77 const pointField& surfacePoints = extrudePatch.localPoints();
78 const List<face>& surfaceFaces = extrudePatch.localFaces();
79 const edgeList& surfaceEdges = extrudePatch.edges();
80 const label nInternalEdges = extrudePatch.nInternalEdges();
82 const label nLayers = model.nLayers();
85 (nLayers + 1)*surfaceFaces.
size() + nLayers*surfaceEdges.size();
93 for (
label layer=0; layer<nLayers; layer++)
95 label currentLayerOffset = layer*surfacePoints.size();
96 label nextLayerOffset = currentLayerOffset + surfacePoints.size();
99 for (
label edgeI=0; edgeI<nInternalEdges; edgeI++)
101 const edge&
e = surfaceEdges[edgeI];
102 const labelList& edgeFaces = extrudePatch.edgeFaces()[edgeI];
104 face&
f = eFaces[facei++];
109 (edgeFaces[0] < edgeFaces[1])
110 == sameOrder(surfaceFaces[edgeFaces[0]],
e)
113 f[0] =
e[0] + currentLayerOffset;
114 f[1] =
e[1] + currentLayerOffset;
115 f[2] =
e[1] + nextLayerOffset;
116 f[3] =
e[0] + nextLayerOffset;
120 f[0] =
e[1] + currentLayerOffset;
121 f[1] =
e[0] + currentLayerOffset;
122 f[2] =
e[0] + nextLayerOffset;
123 f[3] =
e[1] + nextLayerOffset;
128 if (layer < nLayers-1)
143 for (
label layer=0; layer<nLayers; layer++)
145 label currentLayerOffset = layer*surfacePoints.size();
146 label nextLayerOffset = currentLayerOffset + surfacePoints.size();
149 for (
label edgeI=nInternalEdges; edgeI<surfaceEdges.size(); edgeI++)
151 const edge&
e = surfaceEdges[edgeI];
152 const labelList& edgeFaces = extrudePatch.edgeFaces()[edgeI];
154 face&
f = eFaces[facei++];
157 if (sameOrder(surfaceFaces[edgeFaces[0]],
e))
159 f[0] =
e[0] + currentLayerOffset;
160 f[1] =
e[1] + currentLayerOffset;
161 f[2] =
e[1] + nextLayerOffset;
162 f[3] =
e[0] + nextLayerOffset;
166 f[0] =
e[1] + currentLayerOffset;
167 f[1] =
e[0] + currentLayerOffset;
168 f[2] =
e[0] + nextLayerOffset;
169 f[3] =
e[1] + nextLayerOffset;
177 eFaces[facei++] = face(surfaceFaces[i]).reverseFace();
187 + nLayers*surfacePoints.size()
196 template<
class Face,
template<
class>
class FaceList,
class PointField>
199 const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
200 const extrudeModel& model
203 const List<face>& surfaceFaces = extrudePatch.localFaces();
204 const edgeList& surfaceEdges = extrudePatch.edges();
205 const label nInternalEdges = extrudePatch.nInternalEdges();
207 const label nLayers = model.nLayers();
214 const face&
f = surfaceFaces[i];
216 for (
label layer=0; layer<nLayers; layer++)
218 eCells[i + layer*surfaceFaces.
size()].setSize(
f.
size() + 2);
228 for (
label layer=0; layer<nLayers; layer++)
231 for (
label i=0; i<nInternalEdges; i++)
234 const labelList& edgeFaces = extrudePatch.edgeFaces()[i];
237 label cell0 = layer*surfaceFaces.
size() + edgeFaces[0];
238 label cell1 = layer*surfaceFaces.
size() + edgeFaces[1];
240 eCells[cell0][nCellFaces[cell0]++] = facei;
241 eCells[cell1][nCellFaces[cell1]++] = facei;
247 if (layer < nLayers-1)
251 label cell0 = layer*surfaceFaces.
size() + i;
252 label cell1 = (layer+1)*surfaceFaces.
size() + i;
254 eCells[cell0][nCellFaces[cell0]++] = facei;
255 eCells[cell1][nCellFaces[cell1]++] = facei;
263 for (
label layer=0; layer<nLayers; layer++)
266 for (
label i=nInternalEdges; i<surfaceEdges.size(); i++)
269 const labelList& edgeFaces = extrudePatch.edgeFaces()[i];
272 label cell0 = layer*surfaceFaces.
size() + edgeFaces[0];
274 eCells[cell0][nCellFaces[cell0]++] = facei;
283 eCells[i][nCellFaces[i]++] = facei;
291 label cell0 = (nLayers-1)*surfaceFaces.
size() + i;
293 eCells[cell0][nCellFaces[cell0]++] = facei;
308 template<
class>
class FaceList,
314 const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
315 const extrudeModel& model
321 extrudedPoints(extrudePatch, model),
322 extrudedFaces(extrudePatch, model),
323 extrudedCells(extrudePatch, model)
333 *(extrudePatch.nEdges() - extrudePatch.nInternalEdges());
342 wallPolyPatch::typeName
357 facei += extrudePatch.size();