org.apache.commons.math3.ode.nonstiff

## Class DormandPrince54StepInterpolator

- java.lang.Object
- - org.apache.commons.math3.ode.sampling.AbstractStepInterpolator
  - - org.apache.commons.math3.ode.nonstiff.RungeKuttaStepInterpolator
    - - org.apache.commons.math3.ode.nonstiff.DormandPrince54StepInterpolator

All Implemented Interfaces:
  Externalizable, Serializable, StepInterpolator

     class DormandPrince54StepInterpolator
    extends RungeKuttaStepInterpolator

This class represents an interpolator over the last step during an ODE integration for the 5(4) Dormand-Prince integrator.

Since:
  1.2
Version:
  $Id: DormandPrince54StepInterpolator.java 1416643 2012-12-03 19:37:14Z tn $
See Also:
  `DormandPrince54Integrator`

### Field Summary

Fields
`private static double` `A70` Last row of the Butcher-array internal weights, element 0.
`private static double` `A72` Last row of the Butcher-array internal weights, element 2.
`private static double` `A73` Last row of the Butcher-array internal weights, element 3.
`private static double` `A74` Last row of the Butcher-array internal weights, element 4.
`private static double` `A75` Last row of the Butcher-array internal weights, element 5.
`private static double` `D0` Shampine (1986) Dense output, element 0.
`private static double` `D2` Shampine (1986) Dense output, element 2.
`private static double` `D3` Shampine (1986) Dense output, element 3.
`private static double` `D4` Shampine (1986) Dense output, element 4.
`private static double` `D5` Shampine (1986) Dense output, element 5.
`private static double` `D6` Shampine (1986) Dense output, element 6.
`private static long` `serialVersionUID` Serializable version identifier.
`private double[]` `v1` First vector for interpolation.
`private double[]` `v2` Second vector for interpolation.
`private double[]` `v3` Third vector for interpolation.
`private double[]` `v4` Fourth vector for interpolation.
`private boolean` `vectorsInitialized` Initialization indicator for the interpolation vectors.

### Fields inherited from class org.apache.commons.math3.ode.nonstiff.RungeKuttaStepInterpolator

`integrator, previousState, yDotK`

### Fields inherited from class org.apache.commons.math3.ode.sampling.AbstractStepInterpolator

`currentState, h, interpolatedDerivatives, interpolatedPrimaryDerivatives, interpolatedPrimaryState, interpolatedSecondaryDerivatives, interpolatedSecondaryState, interpolatedState, interpolatedTime`

### Constructor Summary

Constructors
Constructor and Description
`DormandPrince54StepInterpolator()` Simple constructor.
`DormandPrince54StepInterpolator(DormandPrince54StepInterpolator interpolator)` Copy constructor.

### Method Summary

Methods
`protected void` `computeInterpolatedStateAndDerivatives(double theta, double oneMinusThetaH)` Compute the state and derivatives at the interpolated time.
`protected StepInterpolator` `doCopy()` Really copy the finalized instance.
`void` `reinitialize(AbstractIntegrator integrator, double[] y, double[][] yDotK, boolean forward, EquationsMapper primaryMapper, EquationsMapper[] secondaryMappers)` Reinitialize the instance
`void` `storeTime(double t)` Store the current step time.

### Methods inherited from class org.apache.commons.math3.ode.nonstiff.RungeKuttaStepInterpolator

`readExternal, shift, writeExternal`

### Methods inherited from class org.apache.commons.math3.ode.sampling.AbstractStepInterpolator

`copy, doFinalize, finalizeStep, getCurrentTime, getGlobalCurrentTime, getGlobalPreviousTime, getInterpolatedDerivatives, getInterpolatedSecondaryDerivatives, getInterpolatedSecondaryState, getInterpolatedState, getInterpolatedTime, getPreviousTime, isForward, readBaseExternal, reinitialize, setInterpolatedTime, setSoftCurrentTime, setSoftPreviousTime, writeBaseExternal`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### A70

    private static final double A70

Last row of the Butcher-array internal weights, element 0.

See Also:
  Constant Field Values

#### A72

    private static final double A72

Last row of the Butcher-array internal weights, element 2.

See Also:
  Constant Field Values

#### A73

    private static final double A73

Last row of the Butcher-array internal weights, element 3.

See Also:
  Constant Field Values

#### A74

    private static final double A74

Last row of the Butcher-array internal weights, element 4.

