This class wraps an object implementing {@link FixedStepHandler}into a {@link StepHandler}.
This wrapper allows to use fixed step handlers with general integrators which cannot guaranty their integration steps will remain constant and therefore only accept general step handlers.
The stepsize used is selected at construction time. The {@link FixedStepHandler#handleStep handleStep} method of the underlying{@link FixedStepHandler} object is called at normalized times. Thenormalized times can be influenced by the {@link StepNormalizerMode} and{@link StepNormalizerBounds}.
There is no constraint on the integrator, it can use any time step it needs (time steps longer or shorter than the fixed time step and non-integer ratios are all allowed).
Examples (step size = 0.5) |
Start time | End time | Direction | {@link StepNormalizerMode Mode} | {@link StepNormalizerBounds Bounds} | Output |
0.3 | 3.1 | forward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#NEITHER NEITHER} | 0.8, 1.3, 1.8, 2.3, 2.8 |
0.3 | 3.1 | forward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#FIRST FIRST} | 0.3, 0.8, 1.3, 1.8, 2.3, 2.8 |
0.3 | 3.1 | forward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#LAST LAST} | 0.8, 1.3, 1.8, 2.3, 2.8, 3.1 |
0.3 | 3.1 | forward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#BOTH BOTH} | 0.3, 0.8, 1.3, 1.8, 2.3, 2.8, 3.1 |
0.3 | 3.1 | forward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#NEITHER NEITHER} | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.3 | 3.1 | forward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#FIRST FIRST} | 0.3, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.3 | 3.1 | forward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#LAST LAST} | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.1 |
0.3 | 3.1 | forward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#BOTH BOTH} | 0.3, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.1 |
0.0 | 3.0 | forward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#NEITHER NEITHER} | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.0 | 3.0 | forward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#FIRST FIRST} | 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.0 | 3.0 | forward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#LAST LAST} | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.0 | 3.0 | forward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#BOTH BOTH} | 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.0 | 3.0 | forward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#NEITHER NEITHER} | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.0 | 3.0 | forward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#FIRST FIRST} | 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.0 | 3.0 | forward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#LAST LAST} | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
0.0 | 3.0 | forward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#BOTH BOTH} | 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
3.1 | 0.3 | backward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#NEITHER NEITHER} | 2.6, 2.1, 1.6, 1.1, 0.6 |
3.1 | 0.3 | backward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#FIRST FIRST} | 3.1, 2.6, 2.1, 1.6, 1.1, 0.6 |
3.1 | 0.3 | backward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#LAST LAST} | 2.6, 2.1, 1.6, 1.1, 0.6, 0.3 |
3.1 | 0.3 | backward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#BOTH BOTH} | 3.1, 2.6, 2.1, 1.6, 1.1, 0.6, 0.3 |
3.1 | 0.3 | backward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#NEITHER NEITHER} | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5 |
3.1 | 0.3 | backward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#FIRST FIRST} | 3.1, 3.0, 2.5, 2.0, 1.5, 1.0, 0.5 |
3.1 | 0.3 | backward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#LAST LAST} | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.3 |
3.1 | 0.3 | backward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#BOTH BOTH} | 3.1, 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.3 |
3.0 | 0.0 | backward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#NEITHER NEITHER} | 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
3.0 | 0.0 | backward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#FIRST FIRST} | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
3.0 | 0.0 | backward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#LAST LAST} | 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
3.0 | 0.0 | backward | {@link StepNormalizerMode#INCREMENT INCREMENT} | {@link StepNormalizerBounds#BOTH BOTH} | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
3.0 | 0.0 | backward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#NEITHER NEITHER} | 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
3.0 | 0.0 | backward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#FIRST FIRST} | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
3.0 | 0.0 | backward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#LAST LAST} | 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
3.0 | 0.0 | backward | {@link StepNormalizerMode#MULTIPLES MULTIPLES} | {@link StepNormalizerBounds#BOTH BOTH} | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
@see StepHandler
@see FixedStepHandler
@see StepNormalizerMode
@see StepNormalizerBounds
@since 1.2