FixedStepHandler
into a 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 handleStep method of the underlying
FixedStepHandler object is called at normalized times. The
normalized times can be influenced by the StepNormalizerMode and
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 | Mode |
Bounds | Output |
| 0.3 | 3.1 | forward | INCREMENT | NEITHER | 0.8, 1.3, 1.8, 2.3, 2.8 |
| 0.3 | 3.1 | forward | INCREMENT | FIRST | 0.3, 0.8, 1.3, 1.8, 2.3, 2.8 |
| 0.3 | 3.1 | forward | INCREMENT | LAST | 0.8, 1.3, 1.8, 2.3, 2.8, 3.1 |
| 0.3 | 3.1 | forward | INCREMENT | BOTH | 0.3, 0.8, 1.3, 1.8, 2.3, 2.8, 3.1 |
| 0.3 | 3.1 | forward | MULTIPLES | NEITHER | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.3 | 3.1 | forward | MULTIPLES | FIRST | 0.3, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.3 | 3.1 | forward | MULTIPLES | LAST | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.1 |
| 0.3 | 3.1 | forward | MULTIPLES | BOTH | 0.3, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.1 |
| 0.0 | 3.0 | forward | INCREMENT | NEITHER | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.0 | 3.0 | forward | INCREMENT | FIRST | 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.0 | 3.0 | forward | INCREMENT | LAST | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.0 | 3.0 | forward | INCREMENT | BOTH | 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.0 | 3.0 | forward | MULTIPLES | NEITHER | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.0 | 3.0 | forward | MULTIPLES | FIRST | 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.0 | 3.0 | forward | MULTIPLES | LAST | 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 0.0 | 3.0 | forward | MULTIPLES | BOTH | 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 |
| 3.1 | 0.3 | backward | INCREMENT | NEITHER | 2.6, 2.1, 1.6, 1.1, 0.6 |
| 3.1 | 0.3 | backward | INCREMENT | FIRST | 3.1, 2.6, 2.1, 1.6, 1.1, 0.6 |
| 3.1 | 0.3 | backward | INCREMENT | LAST | 2.6, 2.1, 1.6, 1.1, 0.6, 0.3 |
| 3.1 | 0.3 | backward | INCREMENT | BOTH | 3.1, 2.6, 2.1, 1.6, 1.1, 0.6, 0.3 |
| 3.1 | 0.3 | backward | MULTIPLES | NEITHER | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5 |
| 3.1 | 0.3 | backward | MULTIPLES | FIRST | 3.1, 3.0, 2.5, 2.0, 1.5, 1.0, 0.5 |
| 3.1 | 0.3 | backward | MULTIPLES | LAST | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.3 |
| 3.1 | 0.3 | backward | MULTIPLES | BOTH | 3.1, 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.3 |
| 3.0 | 0.0 | backward | INCREMENT | NEITHER | 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
| 3.0 | 0.0 | backward | INCREMENT | FIRST | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
| 3.0 | 0.0 | backward | INCREMENT | LAST | 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
| 3.0 | 0.0 | backward | INCREMENT | BOTH | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
| 3.0 | 0.0 | backward | MULTIPLES | NEITHER | 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
| 3.0 | 0.0 | backward | MULTIPLES | FIRST | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
| 3.0 | 0.0 | backward | MULTIPLES | LAST | 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
| 3.0 | 0.0 | backward | MULTIPLES | BOTH | 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0 |
StepHandler, FixedStepHandler, StepNormalizerMode, StepNormalizerBounds
| Modifier and Type | Field and Description |
|---|---|
| private final StepNormalizerBounds | bounds
The step normalizer bounds settings to use. |
| private double | firstTime
First step time. |
| private boolean | forward
Integration direction indicator. |
| private double | h
Fixed time step. |
| private final FixedStepHandler | handler
Underlying step handler. |
| private double[] | lastDerivatives
Last derivatives vector. |
| private double[] | lastState
Last state vector. |
| private double | lastTime
Last step time. |
| private final StepNormalizerMode | mode
The step normalizer mode to use. |
| Access | Constructor and Description |
|---|---|
| public | StepNormalizer(final double
fixed time step (sign is not used) h, final FixedStepHandler fixed time step handler to wrap handler)Simple constructor. |
| public | StepNormalizer(final double
fixed time step (sign is not used) h, final FixedStepHandler fixed time step handler to wrap handler, final StepNormalizerMode step normalizer mode to use mode)Simple constructor. |
| public | StepNormalizer(final double
fixed time step (sign is not used) h, final FixedStepHandler fixed time step handler to wrap handler, final StepNormalizerBounds step normalizer bounds setting to use bounds)Simple constructor. |
| public | StepNormalizer(final double
fixed time step (sign is not used) h, final FixedStepHandler fixed time step handler to wrap handler, final StepNormalizerMode step normalizer mode to use mode, final StepNormalizerBounds step normalizer bounds setting to use bounds)Simple constructor. |
| Modifier and Type | Method and Description |
|---|---|
| private void | doNormalizedStep(boolean
true if the step is the last one isLast)Invokes the underlying step handler for the current normalized step. |
| public void | handleStep(final StepInterpolator
interpolator for the last accepted step. For
efficiency purposes, the various integrators reuse the same
object on each call, so if the instance wants to keep it across
all calls (for example to provide at the end of the integration a
continuous model valid throughout the integration range), it
should build a local copy using the clone method and store this
copy. interpolator, final boolean true if the step is the last one isLast)Implements org. Handle the last accepted step |
| public void | init(double
start value of the independent time variable t0, double[] array containing the start value of the state vector y0, double target time for the integration t)Implements org. Initialize step handler at the start of an ODE integration. |
| private boolean | Returns: value indicating whether the next normalized time is in the current stepthe next normalized time nextTime, StepInterpolator interpolator for the last accepted step, to use to
get the end time of the current step interpolator)Returns a value indicating whether the next normalized time is in the current step. |
| private void | storeStep(StepInterpolator
interpolator for the last accepted step, to use to
get the interpolated information interpolator, double the time for which to store the interpolated information t)Stores the interpolated information for the given time in the current state. |
| bounds | back to summary |
|---|---|
| private final StepNormalizerBounds bounds The step normalizer bounds settings to use. | |
| firstTime | back to summary |
|---|---|
| private double firstTime First step time. | |
| forward | back to summary |
|---|---|
| private boolean forward Integration direction indicator. | |
| h | back to summary |
|---|---|
| private double h Fixed time step. | |
| handler | back to summary |
|---|---|
| private final FixedStepHandler handler Underlying step handler. | |
| lastDerivatives | back to summary |
|---|---|
| private double[] lastDerivatives Last derivatives vector. | |
| lastState | back to summary |
|---|---|
| private double[] lastState Last state vector. | |
| lastTime | back to summary |
|---|---|
| private double lastTime Last step time. | |
| mode | back to summary |
|---|---|
| private final StepNormalizerMode mode The step normalizer mode to use. | |
| StepNormalizer | back to summary |
|---|---|
| public StepNormalizer(final double h, final FixedStepHandler handler) Simple constructor. Uses
| |
| StepNormalizer | back to summary |
|---|---|
| public StepNormalizer(final double h, final FixedStepHandler handler, final StepNormalizerMode mode) Simple constructor. Uses
| |
| StepNormalizer | back to summary |
|---|---|
| public StepNormalizer(final double h, final FixedStepHandler handler, final StepNormalizerBounds bounds) Simple constructor. Uses
| |
| StepNormalizer | back to summary |
|---|---|
| public StepNormalizer(final double h, final FixedStepHandler handler, final StepNormalizerMode mode, final StepNormalizerBounds bounds) Simple constructor.
| |
| doNormalizedStep | back to summary |
|---|---|
| private void doNormalizedStep(boolean isLast) Invokes the underlying step handler for the current normalized step.
| |
| handleStep | back to summary |
|---|---|
| public void handleStep(final StepInterpolator interpolator, final boolean isLast) throws MaxCountExceededException Implements org. Handle the last accepted step
| |
| init | back to summary |
|---|---|
| public void init(double t0, double[] y0, double t) Implements org. Doc from org. Initialize step handler at the start of an ODE integration. This method is called once at the start of the integration. It may be used by the step handler to initialize some internal data if needed.
| |
| isNextInStep | back to summary |
|---|---|
| private boolean isNextInStep(double nextTime, StepInterpolator interpolator) Returns a value indicating whether the next normalized time is in the current step.
| |
| storeStep | back to summary |
|---|---|
| private void storeStep(StepInterpolator interpolator, double t) throws MaxCountExceededException Stores the interpolated information for the given time in the current state.
| |