Add Schedule 80
authorBill Kuker <bkuker@billkuker.com>
Mon, 8 Nov 2010 12:42:18 +0000 (12:42 +0000)
committerBill Kuker <bkuker@billkuker.com>
Mon, 8 Nov 2010 12:42:18 +0000 (12:42 +0000)
gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java
src/com/billkuker/rocketry/motorsim/cases/Schedule80.java [new file with mode: 0644]

index 4005c6420d0ca033aa32fd4b7523a35814c9d69f..899b514d25a83925e2e7f0148c36900fe079d35d 100644 (file)
@@ -44,6 +44,7 @@ import com.billkuker.rocketry.motorsim.Grain;
 import com.billkuker.rocketry.motorsim.Motor;\r
 import com.billkuker.rocketry.motorsim.Nozzle;\r
 import com.billkuker.rocketry.motorsim.cases.Schedule40;\r
+import com.billkuker.rocketry.motorsim.cases.Schedule80;\r
 import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
 import com.billkuker.rocketry.motorsim.grain.CSlot;\r
 import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain;\r
@@ -98,6 +99,7 @@ public class MotorEditor extends JPanel implements PropertyChangeListener {
        {\r
                chamberTypes.add(CylindricalChamber.class);\r
                chamberTypes.add(Schedule40.class);\r
+               chamberTypes.add(Schedule80.class);\r
        }\r
 \r
        private class BurnTab extends JPanel {\r
diff --git a/src/com/billkuker/rocketry/motorsim/cases/Schedule80.java b/src/com/billkuker/rocketry/motorsim/cases/Schedule80.java
new file mode 100644 (file)
index 0000000..b47fc89
--- /dev/null
@@ -0,0 +1,97 @@
+package com.billkuker.rocketry.motorsim.cases;\r
+\r
+import java.awt.Shape;\r
+\r
+import javax.measure.quantity.Length;\r
+import javax.measure.quantity.Pressure;\r
+import javax.measure.quantity.Volume;\r
+import javax.measure.unit.NonSI;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+\r
+import com.billkuker.rocketry.motorsim.Chamber;\r
+import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
+import com.billkuker.rocketry.motorsim.RocketScience;\r
+\r
+public class Schedule80 implements Chamber {\r
+       public static enum Size {               \r
+               \r
+               //Dimensions: http://www.harvel.com/pipepvc-sch40-80-dim.asp\r
+               //Pressure: http://www.engineeringtoolbox.com/pvc-cpvc-pipes-pressures-d_796.html\r
+               //Also: http://www.jacobsrocketry.com/aer/misc_tables.htm\r
+               //OneEighth(            "\u215B\u2033",         0.405,  0.249,  0.051,  2630),\r
+               OneQuarter(             "\u00BC\u2033",         0.54,   0.282,  10,     7319),\r
+               ThreeEights(    "\u215C\u2033",         0.675,  0.403,  13.8,   5400),\r
+               OneHalf(                "\u00BD\u2033",         0.84,   0.546,  20.2,   4308),\r
+               ThreeQuarters(  "\u00BE\u2033",         1.05,   0.722,  27.3,   3634),\r
+               OneInch(                "1\u2033",                      1.315,  0.936,  40.2,   3239),\r
+               OneAndAQuarter( "1\u00BC\u2033",        1.66,   1.255,  55.4,   2582),\r
+               OneAndOneHalf(  "1\u00BD\u2033",        1.9,    1.476,  67.3,   2298),\r
+               TwoInch(                "2\u2033",                      2.375,  1.913,  93.2,   1932),\r
+               TowAndOneHalf(  "2\u00BD\u2033",        2.875,  2.29,   141.9,  2044),\r
+               ThreeInch(              "3\u2033",                      3.5,    2.864,  190.3,  1777),\r
+               FourInch(               "4\u2033",                      4.5,    3.786,  278.2,  1509),\r
+               SixInch(                "6\u2033",                      6.625,  5.709,  531.3,  1284);\r
+\r
+               private final Amount<Length> iD, oD;\r
+               private final Amount<Pressure> burst;\r
+               private final String name;\r
+               public String toString(){\r
+                       return name + " Schedule 80";\r
+               }\r
+               Size(String name, double oD, double iD, double wt, double psi) {\r
+                       this.oD = Amount.valueOf(oD, NonSI.INCH);\r
+                       this.iD = Amount.valueOf(iD, NonSI.INCH);\r
+                       this.name  = name;\r
+                       this.burst = Amount.valueOf(psi, RocketScience.PSI);\r
+               }\r
+       }\r
+\r
+       private CylindricalChamber chamber = new CylindricalChamber();\r
+       private Size size;\r
+\r
+       {\r
+               setSize(Size.OneInch);\r
+       }\r
+\r
+       @Override\r
+       public Amount<Volume> chamberVolume() {\r
+               return chamber.chamberVolume();\r
+       }\r
+\r
+       @Override\r
+       public Amount<Pressure> getBurstPressure() {\r
+               return size.burst;\r
+       }\r
+\r
+       @Override\r
+       public Shape chamberShape() {\r
+               return chamber.chamberShape();\r
+       }\r
+\r
+       public void setLength(Amount<Length> length) {\r
+               chamber.setLength(length);\r
+       }\r
+\r
+       public Amount<Length> getLength() {\r
+               return chamber.getLength();\r
+       }\r
+\r
+       public void setSize(Size size) {\r
+               this.size = size;\r
+               chamber.setID(size.iD);\r
+               chamber.setOD(size.oD);\r
+       }\r
+\r
+       public Size getSize() {\r
+               return size;\r
+       }\r
+       \r
+       public  Amount<Length> getID() {\r
+               return chamber.getID();\r
+       }\r
+       \r
+       public  Amount<Length> getOD() {\r
+               return chamber.getOD();\r
+       }\r
+}\r