(no commit message)
authorBill Kuker <bkuker@billkuker.com>
Sat, 6 Nov 2010 21:27:58 +0000 (21:27 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sat, 6 Nov 2010 21:27:58 +0000 (21:27 +0000)
src/com/billkuker/rocketry/motorsim/cases/Schedule40.java [new file with mode: 0644]

diff --git a/src/com/billkuker/rocketry/motorsim/cases/Schedule40.java b/src/com/billkuker/rocketry/motorsim/cases/Schedule40.java
new file mode 100644 (file)
index 0000000..5372dea
--- /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 Schedule40 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.344,  0.086,  2630),\r
+               ThreeEights(    "\u215C\u2033",         0.675,  0.473,  0.115,  1990),\r
+               OneHalf(                "\u00BD\u2033",         0.84,   0.602,  0.17,   1910),\r
+               ThreeQuarters(  "\u00BE\u2033",         1.05,   0.804,  0.226,  1540),\r
+               OneInch(                "1\u2033",                      1.315,  1.029,  0.333,  1440),\r
+               OneAndAQuarter( "1\u00BC\u2033",        1.66,   1.36,   0.45,   1180),\r
+               OneAndOneHalf(  "1\u00BD\u2033",        1.9,    1.59,   0.537,  1060),\r
+               TwoInch(                "2\u2033",                      2.375,  2.047,  0.72,   890),\r
+               TowAndOneHalf(  "2\u00BD\u2033",        2.875,  2.445,  1.136,  870),\r
+               ThreeInch(              "3\u2033",                      3.5,    3.042,  1.488,  840);\r
+\r
+\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 40";\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> burstPressure() {\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