32 template<
class BinaryOp>
33 void Foam::domainDecomposition::processInterCyclics
35 const polyBoundaryMesh&
patches,
36 List<DynamicList<DynamicList<label>>>& interPatchFaces,
37 List<Map<label>>& procNbrToInterPatch,
38 List<labelListList>& subPatchIDs,
39 List<labelListList>& subPatchStarts,
47 if (isA<cyclicPolyPatch>(
patches[patchi]))
49 const cyclicPolyPatch& pp = refCast<const cyclicPolyPatch>
54 if (pp.owner() !=
owner)
60 const labelUList& patchFaceCells = pp.faceCells();
62 pp.neighbPatch().faceCells();
67 forAll(oldInterfaceSizes, proci)
69 labelList& curOldSizes = oldInterfaceSizes[proci];
72 forAll(curOldSizes, interI)
75 interPatchFaces[proci][interI].size();
80 forAll(patchFaceCells, facei)
82 const label ownerProc = cellToProc_[patchFaceCells[facei]];
83 const label nbrProc = cellToProc_[nbrPatchFaceCells[facei]];
84 if (bop(ownerProc, nbrProc))
99 forAll(oldInterfaceSizes, proci)
101 const labelList& curOldSizes = oldInterfaceSizes[proci];
103 forAll(curOldSizes, interI)
105 label oldSz = curOldSizes[interI];
106 if (interPatchFaces[proci][interI].
size() > oldSz)
109 append(subPatchIDs[proci][interI], patchi);
110 append(subPatchStarts[proci][interI], oldSz);
116 forAll(subPatchIDs, proci)
118 label nIntfcs = interPatchFaces[proci].size();
119 subPatchIDs[proci].setSize(nIntfcs,
labelList(1, patchi));