MpiContainer.cc File Reference
#include "MpiContainer.h"
#include "Logger.h"
#include "SpeciesHandler.h"
#include "GeneralDefine.h"

Functions

void initialiseMPI ()
 Inialises the MPI library. More...
 

Function Documentation

◆ initialiseMPI()

void initialiseMPI ( )

Inialises the MPI library.

138 {
139 #ifdef MERCURYDPM_USE_MPI
140  //Check if MPI is already initialised
141  int Mpi_init_flag = 0;
142  MPI_Initialized(&Mpi_init_flag);
143  if(!Mpi_init_flag)
144  {
145  MPI_Init(NULL,NULL);
146  MPIContainer& communicator = MPIContainer::Instance();
147  if (PROCESSOR_ID == 0)
148  {
149  std::cout << "MPI has been initialised" << std::endl;
150  }
151 
152  //MPI should be finalised at the end of any program.
153  std::atexit([]()
154  {
155  MPIContainer& communicator = MPIContainer::Instance();
156  communicator.deleteMercuryMPITypes();
157  MPI_Finalize();
158  if (PROCESSOR_ID == 0)
159  {
160  std::cout << "MPI has been finalised" << std::endl;
161  }
162  });
163  }
164 #endif
165 }
#define PROCESSOR_ID
Definition: GeneralDefine.h:63
This class contains all information and functions required for communication between processors.
Definition: MpiContainer.h:130
void deleteMercuryMPITypes()
Deletes the MercuryMPITypes.
Definition: MpiContainer.h:578
static MPIContainer & Instance()
fetch the instance to be used for communication
Definition: MpiContainer.h:134

References MPIContainer::deleteMercuryMPITypes(), MPIContainer::Instance(), and PROCESSOR_ID.

Referenced by DPMBase::constructor(), printError(), printFatalError(), printInfo(), and printWarn().