OpenLB 1.7
|
Generic communicator for overlaps between blocks of SUPER. More...
#include <superCommunicator.h>
Public Member Functions | |
SuperCommunicator (SUPER &super) | |
~SuperCommunicator () | |
template<typename FIELD > | |
void | requestField () |
Request FIELD for communication. | |
template<typename... FIELDS> | |
void | requestFields () |
Convenience method for requesting multiple FIELDS in one call. | |
void | requestCell (LatticeR< SUPER::d+1 > latticeR) |
Request single cell in the padding area for communication. | |
void | requestOverlap (int width) |
Request all cells in overlap of width for communication. | |
void | requestOverlap (int width, FunctorPtr< SuperIndicatorF< T, SUPER::d > > &&indicatorF) |
Request all indicated cells in overlap of width for communication. | |
void | clearRequestedCells () |
Remove all requested cells. | |
void | exchangeRequests () |
Exchange requests between processes. | |
void | communicate () |
Perform communication. | |
const std::set< int > & | getRemoteCuboids () const |
Returns set of non-local neighborhood cuboid indices. | |
Generic communicator for overlaps between blocks of SUPER.
This class provides inter-block communication for any super structures containing overlapping blocks.
SUPER must expose load balancer via getLoadBalancer SUPER must expose cuboid geometry via getCuboidGeometry
Blocks must be exposed via SUPER::getBlock Blocks must implement FieldsCommunicatable
Definition at line 53 of file superCommunicator.h.
olb::SuperCommunicator< T, SUPER >::SuperCommunicator | ( | SUPER & | super | ) |
Definition at line 39 of file superCommunicator.hh.
olb::SuperCommunicator< T, SUPER >::~SuperCommunicator | ( | ) |
Definition at line 72 of file superCommunicator.hh.
void olb::SuperCommunicator< T, SUPER >::clearRequestedCells | ( | ) |
Remove all requested cells.
Definition at line 179 of file superCommunicator.hh.
void olb::SuperCommunicator< T, SUPER >::communicate | ( | ) |
Perform communication.
Definition at line 190 of file superCommunicator.hh.
void olb::SuperCommunicator< T, SUPER >::exchangeRequests | ( | ) |
Exchange requests between processes.
Definition at line 81 of file superCommunicator.hh.
const std::set< int > & olb::SuperCommunicator< T, SUPER >::getRemoteCuboids | ( | ) | const |
Returns set of non-local neighborhood cuboid indices.
Definition at line 221 of file superCommunicator.hh.
void olb::SuperCommunicator< T, SUPER >::requestCell | ( | LatticeR< SUPER::d+1 > | latticeR | ) |
Request single cell in the padding area for communication.
Definition at line 149 of file superCommunicator.hh.
References olb::Vector< T, D >::data().
|
inline |
Request FIELD for communication.
Communication of dynamic fields depends on the availability at both ends of the exchange.
Definition at line 88 of file superCommunicator.h.
|
inline |
Convenience method for requesting multiple FIELDS in one call.
Definition at line 99 of file superCommunicator.h.
void olb::SuperCommunicator< T, SUPER >::requestOverlap | ( | int | width | ) |
Request all cells in overlap of width for communication.
Definition at line 157 of file superCommunicator.hh.
void olb::SuperCommunicator< T, SUPER >::requestOverlap | ( | int | width, |
FunctorPtr< SuperIndicatorF< T, SUPER::d > > && | indicatorF ) |
Request all indicated cells in overlap of width for communication.
Definition at line 168 of file superCommunicator.hh.