(no commit message)
[sw/motorsim] / src / com / billkuker / rocketry / motorsim / fuel / KNSB.java
1 package com.billkuker.rocketry.motorsim.fuel;\r
2 \r
3 import javax.measure.quantity.Pressure;\r
4 import javax.measure.quantity.Temperature;\r
5 import javax.measure.quantity.Velocity;\r
6 import javax.measure.quantity.VolumetricDensity;\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.RocketScience.MolarWeight;\r
12 import com.billkuker.rocketry.motorsim.visual.Chart;\r
13 \r
14 public class KNSB extends PiecewiseSaintRobertFuel {\r
15 \r
16         public KNSB() {\r
17                 super(SaintRobertFuel.Type.SI);\r
18                 add(Amount.valueOf(             .807, SI.MEGA(SI.PASCAL)),      10.71,  0.625);\r
19                 add(Amount.valueOf(             1.5, SI.MEGA(SI.PASCAL)),       8.763, -0.314);\r
20                 add(Amount.valueOf(             3.79, SI.MEGA(SI.PASCAL)),      7.852,  -0.013);\r
21                 add(Amount.valueOf(             7.03, SI.MEGA(SI.PASCAL)),      3.907,  0.535);\r
22                 add(Amount.valueOf(             10.67, SI.MEGA(SI.PASCAL)), 9.653,      0.064);\r
23         }\r
24 \r
25         @Override\r
26         public Amount<VolumetricDensity> getIdealDensity() {\r
27                 return Amount.valueOf(1841, 0, SI.KILOGRAM.divide(SI.METER.pow(3))).to(VolumetricDensity.UNIT);\r
28         }\r
29 \r
30         public CombustionProduct getCombustionProduct() {\r
31                 return new CombustionProduct(){\r
32                         \r
33                         public Amount<Temperature> getIdealCombustionTemperature() {\r
34                                 return Amount.valueOf(1600, SI.KELVIN);\r
35                         }\r
36                 \r
37                         public Amount<MolarWeight> getEffectiveMolarWeight() {\r
38                                 return Amount.valueOf("39.9 kg/kmol").to(MolarWeight.UNIT);\r
39                         }\r
40                 \r
41                         public double getRatioOfSpecificHeats() {\r
42                                 return 1.1361;\r
43                         }\r
44                 \r
45                         public double getRatioOfSpecificHeats2Phase() {\r
46                                 return 1.042;\r
47                         }\r
48                 };\r
49         }\r
50         \r
51         public static void main( String args[]) throws Exception{\r
52                 KNSB f = new KNSB();\r
53                 \r
54                 Chart<Pressure, Velocity> burnRate = new Chart<Pressure, Velocity>(\r
55                                 SI.MEGA(SI.PASCAL),\r
56                                 SI.METERS_PER_SECOND,\r
57                                 f,\r
58                                 "burnRate");\r
59                 burnRate.setDomain(\r
60                                 burnRate.new IntervalDomain(\r
61                                                 Amount.valueOf(0, SI.MEGA(SI.PASCAL)),\r
62                                                 Amount.valueOf(11, SI.MEGA(SI.PASCAL)),\r
63                                                 20\r
64                                                 ));\r
65                 \r
66                 burnRate.show();\r
67         }\r
68 \r
69         public double getCombustionEfficiency() {\r
70                 return .97;\r
71         }\r
72 \r
73         public double getDensityRatio() {\r
74                 return .96;\r
75         }\r
76 \r
77 }\r