35 Foam::parLagrangianRedistributor::parLagrangianRedistributor
37 const fvMesh& srcMesh,
38 const fvMesh& tgtMesh,
39 const label nSrcCells,
40 const mapDistributePolyMesh& distMap
47 const mapDistribute& cellMap = distMap_.
cellMap();
51 cellMap.reverseDistribute(nSrcCells, destinationProcID_);
53 destinationCell_ =
identity(tgtMesh_.nCells());
54 cellMap.reverseDistribute(nSrcCells, destinationCell_);
66 List<wordList>& objectNames
80 cloudNames.setSize(localCloudDirs.size());
83 cloudNames[i] = localCloudDirs[i];
90 objectNames.setSize(cloudNames.size());
92 for (
const fileName& localCloudName : localCloudDirs)
95 IOobjectList localObjs
102 bool isCloud =
false;
103 if (localObjs.erase(
"coordinates"))
107 if (localObjs.erase(
"positions"))
116 const label cloudi = cloudNames.find(localCloudName);
118 objectNames[cloudi] = localObjs.sortedNames();
134 passivePositionParticleCloud& lpi
139 const label oldLpi = lpi.size();
150 List<IDLList<passivePositionParticle>> particleTransferLists
159 for (passivePositionParticle& ppi : lpi)
161 const label destProcI = destinationProcID_[ppi.cell()];
162 const label destCellI = destinationCell_[ppi.cell()];
164 ppi.cell() = destCellI;
165 destProc[particleI++] = destProcI;
166 particleTransferLists[destProcI].append(lpi.remove(&ppi));
175 forAll(particleTransferLists, procI)
179 if (particleTransferLists[procI].size())
181 UOPstream particleStream(procI, pBufs);
182 particleStream << particleTransferLists[procI];
190 pBufs.finishedSends(allNTrans);
201 passivePositionParticleCloud lagrangianPositions
205 IDLList<passivePositionParticle>()
212 const label nRec = allNTrans[procI];
219 UIPstream particleStream(procI, pBufs);
222 IDLList<passivePositionParticle> newParticles
225 passivePositionParticle::iNew(tgtMesh_)
228 for (passivePositionParticle& newp : newParticles)
230 lagrangianPositions.addParticle(newParticles.remove(&newp));
235 if (lagrangianPositions.size())
238 IOPosition<passivePositionParticleCloud>
246 IOPosition<passivePositionParticleCloud>
259 const fileName oldCoords
261 IOPosition<passivePositionParticleCloud>
269 const fileName oldPos
271 IOPosition<passivePositionParticleCloud>
290 nsTransPs[sendProcI] = subMap[sendProcI].size();
296 label constructSize = 0;
297 forAll(constructMap, procI)
306 map[i] = constructSize++;
315 std::move(constructMap)
327 passivePositionParticleCloud lpi(srcMesh_,
cloudName,
false);
329 return redistributeLagrangianPositions(lpi);