preCICE v3.2.0
Loading...
Searching...
No Matches
GatherScatterCommunication.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <stddef.h>
4#include <string>
5#include <vector>
8#include "logging/Logger.hpp"
10
11namespace precice::m2n {
12
20public:
24
26
30 bool isConnected() const override;
31
42 const std::string &acceptorName,
43 const std::string &requesterName) override;
44
55 const std::string &acceptorName,
56 const std::string &requesterName) override;
62 std::string const &acceptorName,
63 std::string const &requesterName) override;
64
70 std::string const &acceptorName,
71 std::string const &requesterName) override;
72
75
81 void closeConnection() override;
82
84 void send(precice::span<double const> itemsToSend, int valueDimension) override;
85
87 void receive(precice::span<double> itemsToReceive, int valueDimension) override;
88
90 void broadcastSend(int itemToSend) override;
91
96 void broadcastReceiveAll(std::vector<int> &itemToReceive) override;
97
99 void broadcastSendMesh() override;
100
102 void broadcastReceiveAllMesh() override;
103
105 void scatterAllCommunicationMap(CommunicationMap &localCommunicationMap) override;
106
108 void gatherAllCommunicationMap(CommunicationMap &localCommunicationMap) override;
109
110private:
111 logging::Logger _log{"m2n::GatherScatterCommunication"};
112
115
118};
119
120} // namespace precice::m2n
This class provides a lightweight logger.
Definition Logger.hpp:17
std::map< int, std::vector< int > > CommunicationMap
com::PtrCommunication _com
primary to primary basic communication
bool isConnected() const override
Returns true, if a connection to a remote participant has been setup.
void broadcastReceiveAllMesh() override
Receive mesh partitions per connected rank on remote participant. Not available for GatherScatterComm...
void acceptConnection(const std::string &acceptorName, const std::string &requesterName) override
Accepts connection from participant, which has to call requestConnection().
GatherScatterCommunication(com::PtrCommunication com, mesh::PtrMesh mesh)
void broadcastSendMesh() override
Broadcasts a mesh to connected ranks on remote participant. Not available for GatherScatterCommunicat...
void broadcastReceiveAll(std::vector< int > &itemToReceive) override
Receives an int per connected rank on remote participant. Not available for GatherScatterCommunicatio...
void completeSecondaryRanksConnection() override
Completes the secondary connections for both acceptor and requester by updating the vertex list in _m...
void closeConnection() override
Disconnects from communication space, i.e. participant.
void receive(precice::span< double > itemsToReceive, int valueDimension) override
All ranks receive an array of doubles (different for each rank).
void broadcastSend(int itemToSend) override
Broadcasts an int to connected ranks on remote participant. Not available for GatherScatterCommunicat...
void scatterAllCommunicationMap(CommunicationMap &localCommunicationMap) override
Scatters a communication map over connected ranks on remote participant. Not available for GatherScat...
void acceptPreConnection(std::string const &acceptorName, std::string const &requesterName) override
void requestConnection(const std::string &acceptorName, const std::string &requesterName) override
Requests connection from participant, which has to call acceptConnection().
void requestPreConnection(std::string const &acceptorName, std::string const &requesterName) override
void send(precice::span< double const > itemsToSend, int valueDimension) override
Sends an array of double values from all ranks (different for each rank).
bool _isConnected
Global communication is set up or not.
void gatherAllCommunicationMap(CommunicationMap &localCommunicationMap) override
Gathers a communication maps from connected ranks on remote participant. Not available for GatherScat...
A C++ 11 implementation of the non-owning C++20 std::span type.
Definition span.hpp:284
contains the data communication abstraction layer.
std::shared_ptr< Communication > PtrCommunication
contains the logic of the parallel communication between participants.
Definition BoundM2N.cpp:12
provides Mesh, Data and primitives.
std::shared_ptr< Mesh > PtrMesh