Step control
cubie.integrators.step_control
The step control package encapsulates the configuration and compilation
machinery used to build CUDA device functions that manage integrator time-step
selection. Fixed, integral, proportional–integral, proportional–integral–
derivative, and Gustafsson-style predictive controllers share a common
configuration interface that feeds the cubie.CUDAFactory compilation
pipeline.
Controller interfaces
BaseStepController – abstract base for all controllers.
BaseAdaptiveStepController – adds adaptive gain handling.
FixedStepController – returns constant time steps.
AdaptiveIController – integral-only adaptive controller.
AdaptivePIController – proportional–integral controller.
AdaptivePIDController – proportional–integral–derivative controller.
GustafssonController – Gustafsson PI controller variant.
get_controller – resolves controller implementations from settings.
Configuration objects
BaseStepControllerConfig – base attrs configuration shared by all controllers.
AdaptiveStepControlConfig – configuration used by adaptive controllers.
FixedStepControlConfig – fixed-step configuration container.
PIStepControlConfig – proportional–integral gain configuration.
PIDStepControlConfig – proportional–integral–derivative configuration.
GustafssonStepControlConfig – Gustafsson controller configuration.
Dependencies
Relies on
cubie.CUDAFactoryfor compile-time caching of CUDA device functions.Requires Numba CUDA support during runtime to JIT the device controllers.
Pulls validators and clamp helpers from
cubie._utilswhen building device functions.
Suggested controller parameters
The default proportional, integral, and derivative gains mirror the recommendations from Söderlind and Wang while matching the guidance in OrdinaryDiffEq.jl. Common choices include:
Controller |
|
|
|
|---|---|---|---|
basic |
1.00 |
0.00 |
0 |
PI42 |
0.60 |
-0.20 |
0 |
PI33 |
2/3 |
-1/3 |
0 |
PI34 |
0.70 |
-0.40 |
0 |
H211PI |
1/6 |
1/6 |
0 |
H312PID |
1/18 |
1/9 |
1/18 |