Dune Core Modules (2.4.1)

A buffered communicator where the amount of data sent does not have to be known a priori. More...

#include <dune/common/parallel/variablesizecommunicator.hh>

Public Types

typedef std::map< int, std::pair< InterfaceInformation, InterfaceInformation >, std::less< int >, typename Allocator::template rebind< std::pair< const int, std::pair< InterfaceInformation, InterfaceInformation > > >::other > InterfaceMap
 The type of the map form process number to InterfaceInformation for sending and receiving to and from it.
 

Public Member Functions

 VariableSizeCommunicator (MPI_Comm comm, const InterfaceMap &inf)
 Creates a communicator with the default maximum buffer size. More...
 
 VariableSizeCommunicator (const Interface &inf)
 Creates a communicator with the default maximum buffer size. More...
 
 VariableSizeCommunicator (MPI_Comm comm, const InterfaceMap &inf, std::size_t max_buffer_size)
 Creates a communicator with a specific maximum buffer size. More...
 
 VariableSizeCommunicator (const Interface &inf, std::size_t max_buffer_size)
 Creates a communicator with a specific maximum buffer size. More...
 
template<class DataHandle >
void forward (DataHandle &handle)
 Communicate forward. More...
 
template<class DataHandle >
void backward (DataHandle &handle)
 Communicate backwards. More...
 

Detailed Description

template<class Allocator = std::allocator<std::pair<InterfaceInformation,InterfaceInformation> >>
class Dune::VariableSizeCommunicator< Allocator >

A buffered communicator where the amount of data sent does not have to be known a priori.

In contrast to BufferedCommunicator the amount of data is determined by the container whose entries are sent and not known at the receiving side a priori.

Constructor & Destructor Documentation

◆ VariableSizeCommunicator() [1/4]

template<class Allocator = std::allocator<std::pair<InterfaceInformation,InterfaceInformation> >>
Dune::VariableSizeCommunicator< Allocator >::VariableSizeCommunicator ( MPI_Comm  comm,
const InterfaceMap inf 
)
inline

Creates a communicator with the default maximum buffer size.

The default size ist either what the macro DUNE_MAX_COMMUNICATION_BUFFER_SIZE is set to or 32768 if is not set.

◆ VariableSizeCommunicator() [2/4]

template<class Allocator = std::allocator<std::pair<InterfaceInformation,InterfaceInformation> >>
Dune::VariableSizeCommunicator< Allocator >::VariableSizeCommunicator ( const Interface inf)
inline

Creates a communicator with the default maximum buffer size.

Parameters
infThe communication interface.

References Dune::Interface::communicator().

◆ VariableSizeCommunicator() [3/4]

template<class Allocator = std::allocator<std::pair<InterfaceInformation,InterfaceInformation> >>
Dune::VariableSizeCommunicator< Allocator >::VariableSizeCommunicator ( MPI_Comm  comm,
const InterfaceMap inf,
std::size_t  max_buffer_size 
)
inline

Creates a communicator with a specific maximum buffer size.

Parameters
commThe MPI communicator to use.
infThe communication interface.
max_buffer_sizeThe maximum buffer size allowed.

◆ VariableSizeCommunicator() [4/4]

template<class Allocator = std::allocator<std::pair<InterfaceInformation,InterfaceInformation> >>
Dune::VariableSizeCommunicator< Allocator >::VariableSizeCommunicator ( const Interface inf,
std::size_t  max_buffer_size 
)
inline

Creates a communicator with a specific maximum buffer size.

Parameters
infThe communication interface.
max_buffer_sizeThe maximum buffer size allowed.

References Dune::Interface::communicator().

Member Function Documentation

◆ backward()

template<class Allocator = std::allocator<std::pair<InterfaceInformation,InterfaceInformation> >>
template<class DataHandle >
void Dune::VariableSizeCommunicator< Allocator >::backward ( DataHandle &  handle)
inline

Communicate backwards.

Template Parameters
DataHandleThe type of the handle describing the data. This type has to adhere to the following interface:
// returns whether the number of data items per entry is fixed
bool fixedsize();
// get the number of data items for an entry with index i
std::size_t size(std::size_t i);
// gather the data at index i
template<class MessageBuffer>
void gather(MessageBuffer& buf, std::size_t i);
// scatter the n data items to index i
template<class MessageBuffer>
void scatter(MessageBuffer& buf, std::size_t i, std::size_t n);
Parameters
handleA handle responsible for describing the data, gathering, and scattering it.

◆ forward()

template<class Allocator = std::allocator<std::pair<InterfaceInformation,InterfaceInformation> >>
template<class DataHandle >
void Dune::VariableSizeCommunicator< Allocator >::forward ( DataHandle &  handle)
inline

Communicate forward.

Template Parameters
DataHandleThe type of the handle describing the data. This type has to adhere to the following interface:
// returns whether the number of data items per entry is fixed
bool fixedsize();
// get the number of data items for an entry with index i
std::size_t size(std::size_t i);
// gather the data at index i
template<class MessageBuffer>
void gather(MessageBuffer& buf, std::size_t i);
// scatter the n data items to index i
template<class MessageBuffer>
void scatter(MessageBuffer& buf, std::size_t i, std::size_t n);
Parameters
handleA handle responsible for describing the data, gathering, and scattering it.

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Dec 22, 23:30, 2024)