SpECTRE  v2021.12.06
evolution::dg::Actions::ApplyBoundaryCorrections< Metavariables > Struct Template Reference

Computes the boundary corrections and lifts them to the volume. More...

#include <ApplyBoundaryCorrections.hpp>

Public Types

using inbox_tags = tmpl::list< evolution::dg::Tags::BoundaryCorrectionAndGhostCellsInbox< Metavariables::volume_dim > >
 
using const_global_cache_tags = tmpl::list< evolution::Tags::BoundaryCorrection< typename Metavariables::system >, ::dg::Tags::Formulation >
 

Public Member Functions

template<typename DbTagsList , typename... InboxTags>
bool receive_global_time_stepping (const gsl::not_null< db::DataBox< DbTagsList > * > box, const gsl::not_null< tuples::TaggedTuple< InboxTags... > * > inboxes)
 
template<bool DenseOutput, typename DbTagsList , typename... InboxTags>
bool receive_local_time_stepping (const gsl::not_null< db::DataBox< DbTagsList > * > box, const gsl::not_null< tuples::TaggedTuple< InboxTags... > * > inboxes)
 
template<bool DenseOutput, typename DbTagsList , typename... InboxTags>
void complete_time_step (const gsl::not_null< db::DataBox< DbTagsList > * > box)
 

Static Public Member Functions

template<typename DbTagsList , typename... InboxTags, typename ArrayIndex , typename ActionList , typename ParallelComponent >
static std::tuple< db::DataBox< DbTagsList > &&, Parallel::AlgorithmExecutionapply (db::DataBox< DbTagsList > &box, tuples::TaggedTuple< InboxTags... > &inboxes, const Parallel::GlobalCache< Metavariables > &, const ArrayIndex &, ActionList, const ParallelComponent *const)
 
template<bool DenseOutput = false, typename DbTagsList , typename... InboxTags>
static void complete_time_step (gsl::not_null< db::DataBox< DbTagsList > * > box)
 DenseOutput = true is used by the dense output code under local time-stepping.
 
template<typename DbTagsList , typename... InboxTags>
static bool receive_global_time_stepping (gsl::not_null< db::DataBox< DbTagsList > * > box, gsl::not_null< tuples::TaggedTuple< InboxTags... > * > inboxes)
 
template<bool DenseOutput = false, typename DbTagsList , typename... InboxTags>
static bool receive_local_time_stepping (gsl::not_null< db::DataBox< DbTagsList > * > box, gsl::not_null< tuples::TaggedTuple< InboxTags... > * > inboxes)
 DenseOutput = true is used by the dense output code under local time-stepping.
 

Detailed Description

template<typename Metavariables>
struct evolution::dg::Actions::ApplyBoundaryCorrections< Metavariables >

Computes the boundary corrections and lifts them to the volume.

Given the data from both sides of each mortar, computes the boundary correction on each mortar and then lifts it into the volume.

Future additions include:

  • boundary conditions, both through ghost cells and by changing the time derivatives.
  • support local time stepping (shouldn't be very difficult)

When using local time stepping the neighbor sends data at the neighbor's current temporal id. Along with the boundary data, the next temporal id at which the neighbor will send data is also sent. This is equal to the neighbor's Tags::Next<::Tags::TimeStepId>. When inserting into the mortar data history, we insert the received temporal id, that is, the current time of the neighbor, along with the boundary correction data.


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