|
|
| TimescaleTuner (const typename InitialTimescales::type &initial_timescale, double max_timescale, double min_timescale, double increase_timescale_threshold, double increase_factor, double decrease_timescale_threshold=std::numeric_limits< double >::max(), double decrease_factor=1.0) |
|
| 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.
|
|
void | pup (PUP::er &p) |
template<bool AllowDecrease>
class TimescaleTuner< AllowDecrease >
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
If the template bool AllowDecrease is false, then the check for decreasing the timescale will be ignored. This can be used if something else will be controlling the decrease of the timescale.