Go to the documentation of this file.
28 #ifndef __PASO_COUPLER_H__
29 #define __PASO_COUPLER_H__
41 template<
typename Scalar>
struct Coupler;
42 template<
typename T>
using Coupler_ptr = boost::shared_ptr<Coupler<T> >;
43 template<
typename T>
using const_Coupler_ptr = boost::shared_ptr<const Coupler<T> >;
53 if (s->local_length != r->local_length) {
55 "SharedComponents must match.");
77 new_send_shcomp =
send;
78 new_recv_shcomp =
recv;
80 out.reset(
new Connector(new_send_shcomp, new_recv_shcomp));
98 template<
typename Scalar>
106 void copyAll(Coupler_ptr<Scalar> target)
const;
116 return connector->send->numSharedComponents;
155 #endif // __PASO_COUPLER_H__
void gradient_order3(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:94
int MPI_Status
Definition: EsysMPI.h:43
dim_t block_size
Definition: Coupler.h:151
SharedComponents_ptr recv
Definition: Coupler.h:60
void reduction_order2(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:35
void integral_order2(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:35
void gradient_order2(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:35
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:73
boost::shared_ptr< const Coupler< T > > const_Coupler_ptr
Definition: Coupler.h:54
const Scalar * borrowLocalData() const
Definition: Coupler.h:121
void reduction_order10(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:244
dim_t getNumSharedValues() const
Definition: Coupler.h:135
void gradient_order6(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:278
const Scalar * borrowRemoteData() const
Definition: Coupler.h:123
void copyAll(Coupler_ptr< Scalar > target) const
Definition: Coupler.cpp:141
void requireWrite()
Ensures data is ready for write access. This means that the data will be resolved if lazy and will be...
Definition: Data.cpp:1242
boost::shared_ptr< const Connector > const_Connector_ptr
Definition: Coupler.h:50
#define INDEX4(_X1_, _X2_, _X3_, _X4_, _N1_, _N2_, _N3_)
Definition: index.h:25
void gradient_order10(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:540
dim_t getNumOverlapValues() const
Definition: Coupler.h:140
void reduction_order4(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:88
void gradient_order7(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:342
const DataTypes::real_t * getSampleDataRO(DataTypes::RealVectorType::size_type sampleNo, DataTypes::real_t dummy=0) const
Return the sample data for the given sample no. Please do not use this unless you NEED to access samp...
Definition: Data.h:1975
void integral_order6(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:152
void integral_order5(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:123
void gradient_order4(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:153
void integral_order3(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:65
const_Connector_ptr connector
Definition: Coupler.h:150
void reduction_order3(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:62
Scalar * send_buffer
Definition: Coupler.h:156
Definition: SharedComponents.h:51
Connector_ptr copy() const
creates a copy
Definition: Coupler.h:73
#define INDEX5(_X1_, _X2_, _X3_, _X4_, _X5_, _N1_, _N2_, _N3_, _N4_)
Definition: index.h:27
int getDataPointSize() const
Return the size of the data point. It is the product of the data point shape dimensions.
Definition: Data.cpp:1363
void integral_order4(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:94
escript::JMPI mpi_info
Definition: Coupler.h:160
void integral_order7(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:181
Definition: AbstractAssembler.cpp:17
void startCollect(const Scalar *in)
Definition: Coupler.cpp:76
MPI_Status * mpi_stati
Definition: Coupler.h:159
Data represents a collection of datapoints.
Definition: Data.h:62
Coupler(const_Connector_ptr, dim_t blockSize, escript::JMPI mpiInfo)
Definition: Coupler.cpp:40
#define INDEX3(_X1_, _X2_, _X3_, _N1_, _N2_)
Definition: index.h:23
index_t dim_t
Definition: DataTypes.h:87
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:70
DataTypes::real_t * getSampleDataRW(DataTypes::RealVectorType::size_type sampleNo, DataTypes::real_t dummy=0)
Return the sample data for the given sample no. Please do not use this unless you NEED to access samp...
Definition: Data.h:1940
boost::shared_ptr< Coupler< T > > Coupler_ptr
Definition: Coupler.h:53
void gradient_order8(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:407
void reduction_order7(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:166
void max(dim_t n, Scalar *x)
Scalar * finishCollect()
Definition: Coupler.cpp:124
dim_t getNumSharedComponents() const
Definition: Coupler.h:125
void integral_order8(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:210
MPI_Request * mpi_requests
Definition: Coupler.h:158
~Coupler()
Definition: Coupler.cpp:65
boost::shared_ptr< SharedComponents > SharedComponents_ptr
Definition: SharedComponents.h:46
bool in_use
Definition: Coupler.h:152
void integral_order9(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:239
Connector_ptr unroll(index_t block_size) const
Definition: Coupler.h:75
double m_dx[3]
grid spacings / cell sizes of domain
Definition: speckley/src/Brick.h:380
#define MPI_DOUBLE
Definition: EsysMPI.h:45
dim_t getNumOverlapComponents() const
Definition: Coupler.h:130
void gradient_order9(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:473
PasoException exception class.
Definition: PasoException.h:43
Scalar * recv_buffer
Definition: Coupler.h:157
void integral_order10(std::vector< Scalar > &, const escript::Data &) const
Definition: BrickIntegrals.cpp:268
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:82
dim_t m_NE[3]
number of elements for this rank in each dimension including shared
Definition: speckley/src/Brick.h:386
void gradient_order5(escript::Data &, const escript::Data &) const
Definition: BrickGradients.cpp:215
Scalar * data
Definition: Coupler.h:155
#define PASO_DLL_API
Definition: Paso.h:58
void reduction_order5(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:114
void fillOverlap(dim_t n, Scalar *x)
Definition: Coupler.cpp:159
SharedComponents_ptr send
Definition: Coupler.h:59
void reduction_order6(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:140
int MPI_Request
Definition: EsysMPI.h:41
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:48
bool actsExpanded() const
Return true if this Data is expanded or resolves to expanded. That is, if it has a separate value for...
Definition: Data.cpp:1121
Definition: BiCGStab.cpp:25
std::complex< real_t > cplx_t
complex data type
Definition: DataTypes.h:76
Data Scalar(double value, const FunctionSpace &what, bool expanded)
A collection of factory functions for creating Data objects which contain data points of various shap...
Definition: DataFactory.cpp:60
Connector(SharedComponents_ptr s, SharedComponents_ptr r)
Definition: Coupler.h:62
void reduction_order9(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:218
dim_t getLocalLength() const
Definition: Coupler.h:145
void reduction_order8(const escript::Data &, escript::Data &) const
Definition: BrickReductions.cpp:192