87 void Foam::simpleGeomDecomp::assignToProcessorGroup
90 const label nProcGroup
93 label jump = processorGroup.size()/nProcGroup;
94 label jumpb = jump + 1;
95 label fstProcessorGroup = processorGroup.size() - jump*nProcGroup;
102 for (j=0; j<fstProcessorGroup; j++)
104 for (label
k=0;
k<jumpb;
k++)
106 processorGroup[ind++] = j;
111 for (; j<nProcGroup; j++)
113 for (label
k=0;
k<jump;
k++)
115 processorGroup[ind++] = j;
121 void Foam::simpleGeomDecomp::assignToProcessorGroup
124 const label nProcGroup,
127 const scalar summedWeights
140 const scalar jump = summedWeights/nProcGroup;
141 const label nProcGroupM1 = nProcGroup - 1;
142 scalar sumWeights = 0;
147 for (j=0; j<nProcGroupM1; j++)
149 const scalar
limit = jump*scalar(j + 1);
150 while (sumWeights <
limit)
152 sumWeights += weights[indices[ind]];
153 processorGroup[ind++] = j;
157 while (ind < processorGroup.size())
159 processorGroup[ind++] = nProcGroupM1;
178 vectorLessOp sorter(rotatedPoints);
189 assignToProcessorGroup(processorGroups, n_.x());
193 finalDecomp[pointIndices[i]] = processorGroups[i];
203 assignToProcessorGroup(processorGroups, n_.y());
207 finalDecomp[pointIndices[i]] += n_.x()*processorGroups[i];
217 assignToProcessorGroup(processorGroups, n_.z());
221 finalDecomp[pointIndices[i]] += n_.x()*n_.y()*processorGroups[i];
243 vectorLessOp sorter(rotatedPoints);
254 const scalar summedWeights =
sum(weights);
255 assignToProcessorGroup
266 finalDecomp[pointIndices[i]] = processorGroups[i];
276 assignToProcessorGroup
287 finalDecomp[pointIndices[i]] += n_.x()*processorGroups[i];
297 assignToProcessorGroup
308 finalDecomp[pointIndices[i]] += n_.x()*n_.y()*processorGroups[i];
336 return decomposeOneProc(
points);
347 label nTotalPoints = 0;
350 nTotalPoints +=
points.size();
363 nTotalPoints += nbrPoints.size();
373 toProc << SubField<label>
376 globalNumbers.localSize(subproci),
377 globalNumbers.offset(subproci)
419 return decomposeOneProc(
points, weights);
431 label nTotalPoints = 0;
435 nTotalPoints +=
points.size();
455 nTotalPoints += nbrPoints.size();
465 toProc << SubField<label>
468 globalNumbers.localSize(subproci),
469 globalNumbers.offset(subproci)
486 toMaster<<
points << weights;