org.apache.commons.math.ode.nonstiff
Class DormandPrince853StepInterpolator

java.lang.Object
  extended by org.apache.commons.math.ode.sampling.AbstractStepInterpolator
      extended by org.apache.commons.math.ode.nonstiff.RungeKuttaStepInterpolator
          extended by org.apache.commons.math.ode.nonstiff.DormandPrince853StepInterpolator
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable, StepInterpolator

 class DormandPrince853StepInterpolator
extends RungeKuttaStepInterpolator

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

Since:
1.2
Version:
$Revision: 811827 $ $Date: 2009-09-06 11:32:50 -0400 (Sun, 06 Sep 2009) $
See Also:
DormandPrince853Integrator

Field Summary
private static double B_01
          Propagation weights, element 1.
private static double B_06
          Propagation weights, element 6.
private static double B_07
          Propagation weights, element 7.
private static double B_08
          Propagation weights, element 8.
private static double B_09
          Propagation weights, element 9.
private static double B_10
          Propagation weights, element 10.
private static double B_11
          Propagation weights, element 11.
private static double B_12
          Propagation weights, element 12.
private static double C14
          Time step for stage 14 (interpolation only).
private static double C15
          Time step for stage 15 (interpolation only).
private static double C16
          Time step for stage 16 (interpolation only).
private static double[][] D
          Interpolation weights.
private static double K14_01
          Internal weights for stage 14, element 1.
private static double K14_06
          Internal weights for stage 14, element 6.
private static double K14_07
          Internal weights for stage 14, element 7.
private static double K14_08
          Internal weights for stage 14, element 8.
private static double K14_09
          Internal weights for stage 14, element 9.
private static double K14_10
          Internal weights for stage 14, element 10.
private static double K14_11
          Internal weights for stage 14, element 11.
private static double K14_12
          Internal weights for stage 14, element 12.
private static double K14_13
          Internal weights for stage 14, element 13.
private static double K15_01
          Internal weights for stage 15, element 1.
private static double K15_06
          Internal weights for stage 15, element 6.
private static double K15_07
          Internal weights for stage 15, element 7.
private static double K15_08
          Internal weights for stage 15, element 8.
private static double K15_09
          Internal weights for stage 15, element 9.
private static double K15_10
          Internal weights for stage 15, element 10.
private static double K15_11
          Internal weights for stage 15, element 11.
private static double K15_12
          Internal weights for stage 15, element 12.
private static double K15_13
          Internal weights for stage 15, element 13.
private static double K15_14
          Internal weights for stage 15, element 14.
private static double K16_01
          Internal weights for stage 16, element 1.
private static double K16_06
          Internal weights for stage 16, element 6.
private static double K16_07
          Internal weights for stage 16, element 7.
private static double K16_08
          Internal weights for stage 16, element 8.
private static double K16_09
          Internal weights for stage 16, element 9.
private static double K16_10
          Internal weights for stage 16, element 10.
private static double K16_11
          Internal weights for stage 16, element 11.
private static double K16_12
          Internal weights for stage 16, element 12.
private static double K16_13
          Internal weights for stage 16, element 13.
private static double K16_14
          Internal weights for stage 16, element 14.
private static double K16_15
          Internal weights for stage 16, element 15.
private static long serialVersionUID
          Serializable version identifier
private  double[][] v
          Vectors for interpolation.
private  boolean vectorsInitialized
          Initialization indicator for the interpolation vectors.
private  double[][] yDotKLast
          Last evaluations.
 
Fields inherited from class org.apache.commons.math.ode.nonstiff.RungeKuttaStepInterpolator
integrator, yDotK
 
Fields inherited from class org.apache.commons.math.ode.sampling.AbstractStepInterpolator
currentState, currentTime, h, interpolatedDerivatives, interpolatedState, interpolatedTime, previousTime
 
Constructor Summary
DormandPrince853StepInterpolator()
          Simple constructor.
DormandPrince853StepInterpolator(DormandPrince853StepInterpolator interpolator)
          Copy constructor.
 
Method Summary
protected  void computeInterpolatedStateAndDerivatives(double theta, double oneMinusThetaH)
          Compute the state and derivatives at the interpolated time.
protected  StepInterpolator doCopy()
          Really copy the finalized instance.
protected  void doFinalize()
          Really finalize the step.
 void readExternal(java.io.ObjectInput in)
          
 void reinitialize(AbstractIntegrator integrator, double[] y, double[][] yDotK, boolean forward)
          Reinitialize the instance
 void storeTime(double t)
          Store the current step time.
 void writeExternal(java.io.ObjectOutput out)
          
 
Methods inherited from class org.apache.commons.math.ode.sampling.AbstractStepInterpolator
copy, finalizeStep, getCurrentTime, getInterpolatedDerivatives, getInterpolatedState, getInterpolatedTime, getPreviousTime, isForward, readBaseExternal, reinitialize, setInterpolatedTime, shift, writeBaseExternal
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
Serializable version identifier

See Also:
Constant Field Values

B_01

private static final double B_01
Propagation weights, element 1.

See Also:
Constant Field Values

B_06

private static final double B_06
Propagation weights, element 6.

See Also:
Constant Field Values

B_07

private static final double B_07
Propagation weights, element 7.

See Also:
Constant Field Values

B_08

private static final double B_08
Propagation weights, element 8.

See Also:
Constant Field Values

B_09

