[prev in list] [next in list] [prev in thread] [next in thread]
List: jakarta-commons-dev
Subject: svn commit: r780509 - in
From: luc () apache ! org
Date: 2009-05-31 21:56:01
Message-ID: 20090531215601.5AFB223888BD () eris ! apache ! org
[Download RAW message or body]
Author: luc
Date: Sun May 31 21:56:00 2009
New Revision: 780509
URL: http://svn.apache.org/viewvc?rev=780509&view=rev
Log:
fixed serialization of step interpolators to allow processing them
before the associated integrator update their internal state
(i.e. when currentState is still null)
Modified:
commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/DormandPrince853StepInterpolator.java
commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/GraggBulirschStoerStepInterpolator.java
commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaStepInterpolator.java
commons/proper/math/trunk/src/java/org/apache/commons/math/ode/sampling/AbstractStepInterpolator.java
Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/DormandPrince853StepInterpolator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/common \
s/math/ode/nonstiff/DormandPrince853StepInterpolator.java?rev=780509&r1=780508&r2=780509&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/DormandPrince853StepInterpolator.java \
(original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/DormandPrince853StepInterpolator.java \
Sun May 31 21:56:00 2009 @@ -259,8 +259,9 @@
} catch (DerivativeException e) {
throw MathRuntimeException.createIOException(e);
}
- out.writeInt(currentState.length);
- for (int i = 0; i < currentState.length; ++i) {
+ final int dimension = (currentState == null) ? -1 : currentState.length;
+ out.writeInt(dimension);
+ for (int i = 0; i < dimension; ++i) {
out.writeDouble(yDotKLast[0][i]);
out.writeDouble(yDotKLast[1][i]);
out.writeDouble(yDotKLast[2][i]);
@@ -279,9 +280,9 @@
// read the local attributes
yDotKLast = new double[3][];
final int dimension = in.readInt();
- yDotKLast[0] = new double[dimension];
- yDotKLast[1] = new double[dimension];
- yDotKLast[2] = new double[dimension];
+ yDotKLast[0] = (dimension < 0) ? null : new double[dimension];
+ yDotKLast[1] = (dimension < 0) ? null : new double[dimension];
+ yDotKLast[2] = (dimension < 0) ? null : new double[dimension];
for (int i = 0; i < dimension; ++i) {
yDotKLast[0][i] = in.readDouble();
Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/GraggBulirschStoerStepInterpolator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/common \
s/math/ode/nonstiff/GraggBulirschStoerStepInterpolator.java?rev=780509&r1=780508&r2=780509&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/GraggBulirschStoerStepInterpolator.java \
(original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/GraggBulirschStoerStepInterpolator.java \
Sun May 31 21:56:00 2009 @@ -358,7 +358,7 @@
public void writeExternal(final ObjectOutput out)
throws IOException {
- final int dimension = currentState.length;
+ final int dimension = (currentState == null) ? -1 : currentState.length;
// save the state of the base class
writeBaseExternal(out);
@@ -380,7 +380,7 @@
// read the base class
final double t = readBaseExternal(in);
- final int dimension = currentState.length;
+ final int dimension = (currentState == null) ? -1 : currentState.length;
// read the local attributes
final int degree = in.readInt();
Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaStepInterpolator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/common \
s/math/ode/nonstiff/RungeKuttaStepInterpolator.java?rev=780509&r1=780508&r2=780509&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaStepInterpolator.java \
(original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaStepInterpolator.java \
Sun May 31 21:56:00 2009 @@ -133,9 +133,11 @@
writeBaseExternal(out);
// save the local attributes
- out.writeInt(yDotK.length);
- for (int k = 0; k < yDotK.length; ++k) {
- for (int i = 0; i < currentState.length; ++i) {
+ final int n = (currentState == null) ? -1 : currentState.length;
+ final int kMax = (yDotK == null) ? -1 : yDotK.length;
+ out.writeInt(kMax);
+ for (int k = 0; k < kMax; ++k) {
+ for (int i = 0; i < n; ++i) {
out.writeDouble(yDotK[k][i]);
}
}
@@ -153,22 +155,27 @@
final double t = readBaseExternal(in);
// read the local attributes
+ final int n = (currentState == null) ? -1 : currentState.length;
final int kMax = in.readInt();
- yDotK = new double[kMax][];
+ yDotK = (kMax < 0) ? null : new double[kMax][];
for (int k = 0; k < kMax; ++k) {
- yDotK[k] = new double[currentState.length];
- for (int i = 0; i < currentState.length; ++i) {
+ yDotK[k] = (n < 0) ? null : new double[n];
+ for (int i = 0; i < n; ++i) {
yDotK[k][i] = in.readDouble();
}
}
equations = null;
- try {
- // we can now set the interpolated time and state
- setInterpolatedTime(t);
- } catch (DerivativeException e) {
- throw MathRuntimeException.createIOException(e);
+ if (currentState != null) {
+ try {
+ // we can now set the interpolated time and state
+ setInterpolatedTime(t);
+ } catch (DerivativeException e) {
+ throw MathRuntimeException.createIOException(e);
+ }
+ } else {
+ interpolatedTime = t;
}
}
Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/ode/sampling/AbstractStepInterpolator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/common \
s/math/ode/sampling/AbstractStepInterpolator.java?rev=780509&r1=780508&r2=780509&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/ode/sampling/AbstractStepInterpolator.java \
(original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/ode/sampling/AbstractStepInterpolator.java \
Sun May 31 21:56:00 2009 @@ -351,14 +351,20 @@
protected void writeBaseExternal(final ObjectOutput out)
throws IOException {
- out.writeInt(currentState.length);
+ if (currentState == null) {
+ out.writeInt(-1);
+ } else {
+ out.writeInt(currentState.length);
+ }
out.writeDouble(previousTime);
out.writeDouble(currentTime);
out.writeDouble(h);
out.writeBoolean(forward);
- for (int i = 0; i < currentState.length; ++i) {
- out.writeDouble(currentState[i]);
+ if (currentState != null) {
+ for (int i = 0; i < currentState.length; ++i) {
+ out.writeDouble(currentState[i]);
+ }
}
out.writeDouble(interpolatedTime);
@@ -393,15 +399,19 @@
h = in.readDouble();
forward = in.readBoolean();
- currentState = new double[dimension];
- for (int i = 0; i < currentState.length; ++i) {
- currentState[i] = in.readDouble();
+ if (dimension < 0) {
+ currentState = null;
+ } else {
+ currentState = new double[dimension];
+ for (int i = 0; i < currentState.length; ++i) {
+ currentState[i] = in.readDouble();
+ }
}
// we do NOT handle the interpolated time and state here
interpolatedTime = Double.NaN;
- interpolatedState = new double[dimension];
- interpolatedDerivatives = new double[dimension];
+ interpolatedState = (dimension < 0) ? null : new double[dimension];
+ interpolatedDerivatives = (dimension < 0) ? null : new double[dimension];
finalized = true;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic