SpECTRE
v2025.03.17
|
A local synchronous action where data is communicated to neighbor elements. More...
#include <SendDataToElement.hpp>
Public Types | |
using | return_type = void |
Static Public Member Functions | |
template<typename ParallelComponent , typename DbTagList , size_t Dim, typename ReceiveTag , typename ReceiveData , typename Metavariables > | |
static return_type | apply (db::DataBox< DbTagList > &box, const gsl::not_null< Parallel::NodeLock * >, const gsl::not_null< Parallel::GlobalCache< Metavariables > * > cache, const ReceiveTag &, const ElementId< Dim > &element_to_execute_on, typename ReceiveTag::temporal_id instance, ReceiveData &&receive_data) |
A local synchronous action where data is communicated to neighbor elements.
If the inbox tag type is an evolution::dg::AtomicInboxBoundaryData
then remote insert for elements on the same node is done in a lock-free manner between the sender and receiver elements, and in a wait-free manner between different sender elements to the same receiver element.
The number of messages needed to take the next time step on the receiver element is kept track of and a message is sent to the parallel runtime system (e.g. Charm++) only when the receiver/neighbor element has all the data it needs to take the next time step. This is done so as to reduce pressure on the runtime system by sending fewer messages.