private static final double B_09
Propagation weights, element 9.

See Also:
Constant Field Values

B_10

private static final double B_10
Propagation weights, element 10.

See Also:
Constant Field Values

B_11

private static final double B_11
Propagation weights, element 11.

See Also:
Constant Field Values

B_12

private static final double B_12
Propagation weights, element 12.

See Also:
Constant Field Values

C14

private static final double C14
Time step for stage 14 (interpolation only).

See Also:
Constant Field Values

K14_01

private static final double K14_01
Internal weights for stage 14, element 1.

See Also:
Constant Field Values

K14_06

private static final double K14_06
Internal weights for stage 14, element 6.

See Also:
Constant Field Values

K14_07

private static final double K14_07
Internal weights for stage 14, element 7.

See Also:
Constant Field Values

K14_08

private static final double K14_08
Internal weights for stage 14, element 8.

See Also:
Constant Field Values

K14_09

private static final double K14_09
Internal weights for stage 14, element 9.

See Also:
Constant Field Values

K14_10

private static final double K14_10
Internal weights for stage 14, element 10.

See Also:
Constant Field Values

K14_11

private static final double K14_11
Internal weights for stage 14, element 11.

See Also:
Constant Field Values

K14_12

private static final double K14_12
Internal weights for stage 14, element 12.

See Also:
Constant Field Values

K14_13

private static final double K14_13
Internal weights for stage 14, element 13.

See Also:
Constant Field Values

C15

private static final double C15
Time step for stage 15 (interpolation only).

See Also:
Constant Field Values

K15_01

private static final double K15_01
Internal weights for stage 15, element 1.

See Also:
Constant Field Values

K15_06

private static final double K15_06
Internal weights for stage 15, element 6.

See Also:
Constant Field Values

K15_07

private static final double K15_07
Internal weights for stage 15, element 7.

See Also:
Constant Field Values

K15_08

private static final double K15_08
Internal weights for stage 15, element 8.

See Also:
Constant Field Values

K15_09

private static final double K15_09
Internal weights for stage 15, element 9.

See Also:
Constant Field Values

K15_10

private static final double K15_10
Internal weights for stage 15, element 10.

See Also:
Constant Field Values

K15_11

private static final double K15_11
Internal weights for stage 15, element 11.

See Also:
Constant Field Values

K15_12

private static final double K15_12
Internal weights for stage 15, element 12.

See Also:
Constant Field Values

K15_13

private static final double K15_13
Internal weights for stage 15, element 13.

See Also:
Constant Field Values

K15_14

private static final double K15_14
Internal weights for stage 15, element 14.

See Also:
Constant Field Values

C16

private static final double C16
Time step for stage 16 (interpolation only).

See Also:
Constant Field Values

K16_01

private static final double K16_01
Internal weights for stage 16, element 1.

See Also:
Constant Field Values

K16_06

private static final double K16_06
Internal weights for stage 16, element 6.

See Also:
Constant Field Values

K16_07

private static final double K16_07
Internal weights for stage 16, element 7.

See Also:
Constant Field Values

K16_08

private static final double K16_08
Internal weights for stage 16, element 8.

See Also:
Constant Field Values

K16_09

private static final double K16_09
Internal weights for stage 16, element 9.

See Also:
Constant Field Values

K16_10

private static final double K16_10
Internal weights for stage 16, element 10.

See Also:
Constant Field Values

K16_11

private static final double K16_11
Internal weights for stage 16, element 11.

See Also:
Constant Field Values

K16_12

private static final double K16_12
Internal weights for stage 16, element 12.

See Also:
Constant Field Values

K16_13

private static final double K16_13
Internal weights for stage 16, element 13.

See Also:
Constant Field Values

K16_14

private static final double K16_14
Internal weights for stage 16, element 14.

See Also:
Constant Field Values

K16_15

private static final double K16_15
Internal weights for stage 16, element 15.

See Also:
Constant Field Values

D

private static final double[][] D
Interpolation weights. (beware that only the non-null values are in the table)


yDotKLast

private double[][] yDotKLast
Last evaluations.


v

private double[][] v
Vectors for interpolation.


vectorsInitialized

private boolean vectorsInitialized
Initialization indicator for the interpolation vectors.

Constructor Detail

DormandPrince853StepInterpolator

public DormandPrince853StepInterpolator()
Simple constructor. This constructor builds an instance that is not usable yet, the reinitialize(org.apache.commons.math.ode.AbstractIntegrator, double[], double[][], boolean) 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.


DormandPrince853StepInterpolator

public DormandPrince853StepInterpolator(DormandPrince853StepInterpolator 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)
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

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)
                                               throws DerivativeException
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
Throws:
DerivativeException - this exception is propagated to the caller if the underlying user function triggers one

doFinalize

protected void doFinalize()
                   throws DerivativeException
Really finalize the step. The default implementation of this method does nothing.

Overrides:
doFinalize in class AbstractStepInterpolator
Throws:
DerivativeException - this exception is propagated to the caller if the underlying user function triggers one

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException

Specified by:
writeExternal in interface java.io.Externalizable
Overrides:
writeExternal in class RungeKuttaStepInterpolator
Throws:
java.io.IOException

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException

Specified by:
readExternal in interface java.io.Externalizable
Overrides:
readExternal in class RungeKuttaStepInterpolator
Throws:
java.io.IOException


Copyright (c) 2003-2012 Apache Software Foundation