|
| PdfFieldPackInfo (const BlockDataID &pdfFieldId, const ConstBlockDataID &boundaryHandlingId, const bool _optimizedEqualLevelCommunication=true, const bool _optimizedForLinearExplosion=true) |
|
| ~PdfFieldPackInfo () override=default |
|
bool | optimizedEqualLevelCommunication () const override |
|
void | optimizeEqualLevelCommunication (const bool value=true) override |
|
bool | optimizedForLinearExplosion () const override |
|
void | optimizeForLinearExplosion (const bool value=true) override |
|
bool | constantDataExchange () const override |
| Should return true if the amount of data that is packed for a given block in direction "dir" is guaranteed to remain constant over time. More...
|
|
bool | threadsafeReceiving () const override |
| Must return false if calling unpackData and/or communicateLocal is not thread-safe. More...
|
|
void | unpackDataEqualLevel (Block *receiver, stencil::Direction dir, mpi::RecvBuffer &buffer) override |
| If NOT thread-safe, threadsafeReceiving must return false! More...
|
|
void | communicateLocalEqualLevel (const Block *sender, Block *receiver, stencil::Direction dir) override |
| If NOT thread-safe, threadsafeReceiving must return false! More...
|
|
void | unpackDataCoarseToFine (Block *fineReceiver, const BlockID &coarseSender, stencil::Direction dir, mpi::RecvBuffer &buffer) override |
|
void | communicateLocalCoarseToFine (const Block *coarseSender, Block *fineReceiver, stencil::Direction dir) override |
|
void | unpackDataFineToCoarse (Block *coarseReceiver, const BlockID &fineSender, stencil::Direction dir, mpi::RecvBuffer &buffer) override |
|
void | communicateLocalFineToCoarse (const Block *fineSender, Block *coarseReceiver, stencil::Direction dir) override |
|
| NonUniformPackInfo ()=default |
|
virtual | ~NonUniformPackInfo ()=default |
|
void | packDataEqualLevel (const Block *sender, stencil::Direction dir, mpi::SendBuffer &buffer) const |
| Must be thread-safe! Calls packDataImpl. More...
|
|
void | packDataCoarseToFine (const Block *coarseSender, const BlockID &fineReceiver, stencil::Direction dir, mpi::SendBuffer &buffer) const |
|
void | packDataFineToCoarse (const Block *fineSender, const BlockID &coarseReceiver, stencil::Direction dir, mpi::SendBuffer &buffer) const |
|
void | clearBufferSizeCheckMap () |
|
|
static CellInterval | equalLevelPackInterval (stencil::Direction dir, const CellInterval &cellBB, const uint_t numberOfLayers) |
|
static CellInterval | equalLevelUnpackInterval (stencil::Direction dir, const CellInterval &cellBB, const uint_t numberOfLayers) |
|
static Vector3< cell_idx_t > | getNeighborShift (const BlockID &smallBlock, stencil::Direction dir) |
|
static CellInterval | coarseToFinePackInterval (stencil::Direction dir, const CellInterval &cellBB, const BlockID &smallBlock) |
|
static CellInterval | coarseToFineUnpackInterval (stencil::Direction dir, const CellInterval &cellBB, const BlockID &smallBlock) |
|
static CellInterval | fineToCoarsePackInterval (stencil::Direction dir, const CellInterval &cellBB) |
|
static CellInterval | fineToCoarseUnpackInterval (stencil::Direction dir, const CellInterval &cellBB, const BlockID &smallBlock) |
|
static uint_t | equalLevelCells () |
|
static bool | isFaceDirection (stencil::Direction dir) |
|
static bool | isEdgeDirection (stencil::Direction dir) |
|
static bool | isCornerDirection (stencil::Direction dir) |
|
static bool | blocksConnectedByFaces (const Block *block, const BlockID &neighbor) |
|
static bool | blocksConnectedByEdges (const Block *block, const BlockID &neighbor) |
|
static bool | divisibleByTwo (const CellInterval &cellBB) |
|
static bool | coarserNeighborExistsInVicinity (const Block *block, stencil::Direction dir) |
|
template<typename LatticeModel_T , typename BoundaryHandling_T >
Should return true if the amount of data that is packed for a given block in direction "dir" is guaranteed to remain constant over time.
False otherwise. If you are not sure what to return, return false! Returning false is always save. Falsely return true will lead to errors! However, if the data can be guaranteed to remain constant over time, returning true enables performance optimizations during the communication.
Implements walberla::blockforest::communication::NonUniformPackInfo.
template<typename LatticeModel_T , typename BoundaryHandling_T >
Must return false if calling unpackData and/or communicateLocal is not thread-safe.
True otherwise. If you are not sure what to return, return false! Returning false is always save. Falsely return true will most likely lead to errors! However, if both unpackData AND communicateLocal are thread-safe, returning true can lead to performance improvements.
Implements walberla::blockforest::communication::NonUniformPackInfo.