|
SpECTRE
2021.08.02
|
Check if any triggers are activated, and perform phase changes as needed. More...
#include <ExecutePhaseChange.hpp>
Static Public Member Functions | |
| template<typename DbTags , typename... InboxTags, typename Metavariables , typename ArrayIndex , typename ActionList , typename ParallelComponent > | |
| static std::tuple< db::DataBox< DbTags > &&, Parallel::AlgorithmExecution > | apply (db::DataBox< DbTags > &box, const tuples::TaggedTuple< InboxTags... > &, Parallel::GlobalCache< Metavariables > &cache, const ArrayIndex &array_index, const ActionList, const ParallelComponent *const) noexcept |
Check if any triggers are activated, and perform phase changes as needed.
This action is intended to be executed on every component that repeatedly runs iterable actions that would need to halt during a phase change. This action sends data to the Main chare via a reduction.
This action iterates over the Tags::PhaseChangeAndTriggers, sending reduction data for the phase decision for each triggered PhaseChange, then halts the algorithm execution so that the Main chare can make a phase decision if any were triggered.
Uses:
Tags::PhaseChangeAndTriggersPhaseChange option-created objects.PhaseChange objects are permitted to perform mutations on the DataBox to store persistent state information.