SpECTRE  v2023.03.09
TimescaleTuner Class Reference

Manages control system timescales. More...

#include <TimescaleTuner.hpp>


struct  DecreaseFactor
struct  DecreaseThreshold
struct  IncreaseFactor
struct  IncreaseThreshold
struct  InitialTimescales
struct  MaxTimescale
struct  MinTimescale

Public Types

using options = tmpl::list< InitialTimescales, MaxTimescale, MinTimescale, DecreaseThreshold, IncreaseThreshold, IncreaseFactor, DecreaseFactor >

Public Member Functions

 TimescaleTuner (const typename InitialTimescales::type &initial_timescale, double max_timescale, double min_timescale, double decrease_timescale_threshold, double increase_timescale_threshold, double increase_factor, double decrease_factor)
 TimescaleTuner (TimescaleTuner &&)=default
TimescaleTuneroperator= (TimescaleTuner &&)=default
 TimescaleTuner (const TimescaleTuner &)=default
TimescaleTuneroperator= (const TimescaleTuner &)=default
const DataVectorcurrent_timescale () const
 Returns the current timescale for each component of a FunctionOfTime.
void set_timescale_if_in_allowable_range (double suggested_timescale)
 Manually sets all timescales to a specified value, unless the value is outside of the specified minimum and maximum timescale bounds, in which case it is set to the nearest bounded value.
void update_timescale (const std::array< DataVector, 2 > &q_and_dtq)
 The update function responsible for modifying the timescale based on the control system errors.
bool timescales_have_been_set () const
 Return whether the timescales have been set.
void resize_timescales (size_t num_timescales, const std::optional< double > &fill_value=std::nullopt)
 Destructively resize the DataVector of timescales. All previous timescale information will be lost. More...
void pup (PUP::er &p)

Static Public Attributes

static constexpr Options::String help


bool operator== (const TimescaleTuner &lhs, const TimescaleTuner &rhs)

Detailed Description

Manages control system timescales.

The TimescaleTuner adjusts the damping timescale, \(\tau\), of the control system.
The damping timescale is restricted to min_timescale \(\le\tau\le\)max_timescale

The damping time is adjusted according to the following criteria:

Decrease the timescale by a factor of decrease_factor if either

  • the error is too large: \(|Q| >\) decrease_timescale_threshold OR the error is changing quickly: \(|\dot{Q}|\tau >\) decrease_timescale_threshold,
  • the error is growing: \(\dot{Q}Q > 0\) OR the expected change in \(Q\) is less than half its current value: \(|\dot{Q}|\tau < |Q|/2\)

Increase the timescale by a factor of increase_factor if

  • the error is sufficiently small: \(|Q|<\) increase_timescale_threshold
  • the expected change in \(Q\) is less than the threshold: \(|\dot{Q}|\tau < \) increase_timescale_threshold

Member Function Documentation

◆ resize_timescales()

void TimescaleTuner::resize_timescales ( size_t  num_timescales,
const std::optional< double > &  fill_value = std::nullopt 

Destructively resize the DataVector of timescales. All previous timescale information will be lost.

num_timescalesNumber of components to resize to. Can be larger or smaller than the previous size. Must be greater than 0.
fill_valueOptional of what value to use to fill the new timescales. std::nullopt signifies to use the minimum of the initial timescales. Default is std::nullopt.

Member Data Documentation

◆ help

constexpr Options::String TimescaleTuner::help
Initial value:
"TimescaleTuner: stores and dynamically updates the timescales for each "
"component of a particular control system."}

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