SpECTRE
v2025.03.17
|
Prepares the evolution for time-stepper self-starting. More...
#include <SelfStartActions.hpp>
Public Types | |
using | simple_tags = typename StoreInitialValues< tmpl::push_back< detail::vars_to_save< System >, ::Tags::TimeStep > >::simple_tags |
Static Public Member Functions | |
template<typename DbTags , typename... InboxTags, typename Metavariables , typename ArrayIndex , typename ActionList , typename ParallelComponent > | |
static Parallel::iterable_action_return_t | apply (db::DataBox< DbTags > &box, const tuples::TaggedTuple< InboxTags... > &, const Parallel::GlobalCache< Metavariables > &, const ArrayIndex &, const ActionList, const ParallelComponent *const) |
Prepares the evolution for time-stepper self-starting.
Stores the initial values of the variables and time step and sets an appropriate step for self-starting.
The self-start procedure must take place within one slab, and we want to avoid the end of the slab so that we don't have to deal with another action advancing the slab on us. There will be problems if the main evolution tries to evaluate at a time that the self-start procedure used before the self-start version falls out of the history, so we have to make sure that does not happen. We can't do that by making sure our steps are large enough to keep ahead because of the slab restriction, so instead we have to make the self-start step smaller to ensure no collisions. The easiest way to do that is to fit the entire procedure before the first real step, so we pick an initialization time step of
The original Tags::TimeStep
is temporarily stored separately during the self-start procedure, and restored to its original value at the conclusion of the self-start procedure in preparation for the main evolution, so that the initial time steps during the evolution are appropriately set according to Initialization
phase values.
Uses:
DataBox changes: