Utility to transfer the contents of ragged rows via buffers. More...
Public Member Functions | |
template<class R > | |
bool | operator() (const R &rag, std::size_t i, bool &sent) |
Operator to communicate field data. | |
ragged (Buffer &b, bool first=false) | |
Prepare an object for writing. | |
Static Public Member Functions | |
template<class M , class R > | |
static void | read (const M &rag, const Buffer &b, R &&ghost) |
The method to read received data. | |
Utility to transfer the contents of ragged rows via buffers.
Type ragged is used to create actual buffers for setting up the data to be sent. It includes setting up buffers for both send and receive data. Each iteration should start sending data from the beginning: operator()
will ignore data that has already been sent.
|
explicit |
Prepare an object for writing.
b | send buffer (for destination color) |
first | whether this is the first round of communication |
|
nodiscard |
Operator to communicate field data.
rag | accessor or mutator for the ragged field to be communicated |
i | the index i over the topology index-space of the field, e.g., cell i for an unstructured topology specialization with cells. |
sent | set whenever any data is sent, indicating that another iteration of buffers_category::xfer is required to receive it |
|
static |
The method to read received data.
An appropriate subrange of ghost is used on each call.
rag | The mutator to the ragged field |
b | The buffer where the data is received |
ghost | range of local (ghost) indices |