38 Foam::label Foam::walkPatch::getNeighbour
55 const edge&
e = edges[fEdges[fp]];
57 if ((e[0] == v0 && e[1] == v1) || (e[0] == v1 && e[1] == v0))
60 nbrEdgeI = fEdges[fp];
67 label edgeI = fEdges[i];
69 const edge& e = edges[edgeI];
73 (e[0] == v0 && e[1] == v1)
74 || (e[0] == v1 && e[1] == v0)
89 <<
"Did not find edge on face " << faceI <<
" that uses vertices"
98 if (eFaces.size() == 1)
102 else if (eFaces.size() == 2)
104 label nbrFaceI = eFaces[0];
106 if (nbrFaceI == faceI)
108 nbrFaceI = eFaces[1];
116 <<
"Illegal surface on patch. Face " << faceI
117 <<
" at vertices " << v0 <<
',' << v1
118 <<
" has fewer than 1 or more than 2 neighbours"
127 void Foam::walkPatch::faceToFace
136 nbrFaces.setSize(pp_.size());
137 nbrEnterVerts.setSize(pp_.size());
142 label faceI = changedFaces[i];
143 label enterVertI = enterVerts[i];
145 if (!visited_[faceI])
148 visited_[faceI] =
true;
149 visitOrder_.append(faceI);
151 const face&
f = pp_.localFaces()[faceI];
155 indexInFace_.append(fp);
158 for (label i = 0; i < f.size(); i++)
160 label fp1 = reverse_ ? f.rcIndex(fp) : f.fcIndex(fp);
161 label nbr = getNeighbour(faceI, fp, f[fp], f[fp1]);
167 && faceZone_[nbr] == faceZone_[faceI]
170 nbrFaces[changedI] = nbr;
171 nbrEnterVerts[changedI] = f[fp];
180 nbrFaces.setSize(changedI);
181 nbrEnterVerts.setSize(changedI);
188 Foam::walkPatch::walkPatch
194 const label enterVertI,
202 visitOrder_(pp.size()),
203 indexInFace_(pp.size())
225 if (nbrFaces.empty())
230 changedFaces = nbrFaces;
231 enterVerts = nbrEnterVerts;
234 visitOrder_.shrink();
235 indexInFace_.shrink();