51 int rankOffset = 0)
override;
57 int requesterCommunicatorSize)
override
70 int requesterCommunicatorSize)
override;
76 int requesterRank)
override
88 void reduceSum(
int itemToSend,
int &itemsToReceive,
Rank primaryRank)
override;
90 void reduceSum(
int itemToSend,
int &itemsToReceive)
override;
96 void allreduceSum(
double itemToSend,
double &itemsToReceive,
Rank primaryRank)
override;
98 void allreduceSum(
double itemToSend,
double &itemsToReceive)
override;
100 void allreduceSum(
int itemToSend,
int &itemsToReceive,
Rank primaryRank)
override;
102 void allreduceSum(
int itemToSend,
int &itemsToReceive)
override;
110 void broadcast(
int &itemToReceive,
Rank rankBroadcaster)
override;
116 void broadcast(
double itemToSend)
override;
118 void broadcast(
double &itemToReceive,
Rank rankBroadcaster)
override;
120 void broadcast(
bool itemToSend)
override;
122 void broadcast(
bool &itemToReceive,
Rank rankBroadcaster)
override;
#define PRECICE_ASSERT(...)
Rank rank(int rank) override
void acceptConnection(std::string const &acceptorName, std::string const &requesterName, std::string const &tag, int acceptorRank, int rankOffset=0) override
void requestConnectionAsClient(std::string const &acceptorName, std::string const &requesterName, std::string const &tag, std::set< int > const &acceptorRanks, int requesterRank) override
Connects to another communicator, which has to call acceptConnectionAsServer().
~MPIDirectCommunication() override
void requestConnection(std::string const &acceptorName, std::string const &requesterName, std::string const &tag, int requesterRank, int requesterCommunicatorSize) override
size_t getRemoteCommunicatorSize() override
Returns the number of processes in the remote communicator.
void broadcast(precice::span< const int > itemsToSend) override
int adjustRank(Rank rank) const override
Turn the rank adjustment into a noop for direct communication.
utils::Parallel::CommStatePtr _commState
CommState to use.
void closeConnection() override
See precice::com::Communication::closeConnection().
void allreduceSum(precice::span< double const > itemsToSend, precice::span< double > itemsToReceive, Rank primaryRank) override
MPI_Comm & communicator(Rank rank=0) override
Returns the communicator.
void reduceSum(precice::span< double const > itemsToSend, precice::span< double > itemsToReceive, Rank primaryRank) override
Performs a reduce summation on the rank given by primaryRank.
void acceptConnectionAsServer(std::string const &acceptorName, std::string const &requesterName, std::string const &tag, int acceptorRank, int requesterCommunicatorSize) override
Accepts connection from another communicator, which has to call requestConnectionAsClient().
This class provides a lightweight logger.
A C++ 11 implementation of the non-owning C++20 std::span type.
std::shared_ptr< CommState > CommStatePtr
contains the data communication abstraction layer.