44 if (Pstream::myProcNo(comm) == procIDs[0])
46 allVals.
setSize(procIDs.size());
49 for (label i=1; i<procIDs.size(); i++)
53 Pstream::commsTypes::scheduled,
60 fromSlave >> allVals[i];
67 Pstream::commsTypes::scheduled,
90 cf[fineToCoarse[i]] +=
ff[i];
100 const label fineLevelIndex,
101 const bool procAgglom
104 const labelList& fineToCoarse = restrictAddressing_[fineLevelIndex];
106 if (!procAgglom &&
ff.size() != fineToCoarse.size())
109 <<
"field does not correspond to level " << fineLevelIndex
110 <<
" sizes: field = " <<
ff.size()
111 <<
" level = " << fineToCoarse.size()
115 restrictField(cf,
ff, fineToCoarse);
117 label coarseLevelIndex = fineLevelIndex+1;
119 if (procAgglom && hasProcMesh(coarseLevelIndex))
121 label fineComm = UPstream::parent(procCommunicator_[coarseLevelIndex]);
123 const List<label>& procIDs = agglomProcIDs(coarseLevelIndex);
124 const labelList& offsets = cellOffsets(coarseLevelIndex);
133 Pstream::commsTypes::nonBlocking
144 const label fineLevelIndex
147 const labelList& fineToCoarse = faceRestrictAddressing_[fineLevelIndex];
149 if (
ff.size() != fineToCoarse.size())
152 <<
"field does not correspond to level " << fineLevelIndex
153 <<
" sizes: field = " <<
ff.size()
154 <<
" level = " << fineToCoarse.size()
160 forAll(fineToCoarse, ffacei)
162 label cFace = fineToCoarse[ffacei];
166 cf[cFace] +=
ff[ffacei];
177 const label levelIndex,
178 const bool procAgglom
181 const labelList& fineToCoarse = restrictAddressing_[levelIndex];
183 label coarseLevelIndex = levelIndex+1;
185 if (procAgglom && hasProcMesh(coarseLevelIndex))
187 label coarseComm = UPstream::parent
189 procCommunicator_[coarseLevelIndex]
192 const List<label>& procIDs = agglomProcIDs(coarseLevelIndex);
193 const labelList& offsets = cellOffsets(coarseLevelIndex);
195 label localSize = nCells_[levelIndex];
206 Pstream::commsTypes::nonBlocking
211 ff[i] = allCf[fineToCoarse[i]];
218 ff[i] = cf[fineToCoarse[i]];