63 if (blockedFace.
size() && blockedFace[faceI])
81 if (blockedFace.empty() || !blockedFace[faceI])
83 seedFaces[nUnblocked] = faceI;
101 mesh().globalData().nTotalCells()+1
109 if (cellData[cellI].valid(deltaCalc.
data()))
111 cellRegion[cellI] = cellData[cellI].data();
117 const cell& cFaces =
mesh().cells()[cellI];
118 label faceI = cFaces[0];
120 if (blockedFace.
size() && !blockedFace[faceI])
123 <<
"Problem: unblocked face " << faceI
124 <<
" at " <<
mesh().faceCentres()[faceI]
125 <<
" on unassigned cell " << cellI
126 <<
mesh().cellCentres()[faceI]
129 cellRegion[cellI] = globalFaces.
toGlobal(faceI);
137 const bool doGlobalRegions,
147 if (!doGlobalRegions)
150 boolList coupledOrBlockedFace(blockedFace);
153 if (coupledOrBlockedFace.
size())
158 if (isA<processorPolyPatch>(pp))
163 coupledOrBlockedFace[faceI++] =
true;
170 labelList offsets(Pstream::nProcs()+1, 0);
171 for (
label i = Pstream::myProcNo()+1; i < offsets.
size(); i++)
173 offsets[i] =
mesh().nFaces();
181 calcNonCompactRegionSplit
184 coupledOrBlockedFace,
193 label region = cellRegion[cellI];
198 if (fnd == globalToCompact.end())
200 globalRegion = globalRegions.
toGlobal(globalToCompact.size());
201 globalToCompact.insert(region, globalRegion);
205 globalRegion = fnd();
207 cellRegion[cellI] = globalRegion;
212 labelList compactOffsets(Pstream::nProcs()+1, 0);
213 for (
label i = Pstream::myProcNo()+1; i < compactOffsets.
size(); i++)
215 compactOffsets[i] = globalToCompact.size();
227 calcNonCompactRegionSplit
242 labelList nOriginating(Pstream::nProcs(), 0);
248 label region = cellRegion[cellI];
252 if (globalRegions.
isLocal(region))
254 if (haveRegion.
insert(region))
256 nOriginating[Pstream::myProcNo()]++;
262 if (haveRegion.
insert(region))
264 nOriginating[procI]++;
272 Pout<<
"Counted " << nOriginating[Pstream::myProcNo()]
273 <<
" local regions." <<
endl;
282 const globalIndex& globalCompact = globalCompactPtr();
292 Map<label> globalToCompact(2*nOriginating[Pstream::myProcNo()]);
297 if (procI != Pstream::myProcNo())
299 nonLocal[procI].
resize(2*nOriginating[procI]);
305 label region = cellRegion[cellI];
306 if (globalRegions.
isLocal(region))
309 globalToCompact.insert
312 globalCompact.
toGlobal(globalToCompact.size())
317 nonLocal[globalRegions.
whichProcID(region)].insert(region);
327 forAll(sendNonLocal, procI)
329 sendNonLocal[procI] = nonLocal[procI].toc();
334 forAll(sendNonLocal, procI)
336 Pout<<
" from processor " << procI
337 <<
" want " << sendNonLocal[procI].
size()
338 <<
" region numbers."
348 Pstream::exchange<labelList, label>
360 forAll(recvNonLocal, procI)
362 const labelList& nonLocal = recvNonLocal[procI];
367 sendWantedLocal[procI][i] = globalToCompact[nonLocal[i]];
373 recvNonLocal.
clear();
376 Pstream::exchange<labelList, label>
382 sendWantedLocal.
clear();
388 forAll(recvNonLocal, procI)
390 const labelList& wantedRegions = sendNonLocal[procI];
391 const labelList& compactRegions = recvNonLocal[procI];
395 globalToCompact.insert(wantedRegions[i], compactRegions[i]);
402 cellRegion[cellI] = globalToCompact[cellRegion[cellI]];
405 return globalCompactPtr;
430 const bool doGlobalRegions
436 globalNumberingPtr_ = calcRegionSplit
451 const bool doGlobalRegions
457 globalNumberingPtr_ = calcRegionSplit