Top Description Fields Constructors Methods
org.apache.commons.math3.ode.sampling

public Class FieldStepNormalizer<T extends RealFieldElement<T>>

extends Object
implements FieldStepHandler<T extends RealFieldElement<T>>
Class Inheritance
All Implemented Interfaces
org.apache.commons.math3.ode.sampling.FieldStepHandler
Type Parameters
<T>
the type of the field elements
Imports
org.apache.commons.math3.RealFieldElement, org.apache.commons.math3.exception.MaxCountExceededException, org.apache.commons.math3.ode.FieldODEStateAndDerivative, org.apache.commons.math3.util.FastMath, .Precision

This class wraps an object implementing 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 timeEnd time DirectionMode BoundsOutput
0.33.1forwardINCREMENTNEITHER0.8, 1.3, 1.8, 2.3, 2.8
0.33.1forwardINCREMENTFIRST0.3, 0.8, 1.3, 1.8, 2.3, 2.8
0.33.1forwardINCREMENTLAST0.8, 1.3, 1.8, 2.3, 2.8, 3.1
0.33.1forwardINCREMENTBOTH0.3, 0.8, 1.3, 1.8, 2.3, 2.8, 3.1
0.33.1forwardMULTIPLESNEITHER0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.33.1forwardMULTIPLESFIRST0.3, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.33.1forwardMULTIPLESLAST0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.1
0.33.1forwardMULTIPLESBOTH0.3, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.1
0.03.0forwardINCREMENTNEITHER0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.03.0forwardINCREMENTFIRST0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.03.0forwardINCREMENTLAST0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.03.0forwardINCREMENTBOTH0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.03.0forwardMULTIPLESNEITHER0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.03.0forwardMULTIPLESFIRST0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.03.0forwardMULTIPLESLAST0.5, 1.0, 1.5, 2.0, 2.5, 3.0
0.03.0forwardMULTIPLESBOTH0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0
3.10.3backwardINCREMENTNEITHER2.6, 2.1, 1.6, 1.1, 0.6
3.10.3backwardINCREMENTFIRST3.1, 2.6, 2.1, 1.6, 1.1, 0.6
3.10.3backwardINCREMENTLAST2.6, 2.1, 1.6, 1.1, 0.6, 0.3
3.10.3backwardINCREMENTBOTH3.1, 2.6, 2.1, 1.6, 1.1, 0.6, 0.3
3.10.3backwardMULTIPLESNEITHER3.0, 2.5, 2.0, 1.5, 1.0, 0.5
3.10.3backwardMULTIPLESFIRST3.1, 3.0, 2.5, 2.0, 1.5, 1.0, 0.5
3.10.3backwardMULTIPLESLAST3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.3
3.10.3backwardMULTIPLESBOTH3.1, 3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.3
3.00.0backwardINCREMENTNEITHER2.5, 2.0, 1.5, 1.0, 0.5, 0.0
3.00.0backwardINCREMENTFIRST3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0
3.00.0backwardINCREMENTLAST2.5, 2.0, 1.5, 1.0, 0.5, 0.0
3.00.0backwardINCREMENTBOTH3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0
3.00.0backwardMULTIPLESNEITHER2.5, 2.0, 1.5, 1.0, 0.5, 0.0
3.00.0backwardMULTIPLESFIRST3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0
3.00.0backwardMULTIPLESLAST2.5, 2.0, 1.5, 1.0, 0.5, 0.0
3.00.0backwardMULTIPLESBOTH3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0

Since
3.6
See Also
FieldStepHandler, FieldFixedStepHandler, StepNormalizerMode, StepNormalizerBounds

Field Summary

Modifier and TypeField and Description
private final StepNormalizerBounds
bounds

The step normalizer bounds settings to use.

private FieldODEStateAndDerivative<T>
first

First step state.

private boolean
forward

Integration direction indicator.

private double
h

Fixed time step.

private final FieldFixedStepHandler<T>
handler

Underlying step handler.

private FieldODEStateAndDerivative<T>
last

Last step step.

