preCICE v3.2.0
Loading...
Searching...
No Matches
DistributedCommunication.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <map>
4#include <vector>
5#include "mesh/Mesh.hpp"
7#include "precice/span.hpp"
8
9namespace precice::m2n {
10
33public:
35
40
42 virtual ~DistributedCommunication() = default;
43
45 virtual bool isConnected() const = 0;
46
53 virtual void acceptConnection(
54 const std::string &acceptorName,
55 const std::string &requesterName) = 0;
56
63 virtual void requestConnection(
64 const std::string &acceptorName,
65 const std::string &requesterName) = 0;
66
75 virtual void acceptPreConnection(
76 std::string const &acceptorName,
77 std::string const &requesterName) = 0;
78
88 std::string const &acceptorName,
89 std::string const &requesterName) = 0;
90
91 /* @brief Completes the secondary connections for both acceptor and requester by updating
92 * the vertex list in _mappings.
93 *
94 * @pre acceptPreConnection or requestPreConnection has been called.
95 * @pre accept/requestConnection has not been called
96 * @post the m2n connection is ready to use
97 */
99
105 virtual void closeConnection() = 0;
106
108 virtual void send(precice::span<double const> itemsToSend, int valueDimension) = 0;
109
111 virtual void receive(precice::span<double> itemsToReceive, int valueDimension) = 0;
112
113 /*
114 * A mapping from remote local ranks to the IDs that must be communicated
115 */
117
119 virtual void broadcastSend(int itemToSend) = 0;
120
125 virtual void broadcastReceiveAll(std::vector<int> &itemToReceive) = 0;
126
128 virtual void broadcastSendMesh() = 0;
129
131 virtual void broadcastReceiveAllMesh() = 0;
132
134 virtual void scatterAllCommunicationMap(CommunicationMap &localCommunicationMap) = 0;
135
137 virtual void gatherAllCommunicationMap(CommunicationMap &localCommunicationMap) = 0;
138
139protected:
146};
147
148} // namespace precice::m2n
virtual void requestConnection(const std::string &acceptorName, const std::string &requesterName)=0
Connects to another participant, which has to call acceptConnection().
virtual void scatterAllCommunicationMap(CommunicationMap &localCommunicationMap)=0
Scatters a communication map over connected ranks on remote participant.
std::map< int, std::vector< int > > CommunicationMap
virtual void broadcastSendMesh()=0
Broadcasts a mesh to connected ranks on remote participant.
virtual bool isConnected() const =0
Returns true, if a connection to a remote participant has been setup.
virtual void broadcastSend(int itemToSend)=0
Broadcasts an int to connected ranks on remote participant.
virtual void broadcastReceiveAllMesh()=0
Receive mesh partitions per connected rank on remote participant.
virtual void completeSecondaryRanksConnection()=0
mesh::PtrMesh _mesh
mesh that dictates the distribution of this mapping
virtual void closeConnection()=0
Disconnects from communication space, i.e. participant.
virtual void broadcastReceiveAll(std::vector< int > &itemToReceive)=0
Receives an int per connected rank on remote participant @para[out] itemToReceive received ints from ...
std::shared_ptr< DistributedCommunication > SharedPointer
virtual void acceptConnection(const std::string &acceptorName, const std::string &requesterName)=0
Connects to another participant, which has to call requestConnection().
virtual ~DistributedCommunication()=default
Destructor, empty.
virtual void receive(precice::span< double > itemsToReceive, int valueDimension)=0
All ranks receive an array of doubles (different for each rank).
virtual void requestPreConnection(std::string const &acceptorName, std::string const &requesterName)=0
Connects to another participant, which has to call acceptPreConnection(). Exchanged vertex list is no...
virtual void acceptPreConnection(std::string const &acceptorName, std::string const &requesterName)=0
Connects to another participant, which has to call requestPreConnection(). Exchanged vertex list is n...
virtual void send(precice::span< double const > itemsToSend, int valueDimension)=0
Sends an array of double values from all ranks (different for each rank).
virtual void gatherAllCommunicationMap(CommunicationMap &localCommunicationMap)=0
Gathers a communication maps from connected ranks on remote participant.
A C++ 11 implementation of the non-owning C++20 std::span type.
Definition span.hpp:284
contains the logic of the parallel communication between participants.
Definition BoundM2N.cpp:12
provides Mesh, Data and primitives.
std::shared_ptr< Mesh > PtrMesh