From 832ea600f55ef48920f6d1a75f2e135b67222b7d Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Thu, 2 Jul 2009 14:17:21 +0000 Subject: [PATCH] Fixed average thrust time to deal with variable DT --- .../rocketry/motorsim/visual/BurnPanel.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/visual/BurnPanel.java b/src/com/billkuker/rocketry/motorsim/visual/BurnPanel.java index dc69c33..4fb45af 100644 --- a/src/com/billkuker/rocketry/motorsim/visual/BurnPanel.java +++ b/src/com/billkuker/rocketry/motorsim/visual/BurnPanel.java @@ -91,24 +91,25 @@ public class BurnPanel extends JPanel { Amount ns = Amount.valueOf(0, RocketScience.NEWTON_SECOND); - Amount averageThrust = Amount.valueOf(0, SI.NEWTON); + + Amount thrustTime = Amount.valueOf(0, SI.SECOND); Amount maxThrust = Amount.valueOf(0, SI.NEWTON); Amount maxPressure = Amount.valueOf(0, SI.MEGA(SI.PASCAL)); - int thrustCount = 0; - + for( Interval i: burn.getData().values() ){ ns = ns.plus(i.dt.times(i.thrust)); if ( i.thrust.isGreaterThan(Amount.valueOf(0.01, SI.NEWTON))){ - thrustCount++; - averageThrust = averageThrust.plus(i.thrust); + thrustTime = thrustTime.plus(i.dt); } if ( i.thrust.isGreaterThan(maxThrust)) maxThrust = i.thrust; if ( i.chamberPressure.isGreaterThan(maxPressure)) maxPressure = i.chamberPressure; } - if ( thrustCount > 0) - averageThrust = averageThrust.divide(thrustCount); + + Amount averageThrust = Amount.valueOf(0, SI.NEWTON); + if ( thrustTime.isGreaterThan(Amount.valueOf(0, SI.SECOND))) + averageThrust = ns.divide(thrustTime).to(SI.NEWTON); int cn = (int)(Math.log(ns.doubleValue(RocketScience.NEWTON_SECOND)/1.25) / Math.log(2)); char cl = (char)((int)'A' + cn); -- 2.39.5