Add Schedule 80
[sw/motorsim] / src / com / billkuker / rocketry / motorsim / cases / Schedule80.java
1 package com.billkuker.rocketry.motorsim.cases;\r
2 \r
3 import java.awt.Shape;\r
4 \r
5 import javax.measure.quantity.Length;\r
6 import javax.measure.quantity.Pressure;\r
7 import javax.measure.quantity.Volume;\r
8 import javax.measure.unit.NonSI;\r
9 \r
10 import org.jscience.physics.amount.Amount;\r
11 \r
12 import com.billkuker.rocketry.motorsim.Chamber;\r
13 import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
14 import com.billkuker.rocketry.motorsim.RocketScience;\r
15 \r
16 public class Schedule80 implements Chamber {\r
17         public static enum Size {               \r
18                 \r
19                 //Dimensions: http://www.harvel.com/pipepvc-sch40-80-dim.asp\r
20                 //Pressure: http://www.engineeringtoolbox.com/pvc-cpvc-pipes-pressures-d_796.html\r
21                 //Also: http://www.jacobsrocketry.com/aer/misc_tables.htm\r
22                 //OneEighth(            "\u215B\u2033",         0.405,  0.249,  0.051,  2630),\r
23                 OneQuarter(             "\u00BC\u2033",         0.54,   0.282,  10,     7319),\r
24                 ThreeEights(    "\u215C\u2033",         0.675,  0.403,  13.8,   5400),\r
25                 OneHalf(                "\u00BD\u2033",         0.84,   0.546,  20.2,   4308),\r
26                 ThreeQuarters(  "\u00BE\u2033",         1.05,   0.722,  27.3,   3634),\r
27                 OneInch(                "1\u2033",                      1.315,  0.936,  40.2,   3239),\r
28                 OneAndAQuarter( "1\u00BC\u2033",        1.66,   1.255,  55.4,   2582),\r
29                 OneAndOneHalf(  "1\u00BD\u2033",        1.9,    1.476,  67.3,   2298),\r
30                 TwoInch(                "2\u2033",                      2.375,  1.913,  93.2,   1932),\r
31                 TowAndOneHalf(  "2\u00BD\u2033",        2.875,  2.29,   141.9,  2044),\r
32                 ThreeInch(              "3\u2033",                      3.5,    2.864,  190.3,  1777),\r
33                 FourInch(               "4\u2033",                      4.5,    3.786,  278.2,  1509),\r
34                 SixInch(                "6\u2033",                      6.625,  5.709,  531.3,  1284);\r
35 \r
36                 private final Amount<Length> iD, oD;\r
37                 private final Amount<Pressure> burst;\r
38                 private final String name;\r
39                 public String toString(){\r
40                         return name + " Schedule 80";\r
41                 }\r
42                 Size(String name, double oD, double iD, double wt, double psi) {\r
43                         this.oD = Amount.valueOf(oD, NonSI.INCH);\r
44                         this.iD = Amount.valueOf(iD, NonSI.INCH);\r
45                         this.name  = name;\r
46                         this.burst = Amount.valueOf(psi, RocketScience.PSI);\r
47                 }\r
48         }\r
49 \r
50         private CylindricalChamber chamber = new CylindricalChamber();\r
51         private Size size;\r
52 \r
53         {\r
54                 setSize(Size.OneInch);\r
55         }\r
56 \r
57         @Override\r
58         public Amount<Volume> chamberVolume() {\r
59                 return chamber.chamberVolume();\r
60         }\r
61 \r
62         @Override\r
63         public Amount<Pressure> getBurstPressure() {\r
64                 return size.burst;\r
65         }\r
66 \r
67         @Override\r
68         public Shape chamberShape() {\r
69                 return chamber.chamberShape();\r
70         }\r
71 \r
72         public void setLength(Amount<Length> length) {\r
73                 chamber.setLength(length);\r
74         }\r
75 \r
76         public Amount<Length> getLength() {\r
77                 return chamber.getLength();\r
78         }\r
79 \r
80         public void setSize(Size size) {\r
81                 this.size = size;\r
82                 chamber.setID(size.iD);\r
83                 chamber.setOD(size.oD);\r
84         }\r
85 \r
86         public Size getSize() {\r
87                 return size;\r
88         }\r
89         \r
90         public  Amount<Length> getID() {\r
91                 return chamber.getID();\r
92         }\r
93         \r
94         public  Amount<Length> getOD() {\r
95                 return chamber.getOD();\r
96         }\r
97 }\r