14 #ifndef _PROCESS_ADM_H
15 #define _PROCESS_ADM_H
19 #elif defined(HAVE_MPI)
38 #if defined(HAS_PETSC) || defined(HAVE_MPI)
49 #if defined(HAS_PETSC) || defined(HAVE_MPI)
75 void broadcast(std::vector<double>& vec,
int root)
const;
80 void broadcast(std::vector<int>& vec,
int root)
const;
82 #if defined(HAS_PETSC) || defined(HAVE_MPI)
84 MPI_Comm* getCommunicator() {
return &comm; }
86 const MPI_Comm* getCommunicator()
const {
return &comm; }
90 void setCommunicator(
const MPI_Comm* comm2);
98 void send(
int value,
int dest)
const;
102 void send(std::vector<int>& ivec,
int dest)
const;
106 void send(
double value,
int dest)
const;
110 void send(std::vector<double>& rvec,
int dest)
const;
115 void receive(
int& value,
int source)
const;
119 void receive(std::vector<int>& ivec,
int source)
const;
123 void receive(
double& value,
int source)
const;
127 void receive(std::vector<double>& rvec,
int source)
const;
132 int allReduce(
int value, MPI_Op oper)
const;
136 void allReduce(std::vector<int>& vec, MPI_Op oper)
const;
141 double allReduce(
double value, MPI_Op oper)
const;
145 void allReduce(std::vector<double>& vec, MPI_Op oper)
const;
153 this->allReduce(vec,MPI_SUM);
Domain decomposition related partitioning for FE models.
Class containing domain decomposition related partitioning.
Definition: DomainDecomposition.h:38
Class for administration of MPI processes in IFEM library.
Definition: ProcessAdm.h:33
~ProcessAdm()
The destructor releases the process administrator.
Definition: ProcessAdm.C:85
int isParallel() const
Return if parallel.
Definition: ProcessAdm.h:70
void allReduceAsSum(std::vector< T > &vec) const
AllReduce with MPI_SUM for a vector.
Definition: ProcessAdm.h:149
ProcessAdm()
Construct an empty (serial) process administrator.
Definition: ProcessAdm.C:19
int nProc
Number of processes in communicator.
Definition: ProcessAdm.h:35
utl::LogStream cout
Combined standard out for this process group.
Definition: ProcessAdm.h:43
bool parallel
If Processor is parallel.
Definition: ProcessAdm.h:36
void broadcast(std::vector< double > &vec, int root) const
Broadcast for a double vector.
Definition: ProcessAdm.C:56
int getNoProcs() const
Return rank.
Definition: ProcessAdm.h:68
int getProcId() const
Return process id.
Definition: ProcessAdm.h:66
int myPid
Process id.
Definition: ProcessAdm.h:34
DomainDecomposition dd
Decomain decomposition.
Definition: ProcessAdm.h:45
Logging stream class.
Definition: LogStream.h:26