Class AbstractODEStateInterpolator
 All Implemented Interfaces:
Serializable
,ODEStateInterpolator
The various ODE integrators provide objects extending this class to the step handlers. The handlers can use these objects to retrieve the state vector at intermediate times between the previous and the current grid points (dense output).
 See Also:

Constructor Summary
ModifierConstructorDescriptionprotected
AbstractODEStateInterpolator
(boolean isForward, ODEStateAndDerivative globalPreviousState, ODEStateAndDerivative globalCurrentState, ODEStateAndDerivative softPreviousState, ODEStateAndDerivative softCurrentState, EquationsMapper equationsMapper) Simple constructor. 
Method Summary
Modifier and TypeMethodDescriptionprotected abstract ODEStateAndDerivative
computeInterpolatedStateAndDerivatives
(EquationsMapper equationsMapper, double time, double theta, double thetaH, double oneMinusThetaH) Compute the state and derivatives at the interpolated time.protected abstract AbstractODEStateInterpolator
create
(boolean newForward, ODEStateAndDerivative newGlobalPreviousState, ODEStateAndDerivative newGlobalCurrentState, ODEStateAndDerivative newSoftPreviousState, ODEStateAndDerivative newSoftCurrentState, EquationsMapper newMapper) Create a new instance.Get the state at current grid point time.Get the current global grid point state.Get the previous global grid point state.getInterpolatedState
(double time) Get the state at interpolated time.protected EquationsMapper
Get the mapper for ODE equations primary and secondary components.Get the state at previous grid point time.boolean
Determines if thecurrent state
is computed directly by the integrator, or if it is calculated usinginterpolation
.boolean
Check if the natural integration direction is forward.boolean
Determines if theprevious state
is computed directly by the integrator, or if it is calculated usinginterpolation
.restrictStep
(ODEStateAndDerivative previousState, ODEStateAndDerivative currentState) Create a new restricted version of the instance.

Constructor Details

AbstractODEStateInterpolator
protected AbstractODEStateInterpolator(boolean isForward, ODEStateAndDerivative globalPreviousState, ODEStateAndDerivative globalCurrentState, ODEStateAndDerivative softPreviousState, ODEStateAndDerivative softCurrentState, EquationsMapper equationsMapper) Simple constructor. Parameters:
isForward
 integration direction indicatorglobalPreviousState
 start of the global stepglobalCurrentState
 end of the global stepsoftPreviousState
 start of the restricted stepsoftCurrentState
 end of the restricted stepequationsMapper
 mapper for ODE equations primary and secondary components


Method Details

restrictStep
public AbstractODEStateInterpolator restrictStep(ODEStateAndDerivative previousState, ODEStateAndDerivative currentState) Create a new restricted version of the instance.The instance is not changed at all.
 Parameters:
previousState
 start of the restricted stepcurrentState
 end of the restricted step Returns:
 restricted version of the instance
 See Also:

create
protected abstract AbstractODEStateInterpolator create(boolean newForward, ODEStateAndDerivative newGlobalPreviousState, ODEStateAndDerivative newGlobalCurrentState, ODEStateAndDerivative newSoftPreviousState, ODEStateAndDerivative newSoftCurrentState, EquationsMapper newMapper) Create a new instance. Parameters:
newForward
 integration direction indicatornewGlobalPreviousState
 start of the global stepnewGlobalCurrentState
 end of the global stepnewSoftPreviousState
 start of the restricted stepnewSoftCurrentState
 end of the restricted stepnewMapper
 equations mapper for the all equations Returns:
 a new instance

getGlobalPreviousState
Get the previous global grid point state. Returns:
 previous global grid point state

getGlobalCurrentState
Get the current global grid point state. Returns:
 current global grid point state

getPreviousState
Get the state at previous grid point time. Specified by:
getPreviousState
in interfaceODEStateInterpolator
 Returns:
 state at previous grid point time

isPreviousStateInterpolated
public boolean isPreviousStateInterpolated()Determines if theprevious state
is computed directly by the integrator, or if it is calculated usinginterpolation
.Typically the previous state is directly computed by the integrator, but when events are detected the steps are shortened so that events occur on step boundaries which means the previous state may be computed by the interpolator.
 Specified by:
isPreviousStateInterpolated
in interfaceODEStateInterpolator
 Returns:
true
if the previous state was calculated by the interpolator and false if it was computed directly by the integrator.

getCurrentState
Get the state at current grid point time. Specified by:
getCurrentState
in interfaceODEStateInterpolator
 Returns:
 state at current grid point time

isCurrentStateInterpolated
public boolean isCurrentStateInterpolated()Determines if thecurrent state
is computed directly by the integrator, or if it is calculated usinginterpolation
.Typically the current state is directly computed by the integrator, but when events are detected the steps are shortened so that events occur on step boundaries which means the current state may be computed by the interpolator.
 Specified by:
isCurrentStateInterpolated
in interfaceODEStateInterpolator
 Returns:
true
if the current state was calculated by the interpolator and false if it was computed directly by the integrator.

getInterpolatedState
Get the state at interpolated time.Setting the time outside of the current step is allowed, but should be used with care since the accuracy of the interpolator will probably be very poor far from this step. This allowance has been added to simplify implementation of search algorithms near the step endpoints.
 Specified by:
getInterpolatedState
in interfaceODEStateInterpolator
 Parameters:
time
 time of the interpolated point Returns:
 state at interpolated time

isForward
public boolean isForward()Check if the natural integration direction is forward.This method provides the integration direction as specified by the integrator itself, it avoid some nasty problems in degenerated cases like null steps due to cancellation at step initialization, step control or discrete events triggering.
 Specified by:
isForward
in interfaceODEStateInterpolator
 Returns:
 true if the integration variable (time) increases during integration

getMapper
Get the mapper for ODE equations primary and secondary components. Returns:
 mapper for ODE equations primary and secondary components

computeInterpolatedStateAndDerivatives
protected abstract ODEStateAndDerivative computeInterpolatedStateAndDerivatives(EquationsMapper equationsMapper, double time, double theta, double thetaH, double oneMinusThetaH) throws MathIllegalStateException Compute the state and derivatives at the interpolated time. This is the main processing method that should be implemented by the derived classes to perform the interpolation. Parameters:
equationsMapper
 mapper for ODE equations primary and secondary componentstime
 interpolation timetheta
 normalized interpolation abscissa within the step (theta is zero at the previous time step and one at the current time step)thetaH
 time gap between the previous time and the interpolated timeoneMinusThetaH
 time gap between the interpolated time and the current time Returns:
 interpolated state and derivatives
 Throws:
MathIllegalStateException
 if the number of functions evaluations is exceeded
