FieldFixedStepHandler
into a FieldStepHandler.
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
FieldFixedStepHandler 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 |
FieldStepHandler, FieldFixedStepHandler, StepNormalizerMode, StepNormalizerBounds
| Modifier and Type | Field and Description |
|---|---|
| private final StepNormalizerBounds | bounds
The step normalizer bounds settings to use. |
| private FieldODEStateAndDerivative | first
First step state. |
| private boolean | forward
Integration direction indicator. |
| private double | h
Fixed time step. |
| private final FieldFixedStepHandler | handler
Underlying step handler. |
| private FieldODEStateAndDerivative | last
Last step step. |
| private final StepNormalizerMode | mode
The step normalizer mode to use. |
| Access | Constructor and Description |
|---|---|
| public | FieldStepNormalizer(final double
fixed time step (sign is not used) h, final FieldFixedStepHandler<T> fixed time step handler to wrap handler)Simple constructor. |
| public | FieldStepNormalizer(final double
fixed time step (sign is not used) h, final FieldFixedStepHandler<T> fixed time step handler to wrap handler, final StepNormalizerMode step normalizer mode to use mode)Simple constructor. |
| public | FieldStepNormalizer(final double
fixed time step (sign is not used) h, final FieldFixedStepHandler<T> fixed time step handler to wrap handler, final StepNormalizerBounds step normalizer bounds setting to use bounds)Simple constructor. |
| public | FieldStepNormalizer(final double
fixed time step (sign is not used) h, final FieldFixedStepHandler<T> 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(final boolean
true if the step is the last one isLast)Invokes the underlying step handler for the current normalized step. |
| public void | handleStep(final FieldStepInterpolator<T>
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(final FieldODEStateAndDerivative<T>
initial time, state vector and derivative initialState, final T target time for the integration finalTime)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, final FieldStepInterpolator<T> 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. |
| bounds | back to summary |
|---|---|
| private final StepNormalizerBounds bounds The step normalizer bounds settings to use. | |
| first | back to summary |
|---|---|
| private FieldODEStateAndDerivative<T> first First step state. | |
| 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 FieldFixedStepHandler<T> handler Underlying step handler. | |
| last | back to summary |
|---|---|
| private FieldODEStateAndDerivative<T> last Last step step. | |
| mode | back to summary |
|---|---|
| private final StepNormalizerMode mode The step normalizer mode to use. | |
| FieldStepNormalizer | back to summary |
|---|---|
| public FieldStepNormalizer(final double h, final FieldFixedStepHandler<T> handler) Simple constructor. Uses
| |
| FieldStepNormalizer | back to summary |
|---|---|
| public FieldStepNormalizer(final double h, final FieldFixedStepHandler<T> handler, final StepNormalizerMode mode) Simple constructor. Uses
| |
| FieldStepNormalizer | back to summary |
|---|---|
| public FieldStepNormalizer(final double h, final FieldFixedStepHandler<T> handler, final StepNormalizerBounds bounds) Simple constructor. Uses
| |
| FieldStepNormalizer | back to summary |
|---|---|
| public FieldStepNormalizer(final double h, final FieldFixedStepHandler<T> handler, final StepNormalizerMode mode, final StepNormalizerBounds bounds) Simple constructor.
| |
| doNormalizedStep | back to summary |
|---|---|
| private void doNormalizedStep(final boolean isLast) Invokes the underlying step handler for the current normalized step.
| |
| handleStep | back to summary |
|---|---|
| public void handleStep(final FieldStepInterpolator<T> interpolator, final boolean isLast) throws MaxCountExceededException Implements org. Handle the last accepted step
| |
| init | back to summary |
|---|---|
| public void init(final FieldODEStateAndDerivative<T> initialState, final T finalTime) 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(final T nextTime, final FieldStepInterpolator<T> interpolator) Returns a value indicating whether the next normalized time is in the current step.
| |