SpECTRE  v2024.09.29
control_system::Actions::LimitTimeStep< ControlSystems > Struct Template Reference

Limit the step size in a GTS evolution to prevent deadlocks from control system measurements. More...

#include <LimitTimeStep.hpp>

Public Types

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

Static Public Member Functions

template<typename DbTagsList , typename... InboxTags, typename Metavariables , size_t Dim, typename ActionList , typename ParallelComponent >
static Parallel::iterable_action_return_t apply (db::DataBox< DbTagsList > &box, const tuples::TaggedTuple< InboxTags... > &, Parallel::GlobalCache< Metavariables > &cache, const ElementId< Dim > &array_index, ActionList, const ParallelComponent *const)
 

Detailed Description

template<typename ControlSystems>
struct control_system::Actions::LimitTimeStep< ControlSystems >

Limit the step size in a GTS evolution to prevent deadlocks from control system measurements.

Details

Most time steppers require evaluations of the coordinates at several times during the step before they can produce dense output. If any of those evaluations require a function-of-time update depending on a measurement within the step, the evolution will deadlock. This action reduces the step size if necessary to prevent that from happening.

Specifically:

  1. The chosen step will never be longer than the unmodified step, and will be short enough to avoid relevant function-of-time expirations.
  2. Given the previous, the step will cover as many control-system updates as possible.
  3. If the next step is likely to be limited by this action, adjust the length of the current step so that this step and the next step will be as close as possible to the same size.

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