More reasonable end criteria
authorBill Kuker <bkuker@billkuker.com>
Thu, 4 Nov 2010 23:28:02 +0000 (23:28 +0000)
committerBill Kuker <bkuker@billkuker.com>
Thu, 4 Nov 2010 23:28:02 +0000 (23:28 +0000)
src/com/billkuker/rocketry/motorsim/Burn.java

index 6be9861fa4f22acec53b41e7b08cbb76bf033d5a..1c70cb69eebfb4929e2e46b0b549f290514ce2f3 100644 (file)
@@ -33,6 +33,8 @@ public class Burn {
        private static final double regStepDecreaseFactor = .5;\r
        private static final Amount<Pressure> chamberPressureMaxDelta = Amount.valueOf(.5, SI.MEGA(SI.PASCAL));\r
        \r
+       private static final Amount<Pressure> endPressure = Amount.valueOf(.1, RocketScience.PSI);\r
+       \r
        private static Logger log = Logger.getLogger(Burn.class);\r
        protected final Motor motor;\r
        \r
@@ -94,6 +96,7 @@ public class Burn {
        \r
        private void burn(){\r
                log.info("Starting burn...");\r
+               int endPressureSteps = 0;\r
                long start = new Date().getTime();\r
                \r
                Amount<Length> regStep = Amount.valueOf(0.01, SI.MILLIMETER);\r
@@ -219,9 +222,11 @@ public class Burn {
                        next.thrust = motor.getNozzle().thrust(next.chamberPressure, atmosphereicPressure, atmosphereicPressure, motor.getFuel().getCombustionProduct().getRatioOfSpecificHeats2Phase());\r
                        assert(positive(next.thrust));\r
                        \r
-                       if ( i > 100 && next.chamberPressure.approximates(atmosphereicPressure)){\r
-                               log.info("Pressure at Patm on step " + i);\r
-                               break;\r
+                       if ( i > 100 && next.chamberPressure.minus(atmosphereicPressure).abs().isLessThan(endPressure)){\r
+                               log.info("Pressure at ~Patm on step " + i);\r
+                               endPressureSteps++;\r
+                               if ( endPressureSteps > 5 )\r
+                                       break;\r
                        }\r
                        \r
                        data.put(data.lastKey().plus(dt), next);\r