org.apache.commons.math.ode
Class RungeKuttaStepInterpolator

java.lang.Object
  extended by org.apache.commons.math.ode.AbstractStepInterpolator
      extended by org.apache.commons.math.ode.RungeKuttaStepInterpolator
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable, StepInterpolator
Direct Known Subclasses:
ClassicalRungeKuttaStepInterpolator, DormandPrince54StepInterpolator, DormandPrince853StepInterpolator, EulerStepInterpolator, GillStepInterpolator, HighamHall54StepInterpolator, MidpointStepInterpolator, ThreeEighthesStepInterpolator

abstract class RungeKuttaStepInterpolator
extends AbstractStepInterpolator

This class represents an interpolator over the last step during an ODE integration for Runge-Kutta and embedded Runge-Kutta integrators.

Since:
1.2
Version:
$Revision: 620312 $ $Date: 2008-02-10 12:28:59 -0700 (Sun, 10 Feb 2008) $
See Also:
RungeKuttaIntegrator, EmbeddedRungeKuttaIntegrator

Field Summary
protected  FirstOrderDifferentialEquations equations
          Reference to the differential equations beeing integrated.
protected  double[][] yDotK
          Slopes at the intermediate points
 
Fields inherited from class org.apache.commons.math.ode.AbstractStepInterpolator
currentState, currentTime, h, interpolatedState, interpolatedTime, previousTime
 
Constructor Summary
protected RungeKuttaStepInterpolator()
          Simple constructor.
  RungeKuttaStepInterpolator(RungeKuttaStepInterpolator interpolator)
          Copy constructor.
 
Method Summary
 void readExternal(java.io.ObjectInput in)
          Read the state of the instance.
 void reinitialize(FirstOrderDifferentialEquations equations, double[] y, double[][] yDotK, boolean forward)
          Reinitialize the instance
 void writeExternal(java.io.ObjectOutput out)
          Save the state of the instance.
 
Methods inherited from class org.apache.commons.math.ode.AbstractStepInterpolator
computeInterpolatedState, copy, doCopy, doFinalize, finalizeStep, getCurrentTime, getInterpolatedState, getInterpolatedTime, getPreviousTime, isForward, readBaseExternal, reinitialize, setInterpolatedTime, shift, storeTime, writeBaseExternal
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

yDotK

protected double[][] yDotK
Slopes at the intermediate points


equations

protected FirstOrderDifferentialEquations equations
Reference to the differential equations beeing integrated.

Constructor Detail

RungeKuttaStepInterpolator

protected RungeKuttaStepInterpolator()
Simple constructor. This constructor builds an instance that is not usable yet, the reinitialize(org.apache.commons.math.ode.FirstOrderDifferentialEquations, 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 RungeKuttaIntegrator and EmbeddedRungeKuttaIntegrator classes uses the prototyping design pattern to create the step interpolators by cloning an uninitialized model and latter initializing the copy.


RungeKuttaStepInterpolator

public RungeKuttaStepInterpolator(RungeKuttaStepInterpolator interpolator)
Copy constructor.

The copied interpolator should have been finalized before the copy, otherwise the copy will not be able to perform correctly any interpolation and will throw a NullPointerException later. Since we don't want this constructor to throw the exceptions finalization may involve and since we don't want this method to modify the state of the copied interpolator, finalization is not done automatically, it remains under user control.

The copy is a deep copy: its arrays are separated from the original arrays of the instance.

Parameters:
interpolator - interpolator to copy from.
Method Detail

reinitialize

public void reinitialize(FirstOrderDifferentialEquations equations,
                         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.

Parameters:
equations - set of differential equations being integrated
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

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Save the state of the instance.

Specified by:
writeExternal in interface java.io.Externalizable
Specified by:
writeExternal in class AbstractStepInterpolator
Parameters:
out - stream where to save the state
Throws:
java.io.IOException - in case of write error

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException
Read the state of the instance.

Specified by:
readExternal in interface java.io.Externalizable
Specified by:
readExternal in class AbstractStepInterpolator
Parameters:
in - stream where to read the state from
Throws:
java.io.IOException - in case of read error