1#ifndef __ITERATION_PAYLOAD_HPP__
2#define __ITERATION_PAYLOAD_HPP__
4#include "cma_read/reactorstate.hpp"
5#include <cma_read/flow_iterator.hpp>
6#include <cma_read/neighbors.hpp>
36 CmaRead::Neighbors::Neighbors_const_view_t
neighbors;
60 bool recv(
size_t source, MPI_Status* status)
noexcept;
79 CmaRead::Neighbors::Neighbors_const_view_t
neighbors;
81 void fill(
const CmaRead::ReactorState& current_reactor_state);
83 [[nodiscard]]
bool sendAll(std::size_t n_rank)
noexcept;
96 [[nodiscard]]
bool send(
size_t rank)
noexcept;
99 std::array<MPI_Request,n_vector_send>
requests;
Represents the payload of data on the host side for an iteration.
Definition iteration_payload.hpp:70
std::array< MPI_Request, n_vector_send > requests
Definition iteration_payload.hpp:99
std::span< const double > gas_volumes
View gas flow values to be sent for the current iteration.
Definition iteration_payload.hpp:77
bool send(size_t rank) noexcept
Sends this payload to a specified MPI rank.
Definition iteration_payload.cpp:43
std::span< const double > liquid_flows
View liquid flow values to be sent for the current iteration.
Definition iteration_payload.hpp:73
CmaRead::Neighbors::Neighbors_const_view_t neighbors
View neighbors values to be sent for the current iteration.
Definition iteration_payload.hpp:79
void fill(const CmaRead::ReactorState ¤t_reactor_state)
Definition iteration_payload.cpp:76
std::span< const double > liquid_volumes
View liquid volmes values to be sent for the current iteration.
Definition iteration_payload.hpp:75
bool sendAll(std::size_t n_rank) noexcept
Definition iteration_payload.cpp:17
static constexpr std::size_t n_vector_send
Definition iteration_payload.hpp:98
Represents the payload of data exchanged during an iteration.
Definition iteration_payload.hpp:21
bool recv(size_t source, MPI_Status *status) noexcept
Receives data for this payload from a specified source.
Definition iteration_payload.cpp:57
IterationPayload(size_t size_flows, size_t volumes)
Constructs an IterationPayload with specified sizes for flows and volumes.
Definition iteration_payload.cpp:10
std::vector< double > liquid_flows
Vector containing liquid flow values for the current iteration.
Definition iteration_payload.hpp:24
std::vector< double > gas_volumes
Vector containing gas volume values for the current iteration.
Definition iteration_payload.hpp:30
CmaRead::Neighbors::Neighbors_const_view_t neighbors
Constant view of neighbor data for the current iteration.
Definition iteration_payload.hpp:36
std::vector< size_t > raw_neighbors
Vector containing raw neighbor indices for the current iteration.
Definition iteration_payload.hpp:33
std::vector< double > liquid_volumes
Vector containing liquid volume values for the current iteration.
Definition iteration_payload.hpp:27
Namespace to correclty wrap MPI C API for modern C++.
Definition impl_async.hpp:19