46 template<
class>
class FaceList,
56 Info<<
"PrimitivePatch<Face, FaceList, PointField, PointType>::" 57 <<
"calcAddressing() : calculating patch addressing" 61 if (edgesPtr_ || faceFacesPtr_ || edgeFacesPtr_ || faceEdgesPtr_)
66 <<
"addressing already calculated" 71 const List<Face>& locFcs = localFaces();
80 maxEdges += locFcs[facei].size();
92 List<DynamicList<label>>
ff(locFcs.size());
105 faceIntoEdges[facei] = locFcs[facei].edges();
107 labelList& curFaceEdges = faceEdges[facei];
108 curFaceEdges.
setSize(faceIntoEdges[facei].size());
110 forAll(curFaceEdges, faceEdgeI)
112 curFaceEdges[faceEdgeI] = -1;
131 const Face& curF = locFcs[facei];
132 const edgeList& curEdges = faceIntoEdges[facei];
135 List<DynamicList<label>> neiFaces(curF.size());
136 List<DynamicList<label>> edgeOfNeiFace(curF.size());
138 label nNeighbours = 0;
144 if (faceEdges[facei][edgeI] >= 0)
continue;
149 const edge& e = curEdges[edgeI];
153 const labelList& nbrFaces = pf[e.start()];
155 forAll(nbrFaces, nbrFacei)
158 label curNei = nbrFaces[nbrFacei];
164 const edgeList& searchEdges = faceIntoEdges[curNei];
166 forAll(searchEdges, neiEdgeI)
168 if (searchEdges[neiEdgeI] == e)
173 neiFaces[edgeI].append(curNei);
174 edgeOfNeiFace[edgeI].append(neiEdgeI);
177 ff[facei].append(curNei);
178 ff[curNei].append(facei);
198 for (
label neiSearch = 0; neiSearch < nNeighbours; neiSearch++)
202 label minNei = locFcs.size();
206 if (neiFaces[nfI].size() && neiFaces[nfI][0] < minNei)
209 minNei = neiFaces[nfI][0];
216 edges[nEdges] = curEdges[nextNei];
219 faceEdges[facei][nextNei] = nEdges;
221 DynamicList<label>& cnf = neiFaces[nextNei];
222 DynamicList<label>& eonf = edgeOfNeiFace[nextNei];
231 faceEdges[cnf[cnfI]][eonf[cnfI]] = nEdges;
233 curEf[cnfI + 1] = cnf[cnfI];
246 <<
"Error in internal edge insertion" 252 nInternalEdges_ = nEdges;
262 if (curEdges[edgeI] < 0)
265 edges[nEdges] = faceIntoEdges[facei][edgeI];
266 curEdges[edgeI] = nEdges;
279 edges.setSize(nEdges);
282 edgeFaces.setSize(nEdges);
290 faceFaces[facei].transfer(
ff[facei]);
296 Info<<
"PrimitivePatch<Face, FaceList, PointField, PointType>::" 297 <<
"calcAddressing() : finished calculating patch addressing" List< labelList > labelListList
A List of labelList.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
List< edgeList > edgeListList
Ostream & endl(Ostream &os)
Add newline and flush stream.
A list of faces which address into the list of points.
List< label > labelList
A List of labels.
errorManip< error > abort(error &err)
void setSize(const label)
Reset size of List.
const FieldField< fvPatchField, Type > & ff(const FieldField< fvPatchField, Type > &bf)