walberla::communication::UniformMPIDatatypeInfo Class Referenceabstract

Detailed Description

Interface for direction MPI datatype based communication using blockforest::UniformDirectScheme.

For direct bufferless MPI communication the MPI data type concept has to be used. With this interface a MPI data type can be associated with block data, such that this block data can be communicated using e.g. the blockforest::communication::UniformDirectScheme. In addition to providing the MPI data types for sending and receiving in each direction, a pointer to the data has to be provided.

#include <UniformMPIDatatypeInfo.h>

+ Inheritance diagram for walberla::communication::UniformMPIDatatypeInfo:

Public Member Functions

Construction & Destruction
 UniformMPIDatatypeInfo ()=default
 
virtual ~UniformMPIDatatypeInfo ()=default
 
virtual shared_ptr< mpi::DatatypegetSendDatatype (IBlock *block, const stencil::Direction dir)=0
 Return the MPI data type that should be used for sending to neighbor in specified direction. More...
 
virtual shared_ptr< mpi::DatatypegetRecvDatatype (IBlock *block, const stencil::Direction dir)=0
 Return the MPI data type that should be used for receiving from neighbor in specified direction. More...
 
virtual void * getSendPointer (IBlock *block, const stencil::Direction dir)=0
 Return pointer to data that should be send to neighbor in specified direction. More...
 
virtual void * getRecvPointer (IBlock *block, const stencil::Direction dir)=0
 Return pointer to memory where received data is written to. More...
 
virtual int getNumberOfItemsToCommunicate (IBlock *, const stencil::Direction)
 Return how many data items of the datatype should be communicated per block and direction Due to custom aggregated MPI datatypes this is usually 1. More...
 

Constructor & Destructor Documentation

◆ UniformMPIDatatypeInfo()

walberla::communication::UniformMPIDatatypeInfo::UniformMPIDatatypeInfo ( )
default

◆ ~UniformMPIDatatypeInfo()

virtual walberla::communication::UniformMPIDatatypeInfo::~UniformMPIDatatypeInfo ( )
virtualdefault

Member Function Documentation

◆ getNumberOfItemsToCommunicate()

virtual int walberla::communication::UniformMPIDatatypeInfo::getNumberOfItemsToCommunicate ( IBlock ,
const stencil::Direction   
)
inlinevirtual

Return how many data items of the datatype should be communicated per block and direction Due to custom aggregated MPI datatypes this is usually 1.

◆ getRecvDatatype()

virtual shared_ptr<mpi::Datatype> walberla::communication::UniformMPIDatatypeInfo::getRecvDatatype ( IBlock block,
const stencil::Direction  dir 
)
pure virtual

Return the MPI data type that should be used for receiving from neighbor in specified direction.

Implemented in walberla::field::communication::StencilRestrictedMPIDatatypeInfo< GhostLayerField_T, Stencil_T >, and walberla::field::communication::UniformMPIDatatypeInfo< GhostLayerField_T >.

◆ getRecvPointer()

virtual void* walberla::communication::UniformMPIDatatypeInfo::getRecvPointer ( IBlock block,
const stencil::Direction  dir 
)
pure virtual

◆ getSendDatatype()

virtual shared_ptr<mpi::Datatype> walberla::communication::UniformMPIDatatypeInfo::getSendDatatype ( IBlock block,
const stencil::Direction  dir 
)
pure virtual

Return the MPI data type that should be used for sending to neighbor in specified direction.

Implemented in walberla::field::communication::StencilRestrictedMPIDatatypeInfo< GhostLayerField_T, Stencil_T >, and walberla::field::communication::UniformMPIDatatypeInfo< GhostLayerField_T >.

◆ getSendPointer()

virtual void* walberla::communication::UniformMPIDatatypeInfo::getSendPointer ( IBlock block,
const stencil::Direction  dir 
)
pure virtual

The documentation for this class was generated from the following file: