33 template<
class BinaryOp>
34 void Foam::domainDecomposition::processInterCyclics
36 const polyBoundaryMesh&
patches,
37 List<DynamicList<DynamicList<label>>>& interPatchFaces,
38 List<Map<label>>& procNbrToInterPatch,
39 List<labelListList>& subPatchIDs,
40 List<labelListList>& subPatchStarts,
48 const auto& pp =
patches[patchi];
49 const auto* cpp = isA<cyclicPolyPatch>(pp);
51 if (cpp && cpp->owner() ==
owner)
54 const auto& cycPatch = *cpp;
55 const auto& nbrPatch = cycPatch.neighbPatch();
58 const labelUList& patchFaceCells = pp.faceCells();
59 const labelUList& nbrPatchFaceCells = nbrPatch.faceCells();
64 forAll(oldInterfaceSizes, proci)
66 labelList& curOldSizes = oldInterfaceSizes[proci];
69 forAll(curOldSizes, interI)
72 interPatchFaces[proci][interI].size();
77 forAll(patchFaceCells, facei)
79 const label ownerProc = cellToProc_[patchFaceCells[facei]];
80 const label nbrProc = cellToProc_[nbrPatchFaceCells[facei]];
81 if (bop(ownerProc, nbrProc))
96 forAll(oldInterfaceSizes, proci)
98 const labelList& curOldSizes = oldInterfaceSizes[proci];
100 forAll(curOldSizes, interI)
102 label oldSz = curOldSizes[interI];
103 if (interPatchFaces[proci][interI].
size() > oldSz)
106 append(subPatchIDs[proci][interI], patchi);
107 append(subPatchStarts[proci][interI], oldSz);
113 forAll(subPatchIDs, proci)
115 label nIntfcs = interPatchFaces[proci].size();
116 subPatchIDs[proci].setSize(nIntfcs,
labelList(1, patchi));