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.");
62 mpi_info = s->mpi_info;
77 send->numNeighbors, send->neighbor,
78 send->shared, send->offsetInShared,
79 block_size, 0, mpi_info));
82 recv->numNeighbors, recv->neighbor,
83 recv->shared, recv->offsetInShared,
84 block_size, 0, mpi_info));
86 new_send_shcomp =
send;
87 new_recv_shcomp =
recv;
90 out.reset(
new Connector(new_send_shcomp, new_recv_shcomp));
114 void startCollect(
const double* in);
115 double* finishCollect();
116 void copyAll(Coupler_ptr target)
const;
117 void fillOverlap(
dim_t n,
double* x);
118 void max(
dim_t n,
double* x);
126 return connector->send->numSharedComponents;
131 return connector->recv->numSharedComponents;
136 return getNumSharedComponents() * block_size;
141 return getNumOverlapComponents() * block_size;
146 return connector->send->local_length;
165 #endif // __PASO_COUPLER_H__ #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:49
void Esys_resetError(void)
Definition: error.cpp:33
SharedComponents_ptr recv
Definition: Coupler.h:47
boost::shared_ptr< SharedComponents > SharedComponents_ptr
Definition: SharedComponents.h:35
bool in_use
Definition: Coupler.h:151
Definition: Coupler.h:109
dim_t getNumSharedComponents() const
Definition: Coupler.h:124
dim_t getLocalLength() const
Definition: Coupler.h:144
void Esys_setError(Esys_ErrorCodeType err, __const char *msg)
Definition: error.cpp:38
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
dim_t getNumSharedValues() const
Definition: Coupler.h:134
dim_t block_size
Definition: Coupler.h:150
MPI_Status * mpi_stati
Definition: Coupler.h:158
int MPI_Request
Definition: Esys_MPI.h:39
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
esysUtils::JMPI mpi_info
Definition: Coupler.h:48
double * recv_buffer
Definition: Coupler.h:156
SharedComponents_ptr send
Definition: Coupler.h:46
~Connector()
destructor
Definition: Coupler.h:66
int index_t
Definition: types.h:24
dim_t getNumOverlapValues() const
Definition: Coupler.h:139
Definition: SharedComponents.h:40
boost::shared_ptr< Coupler > Coupler_ptr
Definition: Coupler.h:39
esysUtils::JMPI mpi_info
Definition: Coupler.h:159
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:35
const double * borrowRemoteData() const
Definition: Coupler.h:122
index_t dim_t
Definition: types.h:27
int MPI_Status
Definition: Esys_MPI.h:41
Connector_ptr unroll(index_t block_size) const
Definition: Coupler.h:71
boost::shared_ptr< const Connector > const_Connector_ptr
Definition: Coupler.h:37
const_Connector_ptr connector
Definition: Coupler.h:149
boost::shared_ptr< JMPI_ > JMPI
Definition: Esys_MPI.h:79
const double * borrowLocalData() const
Definition: Coupler.h:120