43 result[elemI] = elemI;
52 Foam::cellMatcher::cellMatcher
54 const label vertPerCell,
55 const label facePerCell,
56 const label maxVertPerFace,
57 const word& cellModelName
61 localFaces_(facePerCell),
62 faceSize_(facePerCell, -1),
63 pointMap_(vertPerCell),
64 faceMap_(facePerCell),
65 edgeFaces_(2*vertPerCell*vertPerCell),
66 pointFaceIndex_(vertPerCell),
67 vertLabels_(vertPerCell),
68 faceLabels_(facePerCell),
69 cellModelName_(cellModelName),
74 face&
f = localFaces_[faceI];
79 forAll(pointFaceIndex_, vertI)
81 pointFaceIndex_[vertI].setSize(facePerCell);
102 label faceI = myFaces[myFaceI];
104 const face&
f = faces[faceI];
105 face& localFace = localFaces_[myFaceI];
108 faceSize_[myFaceI] = f.
size();
112 label vertI = f[localVertI];
115 if (iter == localPoint_.
end())
119 if (newVertI >= pointMap_.size())
125 localFace[localVertI] = newVertI;
126 localPoint_.insert(vertI, newVertI);
132 localFace[localVertI] = *iter;
137 faceMap_[myFaceI] = faceI;
144 iter != localPoint_.end();
149 pointMap_[fp] = iter.key();
164 forAll(localFaces_, localFaceI)
166 const face&
f = localFaces_[localFaceI];
168 label prevVertI = faceSize_[localFaceI] - 1;
173 fp < faceSize_[localFaceI];
177 label start = f[prevVertI];
180 label key1 = edgeKey(numVert, start, end);
181 label key2 = edgeKey(numVert, end, start);
183 if (edgeFaces_[key1] == -1)
186 edgeFaces_[key1] = localFaceI;
187 edgeFaces_[key2] = localFaceI;
189 else if (edgeFaces_[key1+1] == -1)
192 edgeFaces_[key1+1] = localFaceI;
193 edgeFaces_[key2+1] = localFaceI;
200 "(const faceList&, const label)"
201 ) <<
"edgeFaces_ full at entry:" << key1
202 <<
" for edge " << start <<
" " << end
216 forAll(pointFaceIndex_, i)
218 labelList& faceIndices = pointFaceIndex_[i];
223 forAll(localFaces_, localFaceI)
225 const face&
f = localFaces_[localFaceI];
230 fp < faceSize_[localFaceI];
235 pointFaceIndex_[vert][localFaceI] = fp;
247 const label localFaceI
250 label key = edgeKey(numVert, v0, v1);
252 if (edgeFaces_[key] == localFaceI)
254 return edgeFaces_[key+1];
256 else if (edgeFaces_[key+1] == localFaceI)
258 return edgeFaces_[key];
265 "(const label, const labelList&, const label, const label, "
267 ) <<
"edgeFaces_ does not contain:" << localFaceI
268 <<
" for edge " << v0 <<
" " << v1 <<
" at key " << key
269 <<
" edgeFaces_[key, key+1]:" << edgeFaces_[key]
270 <<
" , " << edgeFaces_[key+1]
280 os <<
"Faces:" <<
endl;
282 forAll(localFaces_, faceI)
286 for(label fp = 0; fp < faceSize_[faceI]; fp++)
288 os <<
' ' << localFaces_[faceI][fp];
293 os <<
"Face map : " << faceMap_ <<
endl;
294 os <<
"Point map : " << pointMap_ <<
endl;