SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Parallel::Actions::SendDataToElement Struct Reference

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)
 

Detailed Description

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.


The documentation for this struct was generated from the following file: