preCICE v3.1.2
|
contains the logic of the parallel communication between participants. More...
Classes | |
class | BoundM2N |
An M2N between participants with a configured direction. More... | |
class | DistributedComFactory |
class | DistributedCommunication |
Interface for all distributed solver to solver communication classes. More... | |
class | GatherScatterComFactory |
class | GatherScatterCommunication |
Implements DistributedCommunication by using a gathering/scattering methodology. Arrays of data are always gathered and scattered at the primary. No direct communication between secondary ranks is used. For more details see m2n/DistributedCommunication.hpp. More... | |
class | M2N |
M2N communication class. This layer is necessary since communication between two participants can be working via several meshes, each possibly with a different decomposition. In principle, this class is only a map from meshes to DistributedCommunications. More... | |
class | M2NConfiguration |
Configuration for communication channels between solvers. More... | |
class | PointToPointComFactory |
class | PointToPointCommunication |
Point-to-point communication implementation of DistributedCommunication. More... | |
struct | WhiteboxAccessor |
struct giving access _useOnlyPrimaryCom More... | |
Typedefs | |
using | PtrM2N = std::shared_ptr<M2N> |
contains the logic of the parallel communication between participants.
using precice::m2n::PtrM2N = std::shared_ptr<M2N> |
Definition at line 10 of file SharedPointer.hpp.
void precice::m2n::broadcast | ( | mesh::Mesh::VertexDistribution & | m | ) |
Definition at line 90 of file PointToPointCommunication.cpp.
void precice::m2n::broadcastReceive | ( | mesh::Mesh::VertexDistribution & | m, |
int | rankBroadcaster, | ||
const com::PtrCommunication & | communication = utils::IntraComm::getCommunication() ) |
Definition at line 75 of file PointToPointCommunication.cpp.
void precice::m2n::broadcastSend | ( | mesh::Mesh::VertexDistribution const & | m, |
const com::PtrCommunication & | communication = utils::IntraComm::getCommunication() ) |
Definition at line 62 of file PointToPointCommunication.cpp.
std::map< int, std::vector< int > > precice::m2n::buildCommunicationMap | ( | mesh::Mesh::VertexDistribution const & | thisVertexDistribution, |
mesh::Mesh::VertexDistribution const & | otherVertexDistribution, | ||
int | thisRank = utils::IntraComm::getRank() ) |
builds the communication map for a local distribution given the global distribution.
[in] | thisVertexDistribution | the local vertex distribution |
[in] | otherVertexDistribution | the total vertex distribution |
[in] | thisRank | the rank to build the map for |
The worst case complexity of the function is:
which consists of the computation of all intersections.
However, in case of a proper partitioning and communication between neighbor ranks (r), we would most likely end up with a factor r<<p
Definition at line 262 of file PointToPointCommunication.cpp.
void precice::m2n::print | ( | std::map< int, std::vector< int > > const & | m | ) |
Definition at line 101 of file PointToPointCommunication.cpp.
void precice::m2n::printCommunicationPartnerCountStats | ( | std::map< int, std::vector< int > > const & | m | ) |
Definition at line 129 of file PointToPointCommunication.cpp.
void precice::m2n::printLocalIndexCountStats | ( | std::map< int, std::vector< int > > const & | m | ) |
Definition at line 181 of file PointToPointCommunication.cpp.
void precice::m2n::receive | ( | mesh::Mesh::VertexDistribution & | m, |
int | rankSender, | ||
const com::PtrCommunication & | communication ) |
Definition at line 46 of file PointToPointCommunication.cpp.
void precice::m2n::send | ( | mesh::Mesh::VertexDistribution const & | m, |
int | rankReceiver, | ||
const com::PtrCommunication & | communication ) |
Definition at line 32 of file PointToPointCommunication.cpp.