65 void Foam::simpleGeomDecomp::assignToProcessorGroup
68 const label nProcGroup
71 label jump = processorGroup.size()/nProcGroup;
72 label jumpb = jump + 1;
73 label fstProcessorGroup = processorGroup.size() - jump*nProcGroup;
80 for (j=0; j<fstProcessorGroup; j++)
82 for (label
k=0;
k<jumpb;
k++)
84 processorGroup[ind++] = j;
89 for (; j<nProcGroup; j++)
91 for (label
k=0;
k<jump;
k++)
93 processorGroup[ind++] = j;
99 void Foam::simpleGeomDecomp::assignToProcessorGroup
102 const label nProcGroup,
105 const scalar summedWeights
118 const scalar jump = summedWeights/nProcGroup;
119 const label nProcGroupM1 = nProcGroup - 1;
120 scalar sumWeights = 0;
125 for (j=0; j<nProcGroupM1; j++)
127 const scalar
limit = jump*scalar(j + 1);
128 while (sumWeights <
limit)
130 sumWeights += weights[indices[ind]];
131 processorGroup[ind++] = j;
135 while (ind < processorGroup.size())
137 processorGroup[ind++] = nProcGroupM1;
171 assignToProcessorGroup(processorGroups, n_.x());
175 finalDecomp[pointIndices[i]] = processorGroups[i];
187 assignToProcessorGroup(processorGroups, n_.y());
191 finalDecomp[pointIndices[i]] += n_.x()*processorGroups[i];
203 assignToProcessorGroup(processorGroups, n_.z());
207 finalDecomp[pointIndices[i]] += n_.x()*n_.y()*processorGroups[i];
244 const scalar summedWeights =
sum(weights);
245 assignToProcessorGroup
256 finalDecomp[pointIndices[i]] = processorGroups[i];
268 assignToProcessorGroup
279 finalDecomp[pointIndices[i]] += n_.x()*processorGroups[i];
291 assignToProcessorGroup
302 finalDecomp[pointIndices[i]] += n_.x()*n_.y()*processorGroups[i];
311 Foam::simpleGeomDecomp::simpleGeomDecomp(
const dictionary& decompDict)
317 Foam::simpleGeomDecomp::simpleGeomDecomp
336 return decomposeOneProc(
points);
347 label nTotalPoints = 0;
350 nTotalPoints +=
points.size();
363 nTotalPoints += nbrPoints.size();
373 toSlave << SubField<label>
376 globalNumbers.localSize(slave),
377 globalNumbers.offset(slave)
419 return decomposeOneProc(
points, weights);
431 label nTotalPoints = 0;
435 nTotalPoints +=
points.size();
455 nTotalPoints += nbrPoints.size();
465 toSlave << SubField<label>
468 globalNumbers.localSize(slave),
469 globalNumbers.offset(slave)
486 toMaster<<
points << weights;