30 template<
class BinaryOp>
31 void Foam::domainDecomposition::processInterCyclics
33 const polyBoundaryMesh& patches,
34 List<DynamicList<DynamicList<label>>>& interPatchFaces,
35 List<Map<label>>& procNbrToInterPatch,
36 List<labelListList>& subPatchIDs,
37 List<labelListList>& subPatchStarts,
45 if (isA<cyclicPolyPatch>(patches[patchi]))
47 const cyclicPolyPatch& pp = refCast<const cyclicPolyPatch>
52 if (pp.owner() !=
owner)
58 const labelUList& patchFaceCells = pp.faceCells();
60 pp.neighbPatch().faceCells();
65 forAll(oldInterfaceSizes, proci)
67 labelList& curOldSizes = oldInterfaceSizes[proci];
70 forAll(curOldSizes, interI)
73 interPatchFaces[proci][interI].size();
78 forAll(patchFaceCells, facei)
80 const label ownerProc = cellToProc_[patchFaceCells[facei]];
81 const label nbrProc = cellToProc_[nbrPatchFaceCells[facei]];
82 if (bop(ownerProc, nbrProc))
97 forAll(oldInterfaceSizes, proci)
99 const labelList& curOldSizes = oldInterfaceSizes[proci];
101 forAll(curOldSizes, interI)
103 label oldSz = curOldSizes[interI];
104 if (interPatchFaces[proci][interI].
size() > oldSz)
107 append(subPatchIDs[proci][interI], patchi);
108 append(subPatchStarts[proci][interI], oldSz);
114 forAll(subPatchIDs, proci)
116 label nIntfcs = interPatchFaces[proci].size();
117 subPatchIDs[proci].setSize(nIntfcs,
labelList(1, patchi));
List< labelList > labelListList
A List of labelList.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
label size() const
Return number of elements in table.
UList< label > labelUList
List< label > labelList
A List of labels.
void setSize(const label)
Reset size of List.
const labelUList & owner() const
Internal face owner.