See Also:
  Constant Field Values

#### A75

    private static final double A75

Last row of the Butcher-array internal weights, element 5.

See Also:
  Constant Field Values

#### D0

    private static final double D0

Shampine (1986) Dense output, element 0.

See Also:
  Constant Field Values

#### D2

    private static final double D2

Shampine (1986) Dense output, element 2.

See Also:
  Constant Field Values

#### D3

    private static final double D3

Shampine (1986) Dense output, element 3.

See Also:
  Constant Field Values

#### D4

    private static final double D4

Shampine (1986) Dense output, element 4.

See Also:
  Constant Field Values

#### D5

    private static final double D5

Shampine (1986) Dense output, element 5.

See Also:
  Constant Field Values

#### D6

    private static final double D6

Shampine (1986) Dense output, element 6.

See Also:
  Constant Field Values

#### serialVersionUID

    private static final long serialVersionUID

Serializable version identifier.

See Also:
  Constant Field Values

#### v1

    private double[] v1

First vector for interpolation.

#### v2

    private double[] v2

Second vector for interpolation.

#### v3

    private double[] v3

Third vector for interpolation.

#### v4

    private double[] v4

Fourth vector for interpolation.

#### vectorsInitialized

    private boolean vectorsInitialized

Initialization indicator for the interpolation vectors.

### Constructor Detail

#### DormandPrince54StepInterpolator

    public DormandPrince54StepInterpolator()

Simple constructor. This constructor builds an instance that is not usable yet, the `reinitialize(org.apache.commons.math3.ode.AbstractIntegrator, double[], double[][], boolean, org.apache.commons.math3.ode.EquationsMapper, org.apache.commons.math3.ode.EquationsMapper[])` method should be called before using the instance in order to initialize the internal arrays. This constructor is used only in order to delay the initialization in some cases. The `EmbeddedRungeKuttaIntegrator` uses the prototyping design pattern to create the step interpolators by cloning an uninitialized model and latter initializing the copy.

#### DormandPrince54StepInterpolator

    public DormandPrince54StepInterpolator(DormandPrince54StepInterpolator interpolator)

Copy constructor.

Parameters:
  `interpolator` - interpolator to copy from. The copy is a deep copy: its arrays are separated from the original arrays of the instance

### Method Detail

#### doCopy

    protected StepInterpolator doCopy()

Really copy the finalized instance.

This method is called by `AbstractStepInterpolator.copy()` after the step has been finalized. It must perform a deep copy to have an new instance completely independent for the original instance.

Specified by:
  `doCopy` in class `AbstractStepInterpolator`
Returns:
  a copy of the finalized instance

#### reinitialize

    public void reinitialize(AbstractIntegrator integrator,
                    double[] y,
                    double[][] yDotK,
                    boolean forward,
                    EquationsMapper primaryMapper,
                    EquationsMapper[] secondaryMappers)

Reinitialize the instance

Some Runge-Kutta integrators need fewer functions evaluations than their counterpart step interpolators. So the interpolator should perform the last evaluations they need by themselves. The `RungeKuttaIntegrator` and `EmbeddedRungeKuttaIntegrator` abstract classes call this method in order to let the step interpolator perform the evaluations it needs. These evaluations will be performed during the call to `doFinalize` if any, i.e. only if the step handler either calls the `finalizeStep` method or the `getInterpolatedState` method (for an interpolator which needs a finalization) or if it clones the step interpolator.

Overrides:
  `reinitialize` in class `RungeKuttaStepInterpolator`
Parameters:
  `integrator` - integrator being used
  `y` - reference to the integrator array holding the state at the end of the step
  `yDotK` - reference to the integrator array holding all the intermediate slopes
  `forward` - integration direction indicator
  `primaryMapper` - equations mapper for the primary equations set
  `secondaryMappers` - equations mappers for the secondary equations sets

#### storeTime

    public void storeTime(double t)

Store the current step time.

Overrides:
  `storeTime` in class `AbstractStepInterpolator`
Parameters:
  `t` - current time

#### computeInterpolatedStateAndDerivatives

    protected void computeInterpolatedStateAndDerivatives(double theta,
                                              double 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 `AbstractStepInterpolator`
Parameters:
  `theta` - normalized interpolation abscissa within the step (theta is zero at the previous time step and one at the current time step)
  `oneMinusThetaH` - time gap between the interpolated time and the current time