40 const List<Type>& elems,
48 os <<
' ' << elems[elemI];
59 const label fromProcNo,
61 List<taggedValue>& dest
66 taggedValue& tagVal = dest[destI];
68 tagVal.value() =
values[elemI];
69 tagVal.index() = indices[elemI];
70 tagVal.procID() = fromProcNo;
80 const List<Type>& elems,
84 pivots.
setSize(Pstream::nProcs());
90 pivots[pivotI] = elems[pivotPos];
92 pivotPos += elems.size()/Pstream::nProcs();
103 const label destProci
106 if (destProci != Pstream::myProcNo())
109 indices.setSize(bufSize);
113 Pout<<
"Sending to " << destProci <<
" elements:" <<
values
118 OPstream toSlave(Pstream::commsTypes::blocking, destProci);
119 toSlave <<
values << indices;
156 label
n = this->size();
169 getPivots(sorted, pivots);
188 ListListOps::combine<labelList>
203 getPivots(sortedPivots, pivots);
209 Pout<<
"new pivots:";
234 if ((pivotI <
Pstream::nProcs()) && (sorted[sortedI] > pivots[pivotI]))
236 checkAndSend(sendValues, sendIndices, sendI, destProci);
239 sendValues.setSize(sorted.size());
240 sendIndices.setSize(sorted.size());
249 sendValues[sendI] = sorted[sortedI];
250 sendIndices[sendI] = sorted.
indices()[sortedI];
255 ownValues[ownI] = sorted[sortedI];
256 ownIndices[ownI] = sorted.
indices()[sortedI];
265 checkAndSend(sendValues, sendIndices, sendI, destProci);
269 ownValues.setSize(ownI);
270 ownIndices.setSize(ownI);
274 Pout<<
"Not sending (to myself) elements "
275 << ownValues <<
endl;
295 Pout<<
"Copying from own:" << ownValues <<
endl;
299 copyInto(ownValues, ownIndices, proci, combinedI, combinedValues);
309 Pout<<
"Receiving from " << proci <<
endl;
314 fromSlave >> recValues >> recIndices;
318 Pout<<
"Received from " << proci
319 <<
" elements:" << recValues <<
endl;
325 Pout<<
"Copying starting at:" << combinedI <<
endl;
327 copyInto(recValues, recIndices, proci, combinedI, combinedValues);
330 combinedValues.
setSize(combinedI);
337 indices_.setSize(combinedI);
338 procs_.setSize(combinedI);
340 forAll(combinedValues, elemI)
342 this->operator[](elemI) = combinedValues[elemI].value();
343 indices_[elemI] = combinedValues[elemI].index();
344 procs_[elemI] = combinedValues[elemI].procID();