Add fuel mass to summary
[sw/motorsim] / src / com / billkuker / rocketry / motorsim / BurnSummary.java
index 4d19a0e5c4016d187492845a3ac24a330ce3d8b7..beb145c3c02b1862d5275c4e16065aa5035b03cf 100644 (file)
@@ -1,8 +1,12 @@
 package com.billkuker.rocketry.motorsim;\r
 \r
+import javax.measure.quantity.Dimensionless;\r
 import javax.measure.quantity.Duration;\r
 import javax.measure.quantity.Force;\r
+import javax.measure.quantity.Mass;\r
 import javax.measure.quantity.Pressure;\r
+import javax.measure.quantity.Volume;\r
+import javax.measure.quantity.VolumetricDensity;\r
 import javax.measure.unit.SI;\r
 \r
 import org.jscience.physics.amount.Amount;\r
@@ -18,6 +22,8 @@ public class BurnSummary {
        Amount<Force> maxThrust = Amount.valueOf(0, SI.NEWTON);\r
        Amount<Pressure> maxPressure = Amount.valueOf(0, SI.MEGA(SI.PASCAL));\r
        Amount<Duration> isp;\r
+       Amount<Mass> propellantMass;\r
+       Double saftyFactor;\r
        \r
        public BurnSummary(Burn b) {\r
                for (Interval i : b.getData().values()) {\r
@@ -45,6 +51,13 @@ public class BurnSummary {
                .divide(Amount.valueOf(9.81,\r
                                SI.METERS_PER_SQUARE_SECOND)).to(SI.SECOND);\r
 \r
+               if ( b.getMotor().getChamber().getBurstPressure() != null )\r
+                       saftyFactor = b.getMotor().getChamber().getBurstPressure().divide(maxPressure).to(Dimensionless.UNIT).doubleValue(Dimensionless.UNIT);\r
+\r
+               Amount<Volume> vol = b.getMotor().getGrain().volume(Amount.valueOf(0, SI.MILLIMETER));\r
+               Amount<VolumetricDensity> ideal = b.getMotor().getFuel().getIdealDensity();\r
+               Amount<VolumetricDensity> actual = ideal.times(b.getMotor().getFuel().getDensityRatio());\r
+               propellantMass = vol.times(actual).to(SI.GRAM);\r
        }\r
 \r
        public String getRating() {\r
@@ -61,6 +74,10 @@ public class BurnSummary {
                + Math.round(averageThrust().doubleValue(SI.NEWTON));\r
        }\r
 \r
+       public Double getSaftyFactor(){\r
+               return saftyFactor;\r
+       }\r
+       \r
        public Amount<RocketScience.Impulse> totalImpulse() {\r
                return ns;\r
        }\r
@@ -87,5 +104,9 @@ public class BurnSummary {
        public Amount<Pressure> maxPressure(){\r
                return maxPressure;\r
        }\r
+       \r
+       public Amount<Mass> getPropellantMass() {\r
+               return propellantMass;\r
+       }\r
 \r
 }\r