Make atmospheric pressure editable
authorBill Kuker <bkuker@billkuker.com>
Thu, 2 Dec 2010 02:40:21 +0000 (02:40 +0000)
committerBill Kuker <bkuker@billkuker.com>
Thu, 2 Dec 2010 02:40:21 +0000 (02:40 +0000)
src/com/billkuker/rocketry/motorsim/Burn.java

index 771e715fe03defbe55c6c77a157c8b9e5d1bc632..0416d1ec0892a087710627ceb61555854534f99c 100644 (file)
@@ -54,6 +54,7 @@ public class Burn {
                private double regStepDecreaseFactor = .5;\r
                private Amount<Pressure> chamberPressureMaxDelta = Amount.valueOf(.5, SI.MEGA(SI.PASCAL));\r
                private Amount<Pressure> endPressure = Amount.valueOf(.1, RocketScience.PSI);\r
+               private Amount<Pressure> atmosphereicPressure = Amount.valueOf(101000, SI.PASCAL);\r
                \r
                public void setVolumeMethod(BurnVolumeMethod volumeMethod) {\r
                        this.volumeMethod = volumeMethod;\r
@@ -85,6 +86,12 @@ public class Burn {
                public void setEndPressure(Amount<Pressure> endPressure) {\r
                        this.endPressure = endPressure;\r
                }\r
+               public Amount<Pressure> getAtmosphereicPressure() {\r
+                       return atmosphereicPressure;\r
+               }\r
+               public void setAtmosphereicPressure(Amount<Pressure> atmosphereicPressure) {\r
+                       this.atmosphereicPressure = atmosphereicPressure;\r
+               }\r
        }\r
        \r
        protected final Motor motor;\r
@@ -96,14 +103,9 @@ public class Burn {
                public void setProgress(float p);\r
                public void burnComplete();\r
        }\r
-       \r
-\r
-\r
-       \r
+               \r
        private Set<BurnProgressListener> bpls = new HashSet<Burn.BurnProgressListener>();\r
-       \r
-       private static final Amount<Pressure> atmosphereicPressure = Amount.valueOf(101000, SI.PASCAL);\r
-       \r
+\r
        public class Interval{\r
                public Amount<Duration> time;\r
                public Amount<Duration> dt;\r
@@ -168,7 +170,7 @@ public class Burn {
                initial.time = Amount.valueOf(0, SI.SECOND);\r
                initial.dt = Amount.valueOf(0, SI.SECOND);\r
                initial.regression = Amount.valueOf(0, SI.MILLIMETER);\r
-               initial.chamberPressure = atmosphereicPressure;\r
+               initial.chamberPressure = settings.getAtmosphereicPressure();\r
                initial.chamberProduct = Amount.valueOf(0, SI.KILOGRAM);\r
                initial.thrust = Amount.valueOf(0, SI.NEWTON);\r
                \r
@@ -241,7 +243,7 @@ public class Burn {
                        \r
                        Amount<MassFlowRate> mNozzle;\r
                        {\r
-                               Amount<Pressure> pDiff = prev.chamberPressure.minus(atmosphereicPressure);\r
+                               Amount<Pressure> pDiff = prev.chamberPressure.minus(settings.getAtmosphereicPressure());\r
                                //log.debug("Pdiff: " + pDiff);\r
                                Amount<Area> aStar = motor.getNozzle().throatArea();\r
                                double k = motor.getFuel().getCombustionProduct().getRatioOfSpecificHeats();\r
@@ -274,7 +276,7 @@ public class Burn {
                        \r
                        log.debug("Product Density: " + combustionProductDensity);\r
                        \r
-                       next.chamberPressure = combustionProductDensity.times(specificGasConstant).times(chamberTemp).plus(atmosphereicPressure).to(Pressure.UNIT);\r
+                       next.chamberPressure = combustionProductDensity.times(specificGasConstant).times(chamberTemp).plus(settings.getAtmosphereicPressure()).to(Pressure.UNIT);\r
                        assert(positive(next.chamberPressure));\r
                        \r
                        next.chamberPressure = Amount.valueOf(\r
@@ -288,10 +290,10 @@ public class Burn {
                                continue step;\r
                        }\r
                        \r
-                       next.thrust = motor.getNozzle().thrust(next.chamberPressure, atmosphereicPressure, atmosphereicPressure, motor.getFuel().getCombustionProduct().getRatioOfSpecificHeats2Phase());\r
+                       next.thrust = motor.getNozzle().thrust(next.chamberPressure, settings.getAtmosphereicPressure(), settings.getAtmosphereicPressure(), motor.getFuel().getCombustionProduct().getRatioOfSpecificHeats2Phase());\r
                        assert(positive(next.thrust));\r
                        \r
-                       if ( i > 100 && next.chamberPressure.minus(atmosphereicPressure).abs().isLessThan(settings.getEndPressure())){\r
+                       if ( i > 100 && next.chamberPressure.minus(settings.getAtmosphereicPressure()).abs().isLessThan(settings.getEndPressure())){\r
                                log.info("Pressure at ~Patm on step " + i);\r
                                endPressureSteps++;\r
                                if ( endPressureSteps > 5 )\r