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.

117 {
118 #ifdef MERCURYDPM_USE_MPI
119  //Check if MPI is already initialised
120  int Mpi_init_flag = 0;
121  MPI_Initialized(&Mpi_init_flag);
122  if(!Mpi_init_flag)
123  {
124  MPI_Init(NULL,NULL);
125  MPIContainer& communicator = MPIContainer::Instance();
126  if (PROCESSOR_ID == 0)
127  {
128  std::cout << "MPI has been initialised" << std::endl;
129  }
130 
131  //MPI should be finalised at the end of any program.
132  std::atexit([]()
133  {
134  MPIContainer& communicator = MPIContainer::Instance();
135  communicator.deleteMercuryMPITypes();
136  MPI_Finalize();
137  if (PROCESSOR_ID == 0)
138  {
139  std::cout << "MPI has been finalised" << std::endl;
140  }
141  });
142  }
143 #endif
144 }
#define PROCESSOR_ID
Definition: GeneralDefine.h:42
This class contains all information and functions required for communication between processors.
Definition: MpiContainer.h:109
void deleteMercuryMPITypes()
Deletes the MercuryMPITypes.
Definition: MpiContainer.h:557
static MPIContainer & Instance()
fetch the instance to be used for communication
Definition: MpiContainer.h:113

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

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