36 void Foam::FECCellToFaceStencil::calcEdgeBoundaryData
40 EdgeMap<labelList>& neiGlobal
43 neiGlobal.resize(2*boundaryEdges.size());
47 for (
const label edgeI : boundaryEdges)
51 mesh().edges()[edgeI],
55 mesh().edgeFaces(edgeI),
65 void Foam::FECCellToFaceStencil::calcFaceStencil
83 const polyPatch& pp =
patches[patchi];
87 label facei = pp.start();
92 globalNumbering().toGlobal(own[facei]);
107 allCoupledFacesPatch()().meshEdges
116 validBoundaryFaces(isValidBFace);
121 EdgeMap<labelList> neiGlobal;
134 faceStencil.setSize(
mesh().nFaces());
140 label edgeI = boundaryEdges[i];
149 label facei = eFaces[j];
152 merge(-1, -1, eGlobals, faceStencil[facei]);
161 DynamicList<label> fEdgesSet;
162 DynamicList<label> eFacesSet;
167 label globalOwn = globalNumbering().toGlobal(own[facei]);
168 label globalNei = globalNumbering().toGlobal(nei[facei]);
173 faceStencilSet.clear();
176 forAll(faceStencil[facei], i)
178 label globalI = faceStencil[facei][i];
179 if (globalI != globalOwn && globalI != globalNei)
181 faceStencilSet.insert(globalI);
184 faceStencil[facei].clear();
191 label edgeI = fEdges[i];
198 mesh().edgeFaces(edgeI, eFacesSet),
204 faceStencil[facei].setSize(faceStencilSet.size()+2);
206 faceStencil[facei][
n++] = globalOwn;
207 faceStencil[facei][
n++] = globalNei;
208 for (
const label stencili : faceStencilSet)
210 if (stencili == globalOwn || stencili == globalNei)
213 <<
"problem:" << faceStencilSet
216 faceStencil[facei][
n++] = stencili;
221 const polyPatch& pp =
patches[patchi];
222 label facei = pp.start();
228 label globalOwn = globalNumbering().toGlobal(own[facei]);
234 faceStencilSet.clear();
237 forAll(faceStencil[facei], i)
239 label globalI = faceStencil[facei][i];
240 if (globalI != globalOwn && globalI != globalNei)
242 faceStencilSet.insert(globalI);
245 faceStencil[facei].clear();
252 label edgeI = fEdges[i];
259 mesh().edgeFaces(edgeI, eFacesSet),
265 faceStencil[facei].setSize(faceStencilSet.size()+2);
267 faceStencil[facei][
n++] = globalOwn;
268 faceStencil[facei][
n++] = globalNei;
269 for (
const label stencili : faceStencilSet)
271 if (stencili == globalOwn || stencili == globalNei)
274 <<
"problem:" << faceStencilSet
277 faceStencil[facei][
n++] = stencili;
280 if (
n != faceStencil[facei].size())
283 <<
" size:" << faceStencil[facei].size()
290 else if (!isA<emptyPolyPatch>(pp))
294 label globalOwn = globalNumbering().toGlobal(own[facei]);
299 faceStencilSet.clear();
302 forAll(faceStencil[facei], i)
304 label globalI = faceStencil[facei][i];
305 if (globalI != globalOwn)
307 faceStencilSet.insert(globalI);
310 faceStencil[facei].clear();
317 label edgeI = fEdges[i];
324 mesh().edgeFaces(edgeI, eFacesSet),
330 faceStencil[facei].setSize(faceStencilSet.size()+1);
332 faceStencil[facei][
n++] = globalOwn;
333 for (
const label stencili : faceStencilSet)
335 if (stencili == globalOwn)
338 <<
"problem:" << faceStencilSet
341 faceStencil[facei][
n++] = stencili;
352 label globalOwn = globalNumbering().toGlobal(own[facei]);
353 if (faceStencil[facei][0] != globalOwn)
356 <<
"problem:" << faceStencil[facei]
357 <<
" globalOwn:" << globalOwn
360 label globalNei = globalNumbering().toGlobal(nei[facei]);
361 if (faceStencil[facei][1] != globalNei)
364 <<
"problem:" << faceStencil[facei]
365 <<
" globalNei:" << globalNei
373 const polyPatch& pp =
patches[patchi];
379 label facei = pp.start()+i;
381 label globalOwn = globalNumbering().toGlobal(own[facei]);
382 if (faceStencil[facei][0] != globalOwn)
385 <<
"problem:" << faceStencil[facei]
386 <<
" globalOwn:" << globalOwn
390 if (faceStencil[facei][1] != globalNei)
393 <<
"problem:" << faceStencil[facei]
394 <<
" globalNei:" << globalNei
399 else if (!isA<emptyPolyPatch>(pp))
403 label facei = pp.start()+i;
405 label globalOwn = globalNumbering().toGlobal(own[facei]);
406 if (faceStencil[facei][0] != globalOwn)
409 <<
"problem:" << faceStencil[facei]
410 <<
" globalOwn:" << globalOwn
427 calcFaceStencil(faceStencil);