Added some fun motor examples
[sw/motorsim] / src / com / billkuker / rocketry / motorsim / motors / example / CSlot.java
1 package com.billkuker.rocketry.motorsim.motors.example;\r
2 \r
3 import java.awt.Shape;\r
4 import java.awt.geom.Ellipse2D;\r
5 import java.awt.geom.Rectangle2D;\r
6 \r
7 import javax.measure.unit.SI;\r
8 \r
9 import org.jscience.physics.amount.Amount;\r
10 \r
11 import com.billkuker.rocketry.motorsim.Burn;\r
12 import com.billkuker.rocketry.motorsim.ConvergentDivergentNozzle;\r
13 import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
14 import com.billkuker.rocketry.motorsim.Motor;\r
15 import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
16 import com.billkuker.rocketry.motorsim.grain.ExtrudedShapeGrain;\r
17 \r
18 public class CSlot extends Motor {\r
19         public CSlot() {\r
20                 setName("C-Slot");\r
21                 setFuel(new KNSU());\r
22 \r
23                 CylindricalChamber c = new CylindricalChamber();\r
24                 c.setLength(Amount.valueOf(150, SI.MILLIMETER));\r
25                 c.setID(Amount.valueOf(50, SI.MILLIMETER));\r
26                 setChamber(c);\r
27 \r
28                 setGrain(new ExtrudedShapeGrain() {\r
29                         {\r
30                                 try {\r
31                                         Shape outside = new Ellipse2D.Double(0, 0, 30, 30);\r
32                                         xsection.add(outside);\r
33                                         xsection.inhibit(outside);\r
34                                         xsection.subtract(new Rectangle2D.Double(12.5,13, 5, 30));\r
35                                         setLength(Amount.valueOf(150, SI.MILLIMETER));\r
36                                         setForeEndInhibited(false);\r
37                                         setAftEndInhibited(false);\r
38                                 } catch (Exception e) {\r
39                                         throw new Error(e);\r
40                                 }\r
41                         }\r
42                 });\r
43 \r
44                 ConvergentDivergentNozzle n = new ConvergentDivergentNozzle();\r
45                 n.setThroatDiameter(Amount.valueOf(7, SI.MILLIMETER));\r
46                 n.setExitDiameter(Amount.valueOf(10, SI.MILLIMETER));\r
47                 n.setEfficiency(.85);\r
48                 setNozzle(n);\r
49         }\r
50         \r
51         public static void main(String args[]){\r
52                 new Burn(new CSlot());\r
53         }\r
54 \r
55 }\r