
Go to the source code of this file.
Namespaces | |
| namespace | Foam |
| Namespace for OpenFOAM. | |
| namespace | Foam::PstreamDetail |
| Implementation details for UPstream/Pstream/MPI etc. | |
Functions | |
| template<class IntType> | |
| void | reduce_offsetRange (Foam::OffsetRange< IntType > &range, const int communicator) |
| template<class IntType, std::size_t... Is, class... OffsetRanges> | |
| void | reduce_offsetRanges (const int communicator, std::index_sequence< Is... >, OffsetRanges &... items) |
| template<class IntType> | |
| void | reduceOffset (Foam::OffsetRange< IntType > &range, const int communicator=UPstream::worldComm) |
| Parallel reduction of OffsetRange (eg, GlobalOffset) on its size value to yield the globally-consistent offset and the total size across all ranks. | |
| template<class OffsetRangeT, class... Rest, class = std::enable_if_t < ( std::is_integral_v<typename OffsetRangeT::value_type> && std::is_base_of_v <Foam::OffsetRange<typename OffsetRangeT::value_type>, OffsetRangeT> && (std::is_base_of_v <Foam::OffsetRange<typename OffsetRangeT::value_type>, Rest> && ...) )>> | |
| void | reduceOffsets (const int communicator, OffsetRangeT &first, Rest &... rest) |
| Parallel reduction of multiple OffsetRange (eg, GlobalOffset) items. | |
| template<class OffsetRangeT, class = std::enable_if_t < ( std::is_integral_v<typename OffsetRangeT::value_type> && std::is_base_of_v <Foam::OffsetRange<typename OffsetRangeT::value_type>, OffsetRangeT> )>> | |
| void | reduceOffsets (const int communicator, Foam::UList< OffsetRangeT > &ranges) |
| Parallel reduction of multiple OffsetRange (eg, GlobalOffset) items. | |
Original source file UPstreamReduceOffsets.H
The reduceOffsets() version uses exactly the same process, except with a work array to bundle/unbundle values and use the same two MPI calls.
Definition in file UPstreamReduceOffsets.H.