21 #include "phasicFlowConfig.H"
23 #ifdef pFlow_Build_MPI
24 #include "mpiCommunication.hpp"
33 #ifdef pFlow_Build_MPI
35 pFlow::MPI::DataType pFlow::MPI::realx3Type__;
36 pFlow::MPI::DataType pFlow::MPI::realx4Type__;
37 pFlow::MPI::DataType pFlow::MPI::int32x3Type__;
38 pFlow::MPI::DataType pFlow::MPI::uint32x3Type__;
45 #ifdef pFlow_Build_MPI
69 MPI_Type_contiguous(3, pFlow::MPI::Type<real>(), &pFlow::MPI::realx3Type__);
70 MPI_Type_commit(&pFlow::MPI::realx3Type__);
72 MPI_Type_contiguous(4, pFlow::MPI::Type<real>(), &pFlow::MPI::realx4Type__);
73 MPI_Type_commit(&pFlow::MPI::realx3Type__);
75 MPI_Type_contiguous(3, pFlow::MPI::Type<int32>(), &pFlow::MPI::int32x3Type__);
76 MPI_Type_commit(&pFlow::MPI::int32x3Type__);
78 MPI_Type_contiguous(3, pFlow::MPI::Type<uint32>(), &pFlow::MPI::uint32x3Type__);
79 MPI_Type_commit(&pFlow::MPI::uint32x3Type__);
91 #ifdef pFlow_Build_MPI
92 if(initProcessorsCelled_ && !isFinalized())
94 MPI::TypeFree(&pFlow::MPI::realx3Type__);
95 MPI::TypeFree(&pFlow::MPI::realx4Type__);
96 MPI::TypeFree(&pFlow::MPI::int32x3Type__);
97 MPI::TypeFree(&pFlow::MPI::uint32x3Type__);
108 #ifdef pFlow_Build_MPI
109 if(globalParallel() && !isInitialized())
112 "MPI communication is not initialized yet!"<<
endl;
126 #ifdef pFlow_Build_MPI
128 MPI_Initialized(&res);
138 #ifdef pFlow_Build_MPI
150 #ifdef pFlow_Build_MPI
152 MPI_Initialized(&flag);
155 MPI_Abort(MPI_COMM_WORLD, error);
165 bool pFlow::checkMPI(
const char* funcName,
int error,
bool forceAbort,
const char* fileName,
int lineNumebr)
168 #ifdef pFlow_Build_MPI
170 if(error == MPI_SUCCESS)
return true;
173 if(!forceAbort)
return false;