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
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
.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
+ 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
public Amount<Pressure> maxPressure(){\r
return maxPressure;\r
}\r
+ \r
+ public Amount<Mass> getPropellantMass() {\r
+ return propellantMass;\r
+ }\r
\r
}\r