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

java.lang.Object
  extended by org.apache.commons.math.ode.sampling.AbstractStepInterpolator
      extended by org.apache.commons.math.ode.nonstiff.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: 811827 $ $Date: 2009-09-06 17:32:50 +0200 (dim. 06 sept. 2009) $
See Also:
RungeKuttaIntegrator, EmbeddedRungeKuttaIntegrator

Field Summary
protected  AbstractIntegrator integrator
          Reference to the integrator.
protected  double[][] yDotK
          Slopes at the intermediate points
 
Fields inherited from class org.apache.commons.math.ode.sampling.AbstractStepInterpolator
currentState, h, interpolatedDerivatives, interpolatedState, interpolatedTime
 
Constructor Summary
protected RungeKuttaStepInterpolator()
          Simple constructor.
  RungeKuttaStepInterpolator(RungeKuttaStepInterpolator interpolator)
          Copy constructor.
 
Method Summary
 void readExternal(java.io.ObjectInput in)
          
 void reinitialize(AbstractIntegrator rkIntegrator, double[] y, double[][] yDotArray, boolean forward)
          Reinitialize the instance
 void writeExternal(java.io.ObjectOutput out)
          
 
Methods inherited from class org.apache.commons.math.ode.sampling.AbstractStepInterpolator
computeInterpolatedStateAndDerivatives, copy, doCopy, doFinalize, finalizeStep, getCurrentTime, getGlobalCurrentTime, getGlobalPreviousTime, getInterpolatedDerivatives, getInterpolatedState, getInterpolatedTime, getPreviousTime, isForward, readBaseExternal, reinitialize, setInterpolatedTime, setSoftCurrentTime, setSoftPreviousTime, 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


integrator

protected AbstractIntegrator integrator
Reference to the integrator.

Constructor Detail

RungeKuttaStepInterpolator

protected RungeKuttaStepInterpolator()
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 RungeKuttaIntegrator and EmbeddedRungeKuttaIntegrator classes use 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(AbstractIntegrator rkIntegrator,
                         double[] y,
                         double[][] yDotArray,
                         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:
rkIntegrator - integrator being used
y - reference to the integrator array holding the state at the end of the step
yDotArray - 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

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

readExternal

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

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


Copyright (c) 2003-2011 Apache Software Foundation