|  | 
| static unsigned int | rank (MPI_Comm comm) | 
|  | Return process rank for the communicator. 
 | 
|  | 
| static unsigned int | size (MPI_Comm comm) | 
|  | 
| static bool | is_broadcaster (MPI_Comm comm) | 
|  | 
| static bool | is_receiver (MPI_Comm comm) | 
|  | 
| static void | barrier (MPI_Comm comm) | 
|  | Set a barrier (synchronization point) 
 | 
|  | 
| template<typename T > | 
| static void | all_to_all (MPI_Comm comm, std::vector< std::vector< T >> &in_values, std::vector< std::vector< T >> &out_values) | 
|  | 
| template<typename T > | 
| static void | all_to_all (MPI_Comm comm, std::vector< std::vector< T >> &in_values, std::vector< T > &out_values) | 
|  | 
| template<typename T > | 
| static void | broadcast (MPI_Comm comm, std::vector< T > &value, unsigned int broadcaster=0) | 
|  | Broadcast vector of value from broadcaster to all processes. 
 | 
|  | 
| template<typename T > | 
| static void | broadcast (MPI_Comm comm, T &value, unsigned int broadcaster=0) | 
|  | Broadcast single primitive from broadcaster to all processes. 
 | 
|  | 
| template<typename T > | 
| static void | scatter (MPI_Comm comm, const std::vector< std::vector< T >> &in_values, std::vector< T > &out_value, unsigned int sending_process=0) | 
|  | Scatter vector in_values[i] to process i. 
 | 
|  | 
| template<typename T > | 
| static void | scatter (MPI_Comm comm, const std::vector< T > &in_values, T &out_value, unsigned int sending_process=0) | 
|  | Scatter primitive in_values[i] to process i. 
 | 
|  | 
| template<typename T > | 
| static void | gather (MPI_Comm comm, const std::vector< T > &in_values, std::vector< T > &out_values, unsigned int receiving_process=0) | 
|  | Gather values on one process. 
 | 
|  | 
| static void | gather (MPI_Comm comm, const std::string &in_values, std::vector< std::string > &out_values, unsigned int receiving_process=0) | 
|  | Gather strings on one process. 
 | 
|  | 
| template<typename T > | 
| static void | all_gather (MPI_Comm comm, const std::vector< T > &in_values, std::vector< T > &out_values) | 
|  | 
| template<typename T > | 
| static void | all_gather (MPI_Comm comm, const std::vector< T > &in_values, std::vector< std::vector< T >> &out_values) | 
|  | Gather values from each process (variable count per process) 
 | 
|  | 
| template<typename T > | 
| static void | all_gather (MPI_Comm comm, const T in_value, std::vector< T > &out_values) | 
|  | Gather values, one primitive from each process (MPI_Allgather) 
 | 
|  | 
| static void | all_gather (MPI_Comm comm, const std::string &in_values, std::vector< std::string > &out_values) | 
|  | 
| template<typename T > | 
| static T | max (MPI_Comm comm, const T &value) | 
|  | Return global max value. 
 | 
|  | 
| template<typename T > | 
| static T | min (MPI_Comm comm, const T &value) | 
|  | Return global min value. 
 | 
|  | 
| template<typename T > | 
| static T | sum (MPI_Comm comm, const T &value) | 
|  | Sum values and return sum. 
 | 
|  | 
| template<typename T > | 
| static T | avg (MPI_Comm comm, const T &value) | 
|  | Return average across comm; implemented only for T == Table. 
 | 
|  | 
| template<typename T , typename X > | 
| static T | all_reduce (MPI_Comm comm, const T &value, X op) | 
|  | All reduce. 
 | 
|  | 
| static std::size_t | global_offset (MPI_Comm comm, std::size_t range, bool exclusive) | 
|  | 
| template<typename T > | 
| static void | send_recv (MPI_Comm comm, const std::vector< T > &send_value, unsigned int dest, int send_tag, std::vector< T > &recv_value, unsigned int source, int recv_tag) | 
|  | Send-receive data between processes (blocking) 
 | 
|  | 
| template<typename T > | 
| static void | send_recv (MPI_Comm comm, const std::vector< T > &send_value, unsigned int dest, std::vector< T > &recv_value, unsigned int source) | 
|  | Send-receive data between processes. 
 | 
|  | 
| static std::pair< std::int64_t, std::int64_t > | local_range (MPI_Comm comm, std::int64_t N) | 
|  | 
| static std::pair< std::int64_t, std::int64_t > | local_range (MPI_Comm comm, int process, std::int64_t N) | 
|  | 
| static std::pair< std::int64_t, std::int64_t > | compute_local_range (int process, std::int64_t N, int size) | 
|  | 
| static unsigned int | index_owner (MPI_Comm comm, std::size_t index, std::size_t N) | 
|  | Return which process owns index (inverse of local_range) 
 | 
|  | 
| static MPI_Op | MPI_AVG () | 
|  | 
This class provides utility functions for easy communication with MPI and handles cases when DOLFIN is not configured with MPI.