39 const List<Type>& elems,
47 os <<
' ' << elems[elemI];
58 const label fromProcNo,
60 List<taggedValue>& dest
65 taggedValue& tagVal = dest[destI];
67 tagVal.value() =
values[elemI];
68 tagVal.index() = indices[elemI];
69 tagVal.procID() = fromProcNo;
79 const List<Type>& elems,
83 pivots.
setSize(Pstream::nProcs());
89 pivots[pivotI] = elems[pivotPos];
91 pivotPos += elems.size()/Pstream::nProcs();
102 const label destProci
105 if (destProci != Pstream::myProcNo())
108 indices.setSize(bufSize);
112 Pout<<
"Sending to " << destProci <<
" elements:" <<
values
117 OPstream toSlave(Pstream::commsTypes::blocking, destProci);
118 toSlave <<
values << indices;
168 getPivots(sorted, pivots);
187 ListListOps::combine<labelList>
202 getPivots(sortedPivots, pivots);
208 Pout<<
"new pivots:";
233 if ((pivotI <
Pstream::nProcs()) && (sorted[sortedI] > pivots[pivotI]))
235 checkAndSend(sendValues, sendIndices, sendI, destProci);
238 sendValues.setSize(sorted.size());
239 sendIndices.setSize(sorted.size());
248 sendValues[sendI] = sorted[sortedI];
249 sendIndices[sendI] = sorted.
indices()[sortedI];
254 ownValues[ownI] = sorted[sortedI];
255 ownIndices[ownI] = sorted.
indices()[sortedI];
264 checkAndSend(sendValues, sendIndices, sendI, destProci);
268 ownValues.setSize(ownI);
269 ownIndices.setSize(ownI);
273 Pout<<
"Not sending (to myself) elements "
274 << ownValues <<
endl;
294 Pout<<
"Copying from own:" << ownValues <<
endl;
298 copyInto(ownValues, ownIndices, proci, combinedI, combinedValues);
308 Pout<<
"Receiving from " << proci <<
endl;
313 fromSlave >> recValues >> recIndices;
317 Pout<<
"Received from " << proci
318 <<
" elements:" << recValues <<
endl;
324 Pout<<
"Copying starting at:" << combinedI <<
endl;
326 copyInto(recValues, recIndices, proci, combinedI, combinedValues);
329 combinedValues.
setSize(combinedI);
336 indices_.setSize(combinedI);
337 procs_.setSize(combinedI);
339 forAll(combinedValues, elemI)
341 this->operator[](elemI) = combinedValues[elemI].value();
342 indices_[elemI] = combinedValues[elemI].index();
343 procs_[elemI] = combinedValues[elemI].procID();