Class ThreeEighthesFieldStepInterpolator<T extends RealFieldElement<T>>

Type Parameters:
T - the type of the field elements
All Implemented Interfaces:
FieldStepInterpolator<T>

class ThreeEighthesFieldStepInterpolator<T extends RealFieldElement<T>> extends RungeKuttaFieldStepInterpolator<T>
This class implements a step interpolator for the 3/8 fourth order Runge-Kutta integrator.

This interpolator allows to compute dense output inside the last step computed. The interpolation equation is consistent with the integration scheme :

  • Using reference point at step start:
    y(tn + θ h) = y (tn) + θ (h/8) [ (8 - 15 θ + 8 θ2) y'1 + 3 * (15 θ - 12 θ2) y'2 + 3 θ y'3 + (-3 θ + 4 θ2) y'4 ]
  • Using reference point at step end:
    y(tn + θ h) = y (tn + h) - (1 - θ) (h/8) [(1 - 7 θ + 8 θ2) y'1 + 3 (1 + θ - 4 θ2) y'2 + 3 (1 + θ) y'3 + (1 + θ + 4 θ2) y'4 ]

where θ belongs to [0 ; 1] and where y'1 to y'4 are the four evaluations of the derivatives already computed during the step.

Since:
3.6
See Also:
  • Constructor Details

    • ThreeEighthesFieldStepInterpolator

      ThreeEighthesFieldStepInterpolator(Field<T> field, boolean forward, T[][] yDotK, FieldODEStateAndDerivative<T> globalPreviousState, FieldODEStateAndDerivative<T> globalCurrentState, FieldODEStateAndDerivative<T> softPreviousState, FieldODEStateAndDerivative<T> softCurrentState, FieldEquationsMapper<T> mapper)
      Simple constructor.
      Parameters:
      field - field to which the time and state vector elements belong
      forward - integration direction indicator
      yDotK - slopes at the intermediate points
      globalPreviousState - start of the global step
      globalCurrentState - end of the global step
      softPreviousState - start of the restricted step
      softCurrentState - end of the restricted step
      mapper - equations mapper for the all equations
  • Method Details

    • create

      protected ThreeEighthesFieldStepInterpolator<T> create(Field<T> newField, boolean newForward, T[][] newYDotK, FieldODEStateAndDerivative<T> newGlobalPreviousState, FieldODEStateAndDerivative<T> newGlobalCurrentState, FieldODEStateAndDerivative<T> newSoftPreviousState, FieldODEStateAndDerivative<T> newSoftCurrentState, FieldEquationsMapper<T> newMapper)
      Create a new instance.
      Specified by:
      create in class RungeKuttaFieldStepInterpolator<T extends RealFieldElement<T>>
      Parameters:
      newField - field to which the time and state vector elements belong
      newForward - integration direction indicator
      newYDotK - slopes at the intermediate points
      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
    • computeInterpolatedStateAndDerivatives

      protected FieldODEStateAndDerivative<T> computeInterpolatedStateAndDerivatives(FieldEquationsMapper<T> mapper, T time, T theta, T thetaH, T oneMinusThetaH)
      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.
      Specified by:
      computeInterpolatedStateAndDerivatives in class AbstractFieldStepInterpolator<T extends RealFieldElement<T>>
      Parameters:
      mapper - 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