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