ESyS-Particle
4.0.1
Main Page
Related Pages
Namespaces
Classes
Files
File List
Parallel
mpivbuf.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 __MPIVBUF_H
14
#define __MPIVBUF_H
15
16
#include <mpi.h>
17
#include <string>
18
#include "Parallel/mpibuf.h"
19
34
class
CVarMPIBuffer
:
public
AMPIBufferPP
35
{
36
private
:
37
char
* m_buffer;
38
int
m_buffersize;
39
int
m_position;
40
int
m_int_increment,m_dbl_increment;
41
bool
m_lock;
42
MPI_Request m_req[2];
43
MPI_Status m_stat[2];
44
45
protected
:
46
void
grow
();
47
void
growTo
(
int
);
48
49
public
:
50
CVarMPIBuffer
(MPI_Comm,
int
size=16);
51
virtual
~
CVarMPIBuffer
();
52
53
virtual
void
clear(){m_position=0;};
54
virtual
void
sendTo
(
int
,
int
);
55
virtual
void
NBsendTo
(
int
,
int
);
56
virtual
void
initSendTo
(
int
,
int
);
57
virtual
void
wait
();
58
virtual
void
receiveFrom
(
int
src=MPI_ANY_SOURCE,
int
tag=MPI_ANY_TAG);
59
virtual
void
append
(
int
);
60
virtual
void
append
(
double
);
61
virtual
void
append
(
const
char
*);
62
virtual
void
append
(
const
Vec3
&V) {
AMPIBufferPP::append
(V); } ;
63
virtual
int
pop_int
();
64
virtual
double
pop_double
();
65
virtual
void
pop_doubles
(
double
*,
int
);
66
virtual
std::string
pop_string
();
67
virtual
void
broadcast
(
int
);
68
virtual
void
receiveBroadcast
(
int
);
69
};
70
#endif //__MPIVBUF_H
Generated on Wed Jun 6 2012 00:04:55 for ESyS-Particle by
1.8.1