private final StepNormalizerMode
mode

The step normalizer mode to use.

Constructor Summary

AccessConstructor 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.

Method Summary

Modifier and TypeMethod 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.apache.commons.math3.ode.sampling.FieldStepHandler.handleStep.

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.apache.commons.math3.ode.sampling.FieldStepHandler.init.

Initialize step handler at the start of an ODE integration.

private boolean

Returns:

value indicating whether the next normalized time is in the current step
isNextInStep
(final T
the 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.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

boundsback to summary
private final StepNormalizerBounds bounds

The step normalizer bounds settings to use.

firstback to summary
private FieldODEStateAndDerivative<T> first

First step state.

forwardback to summary
private boolean forward

Integration direction indicator.

hback to summary
private double h

Fixed time step.

handlerback to summary
private final FieldFixedStepHandler<T> handler

Underlying step handler.

lastback to summary
private FieldODEStateAndDerivative<T> last

Last step step.

modeback to summary
private final StepNormalizerMode mode

The step normalizer mode to use.

Constructor Detail

FieldStepNormalizerback to summary
public FieldStepNormalizer(final double h, final FieldFixedStepHandler<T> handler)

Simple constructor. Uses INCREMENT mode, and FIRST bounds setting, for backwards compatibility.

Parameters
h:double

fixed time step (sign is not used)

handler:FieldFixedStepHandler<T>

fixed time step handler to wrap

FieldStepNormalizerback to summary
public FieldStepNormalizer(final double h, final FieldFixedStepHandler<T> handler, final StepNormalizerMode mode)

Simple constructor. Uses FIRST bounds setting.

Parameters
h:double

fixed time step (sign is not used)

handler:FieldFixedStepHandler<T>

fixed time step handler to wrap

mode:StepNormalizerMode

step normalizer mode to use

Since
3.0
FieldStepNormalizerback to summary
public FieldStepNormalizer(final double h, final FieldFixedStepHandler<T> handler, final StepNormalizerBounds bounds)

Simple constructor. Uses INCREMENT mode.

Parameters
h:double

fixed time step (sign is not used)

handler:FieldFixedStepHandler<T>

fixed time step handler to wrap

bounds:StepNormalizerBounds

step normalizer bounds setting to use

Since
3.0
FieldStepNormalizerback to summary
public FieldStepNormalizer(final double h, final FieldFixedStepHandler<T> handler, final StepNormalizerMode mode, final StepNormalizerBounds bounds)

Simple constructor.

Parameters
h:double

fixed time step (sign is not used)

handler:FieldFixedStepHandler<T>

fixed time step handler to wrap

mode:StepNormalizerMode

step normalizer mode to use

bounds:StepNormalizerBounds

step normalizer bounds setting to use

Since
3.0

Method Detail

doNormalizedStepback to summary
private void doNormalizedStep(final boolean isLast)

Invokes the underlying step handler for the current normalized step.

Parameters
isLast:boolean

true if the step is the last one

handleStepback to summary
public void handleStep(final FieldStepInterpolator<T> interpolator, final boolean isLast) throws MaxCountExceededException

Implements org.apache.commons.math3.ode.sampling.FieldStepHandler.handleStep.

Handle the last accepted step

Parameters
interpolator: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.

isLast:boolean

true if the step is the last one

Exceptions
MaxCountExceededException:
if the interpolator throws one because the number of functions evaluations is exceeded
initback to summary
public void init(final FieldODEStateAndDerivative<T> initialState, final T finalTime)

Implements org.apache.commons.math3.ode.sampling.FieldStepHandler.init.

Doc from org.apache.commons.math3.ode.sampling.FieldStepHandler.init.

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.

Parameters
initialState:FieldODEStateAndDerivative<T>

initial time, state vector and derivative

finalTime:T

target time for the integration

isNextInStepback 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.

Parameters
nextTime:T

the next normalized time

interpolator:FieldStepInterpolator<T>

interpolator for the last accepted step, to use to get the end time of the current step

Returns:boolean

value indicating whether the next normalized time is in the current step