ESyS-Particle  4.0.1
mpia2abuf.h
1 
2 // //
3 // Copyright (c) 2003-2011 by The University of Queensland //
4 // Earth Systems Science Computational Centre (ESSCC) //
5 // http://www.uq.edu.au/esscc //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.opensource.org/licenses/osl-3.0.php //
10 // //
12 
13 #ifndef __MPIA2ABUFFER_H
14 #define __MPIA2ABUFFER_H
15 
16 #include <mpi.h>
17 
27 {
28  private:
29  MPI_Comm m_comm;
30  int m_rank;
31  int m_size;
32  int m_int_increment,m_dbl_increment;
33  MPI_Status m_status;
34  char* m_buffer_s;
35  char* m_buffer_r;
36  int m_buffersize;
37  int *m_position_s;
38  int *m_position_r;
39 
40  public:
41  CMPIA2ABuffer(MPI_Comm,int);
42  virtual ~CMPIA2ABuffer();
43 
44  virtual void clear();
45  virtual void all2all();
46  virtual void append(int,int);
47  virtual void append(double,int);
48  virtual int pop_int(int);
49  virtual double pop_double(int);
50 };
51 
52 #endif //__MPIA2ABUFFER_H