SpECTRE  v2023.01.13
Actions::RunEventsOnFailure Struct Reference

Invokes all events specified in Tags::EventsRunAtCleanup. More...

#include <RunEventsOnFailure.hpp>

Public Types

using const_global_cache_tags = tmpl::list<::Tags::EventsRunAtCleanup >

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, tuples::TaggedTuple< InboxTags... > &, Parallel::GlobalCache< Metavariables > &cache, const ArrayIndex &array_index, const ActionList, const ParallelComponent *const component)

Detailed Description

Invokes all events specified in Tags::EventsRunAtCleanup.

Before running the events, floating point exceptions are disabled. This is to allow manipulating data even if there are NaN or other problematic values. We ultimately just want to be able to see the state of the simulation at failure.

This action is intended to be executed in the Parallel::Phase::PostFailureCleanup phase.

When using local time stepping, the simulation will almost certainly fail with different elements at different times. This can also happen with global time stepping if some elements updated their current time before other elements hit an error. If an event requires consistent observation IDs, then an option should be added to that event that specifies what should be used instead of the received observation IDs. See the ObserveFields event for an example.

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