OpenLB 1.7
|
Configurable overlap communication neighborhood of a block. More...
#include <blockCommunicationNeighborhood.h>
Public Member Functions | |
BlockCommunicationNeighborhood (CuboidGeometry< T, D > &cuboidGeometry, LoadBalancer< T > &loadBalancer, int iC, int padding, MPI_Comm comm) | |
template<typename FIELD > | |
void | requestField () |
Request field and provides local availability. | |
void | requestCell (LatticeR< D > latticeR) |
Request individual cell for communication. | |
void | requestOverlap (int width) |
Request all cells in overlap of size width for communication. | |
void | requestOverlap (int width, BlockIndicatorF< T, D > &indicatorF) |
Request all indicated cells in overlap of width for communication. | |
void | clearRequestedCells () |
Remove all requested cells. | |
void | setFieldAvailability (std::type_index field, bool available) |
Update local availability of previously requested field. | |
template<typename BLOCK > | |
void | setFieldsAvailability (int iC, BLOCK &block) |
Update outbound availabilities for locally available neighbor block. | |
void | maintain () |
void | send (SuperCommunicationTagCoordinator< T > &) |
void | receive (SuperCommunicationTagCoordinator< T > &) |
void | wait () |
template<typename F > | |
void | forNeighbors (F f) const |
Calls f(iC) for every neighboring cuboid ID iC. | |
const std::vector< std::type_index > & | getFieldsCommonWith (int iC) const |
const std::vector< CellID > & | getCellsOutboundTo (int iC) const |
const std::vector< CellID > & | getCellsInboundFrom (int iC) const |
const std::vector< CellID > & | getCellsRequestedFrom (int iC) const |
Configurable overlap communication neighborhood of a block.
Managed by SuperCommunicator
Definition at line 48 of file blockCommunicationNeighborhood.h.
olb::BlockCommunicationNeighborhood< T, D >::BlockCommunicationNeighborhood | ( | CuboidGeometry< T, D > & | cuboidGeometry, |
LoadBalancer< T > & | loadBalancer, | ||
int | iC, | ||
int | padding, | ||
MPI_Comm | comm ) |
Definition at line 39 of file blockCommunicationNeighborhood.hh.
References olb::BlockCommunicationNeighborhood< T, D >::requestOverlap().
void olb::BlockCommunicationNeighborhood< T, D >::clearRequestedCells | ( | ) |
Remove all requested cells.
Definition at line 132 of file blockCommunicationNeighborhood.hh.
|
inline |
Calls f(iC) for every neighboring cuboid ID iC.
Definition at line 118 of file blockCommunicationNeighborhood.h.
const std::vector< CellID > & olb::BlockCommunicationNeighborhood< T, D >::getCellsInboundFrom | ( | int | iC | ) | const |
Definition at line 270 of file blockCommunicationNeighborhood.hh.
const std::vector< CellID > & olb::BlockCommunicationNeighborhood< T, D >::getCellsOutboundTo | ( | int | iC | ) | const |
Definition at line 263 of file blockCommunicationNeighborhood.hh.
const std::vector< CellID > & olb::BlockCommunicationNeighborhood< T, D >::getCellsRequestedFrom | ( | int | iC | ) | const |
Definition at line 277 of file blockCommunicationNeighborhood.hh.
const std::vector< std::type_index > & olb::BlockCommunicationNeighborhood< T, D >::getFieldsCommonWith | ( | int | iC | ) | const |
Definition at line 256 of file blockCommunicationNeighborhood.hh.
void olb::BlockCommunicationNeighborhood< T, D >::maintain | ( | ) |
Definition at line 163 of file blockCommunicationNeighborhood.hh.
void olb::BlockCommunicationNeighborhood< T, D >::receive | ( | SuperCommunicationTagCoordinator< T > & | coordinator | ) |
Definition at line 208 of file blockCommunicationNeighborhood.hh.
References olb::SuperCommunicationTagCoordinator< T >::get(), olb::singleton::mpi(), olb::singleton::MpiManager::probeReceiveSize(), and olb::singleton::MpiManager::receive().
void olb::BlockCommunicationNeighborhood< T, D >::requestCell | ( | LatticeR< D > | latticeR | ) |
Request individual cell for communication.
Definition at line 67 of file blockCommunicationNeighborhood.hh.
References olb::BlockStructureD< D >::isPadding().
|
inline |
Request field and provides local availability.
Definition at line 83 of file blockCommunicationNeighborhood.h.
References olb::cpu::sisd::Column< T >::resize().
void olb::BlockCommunicationNeighborhood< T, D >::requestOverlap | ( | int | width | ) |
Request all cells in overlap of size width for communication.
Definition at line 92 of file blockCommunicationNeighborhood.hh.
void olb::BlockCommunicationNeighborhood< T, D >::requestOverlap | ( | int | width, |
BlockIndicatorF< T, D > & | indicatorF ) |
Request all indicated cells in overlap of width for communication.
Definition at line 112 of file blockCommunicationNeighborhood.hh.
void olb::BlockCommunicationNeighborhood< T, D >::send | ( | SuperCommunicationTagCoordinator< T > & | coordinator | ) |
Definition at line 192 of file blockCommunicationNeighborhood.hh.
References olb::SuperCommunicationTagCoordinator< T >::get().
void olb::BlockCommunicationNeighborhood< T, D >::setFieldAvailability | ( | std::type_index | field, |
bool | available ) |
Update local availability of previously requested field.
Definition at line 140 of file blockCommunicationNeighborhood.hh.
void olb::BlockCommunicationNeighborhood< T, D >::setFieldsAvailability | ( | int | iC, |
BLOCK & | block ) |
Update outbound availabilities for locally available neighbor block.
Used for local non-MPI exchange of field availabilities
Definition at line 150 of file blockCommunicationNeighborhood.hh.
void olb::BlockCommunicationNeighborhood< T, D >::wait | ( | ) |
Definition at line 244 of file blockCommunicationNeighborhood.hh.