org.apache.commons.math.ode.nonstiff
abstract class RungeKuttaStepInterpolator extends AbstractStepInterpolator
RungeKuttaIntegrator
,
EmbeddedRungeKuttaIntegrator
Modifier and Type | Field and Description |
---|---|
protected AbstractIntegrator |
integrator
Reference to the integrator.
|
protected double[][] |
yDotK
Slopes at the intermediate points
|
currentState, h, interpolatedDerivatives, interpolatedState, interpolatedTime
Modifier | Constructor and Description |
---|---|
protected |
RungeKuttaStepInterpolator()
Simple constructor.
|
|
RungeKuttaStepInterpolator(RungeKuttaStepInterpolator interpolator)
Copy constructor.
|
Modifier and Type | Method and Description |
---|---|
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) |
computeInterpolatedStateAndDerivatives, copy, doCopy, doFinalize, finalizeStep, getCurrentTime, getGlobalCurrentTime, getGlobalPreviousTime, getInterpolatedDerivatives, getInterpolatedState, getInterpolatedTime, getPreviousTime, isForward, readBaseExternal, reinitialize, setInterpolatedTime, setSoftCurrentTime, setSoftPreviousTime, shift, storeTime, writeBaseExternal
protected double[][] yDotK
protected AbstractIntegrator integrator
protected RungeKuttaStepInterpolator()
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.public RungeKuttaStepInterpolator(RungeKuttaStepInterpolator interpolator)
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.
interpolator
- interpolator to copy from.public void reinitialize(AbstractIntegrator rkIntegrator, double[] y, double[][] yDotArray, boolean forward)
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.
rkIntegrator
- integrator being usedy
- reference to the integrator array holding the state at
the end of the stepyDotArray
- reference to the integrator array holding all the
intermediate slopesforward
- integration direction indicatorpublic void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
writeExternal
in interface java.io.Externalizable
writeExternal
in class AbstractStepInterpolator
java.io.IOException
public void readExternal(java.io.ObjectInput in) throws java.io.IOException
readExternal
in interface java.io.Externalizable
readExternal
in class AbstractStepInterpolator
java.io.IOException
Copyright (c) 2003-2013 Apache Software Foundation