--- /dev/null
+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