Foam::Field<T> Foam::channelIndex::regionSum(const Field<T>& cellField) const { Field<T> regionField(cellRegion_().nRegions(), Zero); forAll(cellRegion_(), celli) { regionField[cellRegion_()[celli]] += cellField[celli]; } // Global sum Pstream::listCombineGather(regionField, plusEqOp<T>()); Pstream::listCombineScatter(regionField); return regionField; }
Foam::Field<T> Foam::meshIndex::regionSum(const Field<T>& cellField) const { Field<T> regionField(cellRegion_().nRegions(), pTraits<T>::zero); forAll(cellRegion_(), cellI) { regionField[cellRegion_()[cellI]] += cellField[cellI]; } // Global sum Pstream::listCombineGather(regionField, plusEqOp<T>()); Pstream::listCombineScatter(regionField); return regionField; }