28 #ifndef __PASO_COUPLER_H__
29 #define __PASO_COUPLER_H__
53 if (s->mpi_info != r->mpi_info) {
55 "Connector: send and recv MPI communicators don't match.");
56 }
else if (s->local_length != r->local_length) {
58 "Connector: local length of send and recv SharedComponents must match.");
86 new_send_shcomp =
send;
87 new_recv_shcomp =
recv;
90 out.reset(
new Connector(new_send_shcomp, new_recv_shcomp));
126 return connector->send->numSharedComponents;
131 return connector->recv->numSharedComponents;
165 #endif // __PASO_COUPLER_H__
void copyAll(Coupler_ptr target) const
Definition: Coupler.cpp:130
#define PASO_DLL_API
Definition: Paso.h:41
boost::shared_ptr< const Coupler > const_Coupler_ptr
Definition: Coupler.h:41
bool Esys_noError(void)
Definition: error.cpp:57
void Esys_resetError(void)
Definition: error.cpp:41
void Esys_MPIInfo_free(Esys_MPIInfo *in)
Definition: Esys_MPI.cpp:60
SharedComponents_ptr recv
Definition: Coupler.h:47
boost::shared_ptr< SharedComponents > SharedComponents_ptr
Definition: SharedComponents.h:35
void startCollect(const double *in)
Definition: Coupler.cpp:65
bool in_use
Definition: Coupler.h:151
Definition: Coupler.h:109
dim_t getNumSharedComponents() const
Definition: Coupler.h:124
Struct that holds MPI communicator, rank, size and a tag counter.
Definition: Esys_MPI.h:48
dim_t getLocalLength() const
Definition: Coupler.h:144
Esys_MPIInfo * mpi_info
Definition: Coupler.h:48
void fillOverlap(dim_t n, double *x)
Definition: Coupler.cpp:145
double * send_buffer
Definition: Coupler.h:155
MPI_Request * mpi_requests
Definition: Coupler.h:157
Connector(SharedComponents_ptr s, SharedComponents_ptr r)
Definition: Coupler.h:50
Esys_MPIInfo * mpi_info
Definition: Coupler.h:159
dim_t getNumSharedValues() const
Definition: Coupler.h:134
dim_t block_size
Definition: Coupler.h:150
void Esys_setError(Esys_ErrorCodeType err, char *msg)
Definition: error.cpp:46
MPI_Status * mpi_stati
Definition: Coupler.h:158
~Coupler()
Definition: Coupler.cpp:54
int MPI_Request
Definition: Esys_MPI.h:30
double * data
Definition: Coupler.h:154
Connector_ptr copy() const
creates a copy
Definition: Coupler.h:69
dim_t getNumOverlapComponents() const
Definition: Coupler.h:129
double * recv_buffer
Definition: Coupler.h:156
Coupler(Connector_ptr, dim_t blockSize)
Definition: Coupler.cpp:30
SharedComponents_ptr send
Definition: Coupler.h:46
~Connector()
destructor
Definition: Coupler.h:66
Esys_MPIInfo * Esys_MPIInfo_getReference(Esys_MPIInfo *in)
Definition: Esys_MPI.cpp:67
int index_t
Definition: types.h:25
dim_t getNumOverlapValues() const
Definition: Coupler.h:139
Connector_ptr connector
Definition: Coupler.h:149
double * finishCollect()
Definition: Coupler.cpp:112
Definition: SharedComponents.h:40
boost::shared_ptr< Coupler > Coupler_ptr
Definition: Coupler.h:39
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:35
const double * borrowRemoteData() const
Definition: Coupler.h:122
int MPI_Status
Definition: Esys_MPI.h:31
Connector_ptr unroll(index_t block_size) const
Definition: Coupler.h:71
boost::shared_ptr< const Connector > const_Connector_ptr
Definition: Coupler.h:37
void max(dim_t n, double *x)
Definition: Coupler.cpp:161
int dim_t
Definition: types.h:24
const double * borrowLocalData() const
Definition: Coupler.h:120