|
| 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 |
|
TimescaleTuner & | operator= (TimescaleTuner &&)=default |
|
| TimescaleTuner (const TimescaleTuner &)=default |
|
TimescaleTuner & | operator= (const TimescaleTuner &)=default |
|
const DataVector & | current_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) |
|
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
,
AND
- 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
AND
- the expected change in \(Q\) is less than the threshold: \(|\dot{Q}|\tau < \)
increase_timescale_threshold