SpECTRE
v2024.03.19
|
The inbox tag for boundary correction communication and DG-subcell ghost zone cells. More...
#include <InboxTags.hpp>
Public Types | |
using | stored_type = std::tuple< Mesh< Dim >, Mesh< Dim - 1 >, std::optional< DataVector >, std::optional< DataVector >, ::TimeStepId, int > |
using | temporal_id = TimeStepId |
using | type = std::map< TimeStepId, DirectionalIdMap< Dim, stored_type > > |
Public Member Functions | |
void | pup (PUP::er &) |
Static Public Member Functions | |
template<typename Inbox , typename ReceiveDataType > | |
static void | insert_into_inbox (const gsl::not_null< Inbox * > inbox, const temporal_id &time_step_id, ReceiveDataType &&data) |
static std::string | output_inbox (const type &inbox, const size_t padding_size) |
The inbox tag for boundary correction communication and DG-subcell ghost zone cells.
The stored data consists of the following (in argument order of the tuple):
The TimeStepId is the neighboring element's next time step. When using local time stepping, the neighbor's boundary data is valid up until this time, which may include multiple local time steps. By receiving and storing the neighbor time step, the local element knows whether or not it should remove boundary data and expect new data to be sent from the neighbor.
The ghost cell data (second element of the tuple) will be valid whenever a DG-subcell scheme is being used. Whenever a DG-subcell scheme is being used, elements using DG and not FD/FV always send both the ghost cells and boundary correction data together. Elements using FD/FV send the ghost cells first followed by the boundary correction data once the element has received all neighbor ghost cell data. Note that the second send/receive only modifies the flux and the TimeStepId used for the flux validity range.
When only a DG scheme (not a DG-subcell scheme) is used the ghost cell data will never be valid.
In the DG-subcell scheme this tag is used both for communicating the ghost cell data needed for the FD/FV reconstruction step and the data needed for the boundary corrections.