46 template<
class>
class FaceList,
56 Info<<
"PrimitivePatch<Face, FaceList, PointField, PointType>::"
57 <<
"calcAddressing() : calculating patch addressing"
61 if (edgesPtr_ || faceFacesPtr_ || edgeFacesPtr_ || faceEdgesPtr_)
67 "PrimitivePatch<Face, FaceList, PointField, PointType>::"
69 ) <<
"addressing already calculated"
74 const List<Face>& locFcs = localFaces();
83 maxEdges += locFcs[faceI].size();
95 List<DynamicList<label> >
ff(locFcs.size());
108 faceIntoEdges[faceI] = locFcs[faceI].edges();
110 labelList& curFaceEdges = faceEdges[faceI];
111 curFaceEdges.
setSize(faceIntoEdges[faceI].size());
113 forAll (curFaceEdges, faceEdgeI)
115 curFaceEdges[faceEdgeI] = -1;
134 const Face& curF = locFcs[faceI];
135 const edgeList& curEdges = faceIntoEdges[faceI];
138 List<DynamicList<label> > neiFaces(curF.size());
139 List<DynamicList<label> > edgeOfNeiFace(curF.size());
141 label nNeighbours = 0;
147 if (faceEdges[faceI][edgeI] >= 0)
continue;
152 const edge&
e = curEdges[edgeI];
156 const labelList& nbrFaces = pf[e.start()];
158 forAll (nbrFaces, nbrFaceI)
161 label curNei = nbrFaces[nbrFaceI];
167 const edgeList& searchEdges = faceIntoEdges[curNei];
169 forAll (searchEdges, neiEdgeI)
171 if (searchEdges[neiEdgeI] == e)
176 neiFaces[edgeI].append(curNei);
177 edgeOfNeiFace[edgeI].append(neiEdgeI);
180 ff[faceI].append(curNei);
181 ff[curNei].append(faceI);
201 for (label neiSearch = 0; neiSearch < nNeighbours; neiSearch++)
205 label minNei = locFcs.size();
209 if (neiFaces[nfI].size() && neiFaces[nfI][0] < minNei)
212 minNei = neiFaces[nfI][0];
219 edges[nEdges] = curEdges[nextNei];
222 faceEdges[faceI][nextNei] = nEdges;
224 DynamicList<label>& cnf = neiFaces[nextNei];
225 DynamicList<label>& eonf = edgeOfNeiFace[nextNei];
234 faceEdges[cnf[cnfI]][eonf[cnfI]] = nEdges;
236 curEf[cnfI + 1] = cnf[cnfI];
250 "PrimitivePatch<Face, FaceList, PointField, PointType>::"
252 ) <<
"Error in internal edge insertion"
258 nInternalEdges_ = nEdges;
268 if (curEdges[edgeI] < 0)
271 edges[nEdges] = faceIntoEdges[faceI][edgeI];
272 curEdges[edgeI] = nEdges;
285 edges.setSize(nEdges);
288 edgeFaces.setSize(nEdges);
296 faceFaces[faceI].transfer(
ff[faceI]);
302 Info<<
"PrimitivePatch<Face, FaceList, PointField, PointType>::"
303 <<
"calcAddressing() : finished calculating patch addressing"