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 Schedule40 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.344, 0.086, 2630),
\r
24 ThreeEights( "\u215C\u2033", 0.675, 0.473, 0.115, 1990),
\r
25 OneHalf( "\u00BD\u2033", 0.84, 0.602, 0.17, 1910),
\r
26 ThreeQuarters( "\u00BE\u2033", 1.05, 0.804, 0.226, 1540),
\r
27 OneInch( "1\u2033", 1.315, 1.029, 0.333, 1440),
\r
28 OneAndAQuarter( "1\u00BC\u2033", 1.66, 1.36, 0.45, 1180),
\r
29 OneAndOneHalf( "1\u00BD\u2033", 1.9, 1.59, 0.537, 1060),
\r
30 TwoInch( "2\u2033", 2.375, 2.047, 0.72, 890),
\r
31 TowAndOneHalf( "2\u00BD\u2033", 2.875, 2.445, 1.136, 870),
\r
32 ThreeInch( "3\u2033", 3.5, 3.042, 1.488, 840);
\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 40";
\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> burstPressure() {
\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