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
\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
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