org.hipparchus.ode.sampling

## Class AbstractFieldODEStateInterpolator<T extends CalculusFieldElement<T>>

• java.lang.Object
• org.hipparchus.ode.sampling.AbstractFieldODEStateInterpolator<T>
• Type Parameters:
T - the type of the field elements
All Implemented Interfaces:
FieldODEStateInterpolator<T>

public abstract class AbstractFieldODEStateInterpolator<T extends CalculusFieldElement<T>>
extends Object
implements FieldODEStateInterpolator<T>
This abstract class represents an interpolator over the last step during an ODE integration.

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

FieldODEIntegrator, FieldODEStepHandler
• ### Constructor Summary

Constructors
Modifier Constructor and Description
protected  AbstractFieldODEStateInterpolator(boolean isForward, FieldODEStateAndDerivative<T> globalPreviousState, FieldODEStateAndDerivative<T> globalCurrentState, FieldODEStateAndDerivative<T> softPreviousState, FieldODEStateAndDerivative<T> softCurrentState, FieldEquationsMapper<T> equationsMapper)
Simple constructor.
• ### Method Summary

All Methods
Modifier and Type Method and Description
protected abstract FieldODEStateAndDerivative<T> computeInterpolatedStateAndDerivatives(FieldEquationsMapper<T> equationsMapper, T time, T theta, T thetaH, T oneMinusThetaH)
Compute the state and derivatives at the interpolated time.
protected abstract AbstractFieldODEStateInterpolator<T> create(boolean newForward, FieldODEStateAndDerivative<T> newGlobalPreviousState, FieldODEStateAndDerivative<T> newGlobalCurrentState, FieldODEStateAndDerivative<T> newSoftPreviousState, FieldODEStateAndDerivative<T> newSoftCurrentState, FieldEquationsMapper<T> newMapper)
Create a new instance.
FieldODEStateAndDerivative<T> getCurrentState()
Get the state at current grid point time.
FieldODEStateAndDerivative<T> getGlobalCurrentState()
Get the current global grid point state.
FieldODEStateAndDerivative<T> getGlobalPreviousState()
Get the previous global grid point state.
FieldODEStateAndDerivative<T> getInterpolatedState(T time)
Get the state at interpolated time.
protected FieldEquationsMapper<T> getMapper()
Get the mapper for ODE equations primary and secondary components.
FieldODEStateAndDerivative<T> getPreviousState()
Get the state at previous grid point time.
boolean isCurrentStateInterpolated()
Determines if the current state is computed directly by the integrator, or if it is calculated using interpolation.
boolean isForward()
Check if the natural integration direction is forward.
boolean isPreviousStateInterpolated()
Determines if the previous state is computed directly by the integrator, or if it is calculated using interpolation.
AbstractFieldODEStateInterpolator<T> restrictStep(FieldODEStateAndDerivative<T> previousState, FieldODEStateAndDerivative<T> currentState)
Create a new restricted version of the instance.
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Constructor Detail

• #### AbstractFieldODEStateInterpolator

protected AbstractFieldODEStateInterpolator(boolean isForward,
FieldODEStateAndDerivative<T> globalPreviousState,
FieldODEStateAndDerivative<T> globalCurrentState,
FieldODEStateAndDerivative<T> softPreviousState,
FieldODEStateAndDerivative<T> softCurrentState,
FieldEquationsMapper<T> equationsMapper)
Simple constructor.
Parameters:
isForward - integration direction indicator
globalPreviousState - start of the global step
globalCurrentState - end of the global step
softPreviousState - start of the restricted step
softCurrentState - end of the restricted step
equationsMapper - mapper for ODE equations primary and secondary components
• ### Method Detail

• #### restrictStep

public AbstractFieldODEStateInterpolator<T> restrictStep(FieldODEStateAndDerivative<T> previousState,
FieldODEStateAndDerivative<T> currentState)
Create a new restricted version of the instance.

The instance is not changed at all.

Parameters:
previousState - start of the restricted step
currentState - end of the restricted step
Returns:
restricted version of the instance
getPreviousState(), getCurrentState()
• #### create

protected abstract AbstractFieldODEStateInterpolator<T> create(boolean newForward,
FieldODEStateAndDerivative<T> newGlobalPreviousState,
FieldODEStateAndDerivative<T> newGlobalCurrentState,
FieldODEStateAndDerivative<T> newSoftPreviousState,
FieldODEStateAndDerivative<T> newSoftCurrentState,
FieldEquationsMapper<T> newMapper)
Create a new instance.
Parameters:
newForward - integration direction indicator
newGlobalPreviousState - start of the global step
newGlobalCurrentState - end of the global step
newSoftPreviousState - start of the restricted step
newSoftCurrentState - end of the restricted step
newMapper - equations mapper for the all equations
Returns:
a new instance
• #### getGlobalPreviousState

public FieldODEStateAndDerivative<T> getGlobalPreviousState()
Get the previous global grid point state.
Returns:
previous global grid point state
• #### getGlobalCurrentState

public FieldODEStateAndDerivative<T> getGlobalCurrentState()
Get the current global grid point state.
Returns:
current global grid point state
• #### getPreviousState

public FieldODEStateAndDerivative<T> getPreviousState()
Get the state at previous grid point time.
Specified by:
getPreviousState in interface FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
Returns:
state at previous grid point time
• #### isPreviousStateInterpolated

public boolean isPreviousStateInterpolated()
Determines if the previous state is computed directly by the integrator, or if it is calculated using interpolation.

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 interface FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
Returns:
true if the previous state was calculated by the interpolator and false if it was computed directly by the integrator.
• #### getCurrentState

public FieldODEStateAndDerivative<T> getCurrentState()
Get the state at current grid point time.
Specified by:
getCurrentState in interface FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
Returns:
state at current grid point time
• #### isCurrentStateInterpolated

public boolean isCurrentStateInterpolated()
Determines if the current state is computed directly by the integrator, or if it is calculated using interpolation.

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 interface FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
Returns:
true if the current state was calculated by the interpolator and false if it was computed directly by the integrator.
• #### getInterpolatedState

public FieldODEStateAndDerivative<T> getInterpolatedState(T time)
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 interface FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
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 interface FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
Returns:
true if the integration variable (time) increases during integration
• #### getMapper

protected FieldEquationsMapper<T> getMapper()
Get the mapper for ODE equations primary and secondary components.
Returns:
mapper for ODE equations primary and secondary components
• #### computeInterpolatedStateAndDerivatives

protected abstract FieldODEStateAndDerivative<T> computeInterpolatedStateAndDerivatives(FieldEquationsMapper<T> equationsMapper,
T time,
T theta,
T thetaH,
T 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 components
time - interpolation time
theta - 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 time
oneMinusThetaH - 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