From 7c72bc88b1a958dd059e16ec6c67b8dc95c229ce Mon Sep 17 00:00:00 2001 From: bkuker Date: Tue, 25 Feb 2014 09:51:03 -0500 Subject: [PATCH] Fix BasicTumbleStatus to initialize drag to non-zero. computeTumbleDrag() is never called without this fix. The one-arg constructor is the only constructor ever used, to init this status based on the previous status, copying the tumble drag if it can. The first BasicTumbleStatus is constructed from an RK4 Status, so it's drag is not copied, but neither is the drag computed. From then on the 0 is copied from one BasicTumbleStatus to the next. --- .../sf/openrocket/simulation/BasicTumbleStatus.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/core/src/net/sf/openrocket/simulation/BasicTumbleStatus.java b/core/src/net/sf/openrocket/simulation/BasicTumbleStatus.java index dfb44a1ad..1993c5aaf 100644 --- a/core/src/net/sf/openrocket/simulation/BasicTumbleStatus.java +++ b/core/src/net/sf/openrocket/simulation/BasicTumbleStatus.java @@ -18,19 +18,21 @@ public class BasicTumbleStatus extends SimulationStatus { // offset the indexes so finEff[1] is the coefficient for one fin from the table in techdoc.pdf private final static double[] finEff = { 0.0, 0.5, 1.0, 1.41, 1.81, 1.73, 1.90, 1.85 }; - private double drag; + private final double drag; public BasicTumbleStatus(Configuration configuration, MotorInstanceConfiguration motorConfiguration, SimulationConditions simulationConditions) { super(configuration, motorConfiguration, simulationConditions); - computeTumbleDrag(); + this.drag = computeTumbleDrag(); } public BasicTumbleStatus(SimulationStatus orig) { super(orig); if (orig instanceof BasicTumbleStatus) { this.drag = ((BasicTumbleStatus) orig).drag; + } else { + this.drag = computeTumbleDrag(); } } @@ -39,7 +41,7 @@ public class BasicTumbleStatus extends SimulationStatus { } - public void computeTumbleDrag() { + private double computeTumbleDrag() { // Computed based on Sampo's experimentation as documented in the pdf. @@ -69,6 +71,6 @@ public class BasicTumbleStatus extends SimulationStatus { } } - drag = (cDFin * aFins + cDBt * aBt); + return (cDFin * aFins + cDBt * aBt); } }