From 0597958b7867e78e1999a95792d45dfe4a18acab Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Thu, 4 Nov 2010 23:28:02 +0000 Subject: [PATCH] More reasonable end criteria --- src/com/billkuker/rocketry/motorsim/Burn.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/Burn.java b/src/com/billkuker/rocketry/motorsim/Burn.java index 6be9861..1c70cb6 100644 --- a/src/com/billkuker/rocketry/motorsim/Burn.java +++ b/src/com/billkuker/rocketry/motorsim/Burn.java @@ -33,6 +33,8 @@ public class Burn { private static final double regStepDecreaseFactor = .5; private static final Amount chamberPressureMaxDelta = Amount.valueOf(.5, SI.MEGA(SI.PASCAL)); + private static final Amount endPressure = Amount.valueOf(.1, RocketScience.PSI); + private static Logger log = Logger.getLogger(Burn.class); protected final Motor motor; @@ -94,6 +96,7 @@ public class Burn { private void burn(){ log.info("Starting burn..."); + int endPressureSteps = 0; long start = new Date().getTime(); Amount regStep = Amount.valueOf(0.01, SI.MILLIMETER); @@ -219,9 +222,11 @@ public class Burn { next.thrust = motor.getNozzle().thrust(next.chamberPressure, atmosphereicPressure, atmosphereicPressure, motor.getFuel().getCombustionProduct().getRatioOfSpecificHeats2Phase()); assert(positive(next.thrust)); - if ( i > 100 && next.chamberPressure.approximates(atmosphereicPressure)){ - log.info("Pressure at Patm on step " + i); - break; + if ( i > 100 && next.chamberPressure.minus(atmosphereicPressure).abs().isLessThan(endPressure)){ + log.info("Pressure at ~Patm on step " + i); + endPressureSteps++; + if ( endPressureSteps > 5 ) + break; } data.put(data.lastKey().plus(dt), next); -- 2.30.2