SpECTRE
v2025.03.17
|
Run the troubled-cell indicator on the candidate solution and perform the time step rollback if needed. More...
#include <TciAndRollback.hpp>
Static Public Member Functions | |
template<typename DbTags , typename... InboxTags, typename Metavariables , typename ArrayIndex , typename ActionList , typename ParallelComponent , size_t Dim = Metavariables::volume_dim> | |
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) |
Run the troubled-cell indicator on the candidate solution and perform the time step rollback if needed.
Interior cells are marked as troubled if subcell_options.always_use_subcells()
is true
, or if either the RDMP troubled-cell indicator (TCI) or the TciMutator reports the cell is troubled. Exterior cells are marked as troubled only if Metavariables::SubcellOptions::subcell_enabled_at_external_boundary
is true
.
The troubled-cell indicator (TCI) given by the mutator TciMutator
can mutate tags in the DataBox, but should do so cautiously. The main reason that this is a mutator is because primitive variables, such as the pressure, are used to check if the solution is physical. In the relativistic case, even just whether or not the primitive variables can be recovered is used as a condition. Note that the evolved variables are projected to the subcells after the TCI is called and marks the cell as troubled.
After rollback, the subcell scheme must project the DG boundary corrections