1 package com.billkuker.rocketry.motorsim.cases;
\r
3 import java.awt.Shape;
\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
10 import org.jscience.physics.amount.Amount;
\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
16 public class Schedule80 implements Chamber {
\r
17 public static enum Size {
\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
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
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
46 this.burst = Amount.valueOf(psi, RocketScience.PSI);
\r
50 private CylindricalChamber chamber = new CylindricalChamber();
\r
54 setSize(Size.OneInch);
\r
58 public Amount<Volume> chamberVolume() {
\r
59 return chamber.chamberVolume();
\r
63 public Amount<Pressure> getBurstPressure() {
\r
68 public Shape chamberShape() {
\r
69 return chamber.chamberShape();
\r
72 public void setLength(Amount<Length> length) {
\r
73 chamber.setLength(length);
\r
76 public Amount<Length> getLength() {
\r
77 return chamber.getLength();
\r
80 public void setSize(Size size) {
\r
82 chamber.setID(size.iD);
\r
83 chamber.setOD(size.oD);
\r
86 public Size getSize() {
\r
90 public Amount<Length> getID() {
\r
91 return chamber.getID();
\r
94 public Amount<Length> getOD() {
\r
95 return chamber.getOD();
\r