motor updates

This commit is contained in:
Sampo Niskanen 2011-07-19 20:03:32 +00:00
parent 78338eec02
commit d1ede7c78f
52 changed files with 5282 additions and 3108 deletions

View File

@ -1,3 +1,8 @@
2011-07-18 Sampo Niskanen
* Select motor type based on known manufacturers
* Updated motor thrust curves from thrustcurve.org
2011-07-17 Sampo Niskanen
* Component scaling support

View File

@ -0,0 +1,27 @@
<engine-database>
<engine-list>
<engine FDiv="10" FFix="1" FStep="-1." Isp="199.98" Itot="1157.08" Type="reloadable" auto-calc-cg="1" auto-calc-mass="1" avgThrust="178.012" burn-time="6.5" cgDiv="10" cgFix="1" cgStep="-1." code="J175" delays="1000" dia="54." exitDia="0." initWt="1264." len="327." mDiv="10" mFix="1" mStep="-1." massFrac="46.68" mfg="Loki Research" peakThrust="420.4" propWt="590." tDiv="10" tFix="1" tStep="-1." throatDia="0.">
<data>
<eng-data cg="163.5" f="0." m="590." t="0."/>
<eng-data cg="163.5" f="4.8" m="589.988" t="0.01"/>
<eng-data cg="163.5" f="420.4" m="580.231" t="0.1"/>
<eng-data cg="163.5" f="347.5" m="560.653" t="0.2"/>
<eng-data cg="163.5" f="349.9" m="542.873" t="0.3"/>
<eng-data cg="163.5" f="364.5" m="524.659" t="0.4"/>
<eng-data cg="163.5" f="320.7" m="507.19" t="0.5"/>
<eng-data cg="163.5" f="296.4" m="428.524" t="1."/>
<eng-data cg="163.5" f="279.4" m="355.123" t="1.5"/>
<eng-data cg="163.5" f="260." m="286.363" t="2."/>
<eng-data cg="163.5" f="238.1" m="222.867" t="2.5"/>
<eng-data cg="163.5" f="209." m="165.872" t="3."/>
<eng-data cg="163.5" f="172." m="117.304" t="3.5"/>
<eng-data cg="163.5" f="133.6" m="78.3469" t="4."/>
<eng-data cg="163.5" f="102." m="48.3135" t="4.5"/>
<eng-data cg="163.5" f="75.3" m="25.712" t="5."/>
<eng-data cg="163.5" f="46.2" m="10.2236" t="5.5"/>
<eng-data cg="163.5" f="17." m="2.1671" t="6."/>
<eng-data cg="163.5" f="0." m="0." t="6.5"/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,9 @@
This directory contains manually added / modified thrust curves.
All other thrust curves are from www.thrustcurve.org
(all RASP and RSE files).
SF_*.eng - Thrust curves for Weco Feuerwerk motors, created by Sampo N.
Loki_J175.rse - Corrected motor type from hybrid to reloadable

View File

@ -0,0 +1,16 @@
; Sachsen Feuerwerk / WECO Feuerwerk A8-3
; Created by Sampo Niskanen for OpenRocket, released into the Public Domain
; Thrust curve data taken from:
; http://www.raketenmodellbautechnik.de/produkte/Motoren/SF-Motoren.pdf
; Mass measured by the author.
A8 18 70 3 0.00312 0.0153 SF
0.065 0.44
0.11 1.832
0.199 6.412
0.298 12.0
0.332 7.805
0.363 5.716
0.438 4.397
0.462 4.379
0.555 1.227
0.62 0.0

View File

@ -0,0 +1,16 @@
; Sachsen Feuerwerk / WECO Feuerwerk B4-0, B4-4
; Created by Sampo Niskanen for OpenRocket, released into the Public Domain
; Thrust curve data taken from:
; http://www.raketenmodellbautechnik.de/produkte/Motoren/SF-Motoren.pdf
; Mass measured by the author from B4-4 motors.
B4 18 70 0-4 0.00833 0.0195 SF
0.088 0.542
0.167 3.007
0.319 11.678
0.373 5.297
0.525 4.091
0.648 3.461
0.8 3.321
1.305 3.321
1.389 0.455
1.443 0.0

View File

@ -0,0 +1,29 @@
; Sachsen Feuerwerk / WECO Feuerwerk Held 1000
; Created by Sampo Niskanen for OpenRocket, released into the Public Domain
; Thrust curve data taken from:
; http://www.raketenmodellbautechnik.de/produkte/Motoren/SF-Motoren.pdf
; True propellant weight unknown, estimates from various sources
C2 15 95 P 0.012 0.024 SF
0.075 3.543
0.16 8.231
0.184 8.007
0.255 3.134
0.316 1.765
0.444 1.304
0.821 1.251
0.963 1.04
1.538 1.277
1.736 1.133
2.491 1.317
2.704 1.264
3.397 1.436
3.907 1.436
4.157 1.277
4.459 1.449
4.469 2.292
4.53 1.436
4.917 1.449
4.931 2.292
4.969 1.422
5.002 1.436
5.068 0.0

View File

@ -0,0 +1,21 @@
; Sachsen Feuerwerk / WECO Feuerwerk C6-0, C6-3, C6-5
; Created by Sampo Niskanen for OpenRocket, released into the Public Domain
; Thrust curve data taken from:
; http://www.raketenmodellbautechnik.de/produkte/Motoren/SF-Motoren.pdf
; Mass measured by the author from C6-3 motors.
C6 18 70 0-3-5 0.01248 0.022 SF
0.096 0.579
0.152 2.441
0.184 4.372
0.312 11.642
0.354 11.589
0.395 6.269
0.441 5.127
0.537 4.091
0.643 3.529
0.983 3.301
1.162 3.249
1.217 3.02
1.882 3.652
1.919 1.141
1.997 0.0

View File

@ -0,0 +1,19 @@
; Sachsen Feuerwerk / WECO Feuerwerk D7-0, D7-3
; Created by Sampo Niskanen for OpenRocket, released into the Public Domain
; Thrust curve data taken from:
; http://www.raketenmodellbautechnik.de/produkte/Motoren/SF-Motoren.pdf
; Mass measured by the author from D7-3 motors.
D7 25 70 0-3 0.019 0.043 SF
0.079 1.625
0.179 6.979
0.326 18.992
0.355 19.407
0.372 20.426
0.422 20.331
0.48 14.085
0.538 11.536
0.68 9.815
0.96 7.839
1.34 8.253
1.461 2.167
1.582 0.0

View File

@ -1,5 +1,5 @@
Rocket motor simulation data downloaded from ThrustCurve.org.
This ZIP file contains 1473 simulator data files.
This ZIP file contains 1506 simulator data files.
For more info, please see http://www.thrustcurve.org/
AMW_I195.eng
@ -1269,6 +1269,13 @@ AeroTech_F27.eng
Data Source: user
Contributor: John Coker
AeroTech_F30.eng
Manufacturer: AeroTech
Designation: F30FJ
Data Format: RASP
Data Source: mfr
Contributor: Christopher Kobel
AeroTech_F32.eng
Manufacturer: AeroTech
Designation: F32T
@ -1451,6 +1458,13 @@ AeroTech_G12.rse
Data Source: user
Contributor: John Coker
AeroTech_G138.eng
Manufacturer: AeroTech
Designation: G138T
Data Format: RASP
Data Source: user
Contributor: Scott Sager
AeroTech_G142.eng
Manufacturer: AeroTech
Designation: G142
@ -2158,6 +2172,13 @@ AeroTech_I161.rse
Data Source: user
Contributor: John Coker
AeroTech_I170.eng
Manufacturer: AeroTech
Designation: I170G
Data Format: RASP
Data Source: cert
Contributor: Mark Hairfield
AeroTech_I195.eng
Manufacturer: AeroTech
Designation: I195J
@ -3208,6 +3229,13 @@ AeroTech_L1500.rse
Data Source: user
Contributor: John Coker
AeroTech_L1520.eng
Manufacturer: AeroTech
Designation: L1520T
Data Format: RASP
Data Source: mfr
Contributor: Christopher Kobel
AeroTech_L2200.eng
Manufacturer: AeroTech
Designation: L2200G
@ -3684,6 +3712,20 @@ Apogee_F10.rse
Data Source: user
Contributor: John Coker
Cesaroni_E75.eng
Manufacturer: Cesaroni Technology
Designation: 25-E75-17A
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_E75.rse
Manufacturer: Cesaroni Technology
Designation: 25-E75-17A
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_F120.eng
Manufacturer: Cesaroni Technology
Designation: 56-F120-14A
@ -3796,6 +3838,34 @@ Cesaroni_F79.rse
Data Source: cert
Contributor: Len Bryan
Cesaroni_F85.eng
Manufacturer: Cesaroni Technology
Designation: 74-F85-15A
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_F85.rse
Manufacturer: Cesaroni Technology
Designation: 74-F85-15A
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_G100.eng
Manufacturer: Cesaroni Technology
Designation: 114-G100-14A
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_G100.rse
Manufacturer: Cesaroni Technology
Designation: 114-G100-14A
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_G106.eng
Manufacturer: Cesaroni Technology
Designation: 138-G106-14A
@ -3887,6 +3957,20 @@ Cesaroni_G126.rse
Data Source: cert
Contributor: Len Bryan
Cesaroni_G127.eng
Manufacturer: Cesaroni Technology
Designation: 137-G127-14A
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_G127.rse
Manufacturer: Cesaroni Technology
Designation: 137-G127-14A
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_G131.eng
Manufacturer: Cesaroni Technology
Designation: 125-G131-14A
@ -5147,6 +5231,20 @@ Cesaroni_J240.rse
Data Source: mfr
Contributor: Thomas Raithby
Cesaroni_J244.eng
Manufacturer: Cesaroni Technology
Designation: 867-J244-14A
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_J244.rse
Manufacturer: Cesaroni Technology
Designation: 867-J244-14A
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_J250.eng
Manufacturer: Cesaroni Technology
Designation: 683J250-15A
@ -5763,6 +5861,20 @@ Cesaroni_K300.rse
Data Source: mfr
Contributor: Andre Choquette
Cesaroni_K360.eng
Manufacturer: Cesaroni Technology
Designation: 1281-K360-13A
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_K360.rse
Manufacturer: Cesaroni Technology
Designation: 1281-K360-13A
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_K400.eng
Manufacturer: Cesaroni Technology
Designation: 1597-K400-14A
@ -5889,6 +6001,20 @@ Cesaroni_K535.rse
Data Source: user
Contributor: John Coker
Cesaroni_K555.eng
Manufacturer: Cesaroni Technology
Designation: 2406-K555_P
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_K555.rse
Manufacturer: Cesaroni Technology
Designation: 2406-K555_P
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_K570.eng
Manufacturer: Cesaroni Technology
Designation: 2060 K570-A
@ -6036,6 +6162,20 @@ Cesaroni_K710.rse
Data Source: cert
Contributor: Len Bryan
Cesaroni_K740.eng
Manufacturer: Cesaroni Technology
Designation: 1874-K740-18A
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_K740.rse
Manufacturer: Cesaroni Technology
Designation: 1874-K740-18A
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_K750.rse
Manufacturer: Cesaroni Technology
Designation: 2352 K750-18A
@ -6344,6 +6484,20 @@ Cesaroni_L820.rse
Data Source: cert
Contributor: Len Bryan
Cesaroni_L851.eng
Manufacturer: Cesaroni Technology
Designation: 3683-L851-P
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_L851.rse
Manufacturer: Cesaroni Technology
Designation: 3683-L851-P
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_L890.eng
Manufacturer: Cesaroni Technology
Designation: 3762 L890-P
@ -6435,6 +6589,20 @@ Cesaroni_M1230.rse
Data Source: cert
Contributor: Andre Choquette
Cesaroni_M1290.eng
Manufacturer: Cesaroni Technology
Designation: 7649-M1290-P
Data Format: RASP
Data Source: mfr
Contributor: Andre Choquette
Cesaroni_M1290.rse
Manufacturer: Cesaroni Technology
Designation: 7649-M1290-P
Data Format: RockSim
Data Source: mfr
Contributor: Andre Choquette
Cesaroni_M1300.eng
Manufacturer: Cesaroni Technology
Designation: 6438-M1300-P
@ -6848,6 +7016,20 @@ Cesaroni_M795.rse
Data Source: user
Contributor: John Coker
Cesaroni_M840.eng
Manufacturer: Cesaroni Technology
Designation: 7521-M840-P
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_M840.rse
Manufacturer: Cesaroni Technology
Designation: 7521-M840-P
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_N10000.eng
Manufacturer: Cesaroni Technology
Designation: 10347-N10000-P
@ -6876,6 +7058,20 @@ Cesaroni_N1100.rse
Data Source: user
Contributor: John Coker
Cesaroni_N1800.eng
Manufacturer: Cesaroni Technology
Designation: 0367-N1800-P
Data Format: RASP
Data Source: mfr
Contributor: Andre Choquette
Cesaroni_N1800.rse
Manufacturer: Cesaroni Technology
Designation: 0367-N1800-P
Data Format: RockSim
Data Source: mfr
Contributor: Andre Choquette
Cesaroni_N1975.eng
Manufacturer: Cesaroni Technology
Designation: 14272-N1975-P
@ -6904,6 +7100,20 @@ Cesaroni_N2500.rse
Data Source: user
Contributor: John Coker
Cesaroni_N2501.eng
Manufacturer: Cesaroni Technology
Designation: 15227-N2501-P
Data Format: RASP
Data Source: mfr
Contributor: Andre Choquette
Cesaroni_N2501.rse
Manufacturer: Cesaroni Technology
Designation: 15227-N2501-P
Data Format: RockSim
Data Source: mfr
Contributor: Andre Choquette
Cesaroni_N2600.eng
Manufacturer: Cesaroni Technology
Designation: 11077-N2600-SK-P
@ -6953,6 +7163,20 @@ Cesaroni_N3180.rse
Data Source: mfr
Contributor: Thomas Raithby
Cesaroni_N3301.eng
Manufacturer: Cesaroni Technology
Designation: 19318-N3301-P
Data Format: RASP
Data Source: cert
Contributor: Andre Choquette
Cesaroni_N3301.rse
Manufacturer: Cesaroni Technology
Designation: 19318-N3301-P
Data Format: RockSim
Data Source: cert
Contributor: Andre Choquette
Cesaroni_N3400.eng
Manufacturer: Cesaroni Technology
Designation: 14263-N3400-P
@ -9340,6 +9564,13 @@ KBA_M3500.rse
Data Source: mfr
Contributor: John Coker
Kosdon_I560.eng
Manufacturer: Kosdon TRM
Designation: I560F
Data Format: RASP
Data Source: user
Contributor: Mark Trevithick
Loki_G69.rse
Manufacturer: Loki Research
Designation: G69-SF

View File

@ -1,15 +1,15 @@
; @File: E20.txt, @Pts-I: 1001, @Pts-O: 32, @Sm: 3, @CO: 5%
; @TI: 34.6666, @TIa: 34.5451, @TIe: 0.0%, @ThMax: 34.6991, @ThAvg: 22.1301, @Tb: 1.561
; Exported using ThrustCurveTool, www.ThrustGear.com
E22 24 65 4-7-10 0.0162 0.049 A
0.0 0.0290422
;@File: E20.txt, @Pts-I: 1001, @Pts-O: 32, @Sm: 3, @CO: 5%
;@TI: 34.6666, @TIa: 34.5451, @TIe: 0.0%, @ThMax: 34.6991, @ThAvg: 22.1301, @Tb: 1.561
;Exported using ThrustCurveTool, www.ThrustGear.com
E20 24 65 4-7-10 0.0162 0.049 A
0 0.0290422
0.024 0.227567
0.038 1.394029
0.038 1.39403
0.048 2.6721
0.056 5.81661
0.06 7.76916
0.062 9.00446
0.064 10.71764
0.064 10.7176
0.072 20.3365
0.074 22.4147
0.08 27.1311
@ -25,12 +25,13 @@ E22 24 65 4-7-10 0.0162 0.049 A
0.77 27.3596
0.8 26.3903
0.9 24.2069
1.084 18.06808
1.134 16.89181
1.16 15.87009
1.2899 12.19213
1.084 18.0681
1.134 16.8918
1.16 15.8701
1.2899 12.1921
1.3719 9.38065
1.5079 4.03928
1.5519 2.72185
1.6019 1.720821
1.7579 0.0
1.6019 1.72082
1.7579 0
;

View File

@ -0,0 +1,23 @@
; From AT Instruction Sheet by C. Kobel 1/4/11
F30FJ 24 90 4-6-8 0.0318 0.070 AT
0.056 22.706
0.102 34.315
0.134 36.363
0.200 36.876
0.300 36.705
0.400 37.217
0.500 38.241
0.600 37.900
0.700 37.900
0.800 37.217
0.900 36.363
1.000 35.168
1.100 33.291
1.175 32.608
1.200 31.413
1.260 26.974
1.300 22.706
1.400 9.219
1.453 5.805
1.500 4.097
1.600 0.0

View File

@ -0,0 +1,43 @@
; AeroTech G138T
; from the reload instruction sheet 08/11/2010
; Created by Scott Sager 10/10/2010
G138T 29 123.8 14 0.0704 0.152 AT
0.0020 113.497
0.043 118.736
0.098 125.065
0.138 126.157
0.198 133.578
0.251 140.999
0.293 146.019
0.347 148.856
0.398 156.932
0.447 160.861
0.5 165.881
0.548 169.591
0.601 173.738
0.646 177.449
0.697 183.123
0.739 182.032
0.798 182.469
0.839 181.159
0.901 182.469
0.947 194.691
0.972 185.306
0.986 174.611
0.998 161.515
1.0 156.714
1.012 143.618
1.018 133.796
1.026 120.263
1.031 111.969
1.036 98.437
1.041 89.052
1.044 77.484
1.049 67.662
1.054 54.784
1.059 46.708
1.064 33.176
1.073 23.136
1.082 12.659
1.098 0.873
1.099 0.0

View File

@ -0,0 +1,15 @@
; Aerotech I170G from TRA Cert Data
; Created by Mark Hairfield 12-29-10
I170G 54 151 10 0.227 0.528 AT
0.06 89.0
0.16 169.0
0.25 184.6
0.5 202.4
0.75 207.3
1.0 202.4
1.5 177.9
2.18 137.9
2.25 139.7
2.30 131.2
2.35 22.2
2.40 0.0

View File

@ -0,0 +1,35 @@
; Based on AT Instruction Sheet by C. Kobel 12/22/2010
L1520T 75 531 P 1.773 3.620 AT
0.011 1484.553
0.055 1506.304
0.089 1468.239
0.155 1560.684
0.200 1571.559
0.300 1582.435
0.400 1598.749
0.500 1620.501
0.600 1642.252
0.700 1653.128
0.800 1674.88
0.900 1691.194
1.000 1685.756
1.100 1696.632
1.200 1691.194
1.300 1691.194
1.400 1680.318
1.500 1664.004
1.600 1636.814
1.700 1620.501
1.800 1604.187
1.900 1576.997
2.000 1560.684
2.100 1538.932
2.200 1500.866
2.227 1435.611
2.250 1125.65
2.290 832.002
2.366 647.113
2.400 456.785
2.440 244.706
2.500 59.817
2.600 0.0

View File

@ -0,0 +1,20 @@
; Pro24-1G Vmax 25-E75
25-E75-VM-17A 24 69 17-14-12-10-8 0.016 0.052000000000000005 CTI
0.0090 84.213
0.012 95.099
0.023 77.08
0.027 68.697
0.047 73.452
0.092 81.835
0.118 83.837
0.141 86.465
0.192 86.966
0.222 85.339
0.25 80.083
0.26 78.332
0.281 82.961
0.287 78.206
0.306 24.776
0.314 14.14
0.326 8.509
0.329 0.0

View File

@ -0,0 +1,33 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="25-E75-VM-17A" Type="unspecified" dia="24." len="69."
initWt="52." propWt="16." delays="17,14,12,10,8" auto-calc-mass="1"
auto-calc-cg="1" avgThrust="74.434" peakThrust="95.099" throatDia="0."
exitDia="0." Itot="24.489" burn-time="0.33" massFrac="30.77" Isp="156.07"
tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro24-1G Vmax 25-E75</comments>
<data>
<eng-data t="0." f="0." m="16." cg="34.5"/>
<eng-data t="0.009" f="84.213" m="15.7524" cg="34.5"/>
<eng-data t="0.012" f="95.099" m="15.5767" cg="34.5"/>
<eng-data t="0.023" f="77.08" m="14.958" cg="34.5"/>
<eng-data t="0.027" f="68.697" m="14.7675" cg="34.5"/>
<eng-data t="0.047" f="73.452" m="13.8387" cg="34.5"/>
<eng-data t="0.092" f="81.835" m="11.5559" cg="34.5"/>
<eng-data t="0.118" f="83.837" m="10.1488" cg="34.5"/>
<eng-data t="0.141" f="86.465" m="8.86918" cg="34.5"/>
<eng-data t="0.192" f="86.966" m="5.97971" cg="34.5"/>
<eng-data t="0.222" f="85.339" m="4.29106" cg="34.5"/>
<eng-data t="0.25" f="80.083" m="2.77795" cg="34.5"/>
<eng-data t="0.26" f="78.332" m="2.26044" cg="34.5"/>
<eng-data t="0.281" f="82.961" m="1.15393" cg="34.5"/>
<eng-data t="0.287" f="78.206" m="0.838029" cg="34.5"/>
<eng-data t="0.306" f="24.776" m="0.198831" cg="34.5"/>
<eng-data t="0.314" f="14.14" m="0.0971265" cg="34.5"/>
<eng-data t="0.326" f="8.509" m="0.00833913" cg="34.5"/>
<eng-data t="0.329" f="0." m="0." cg="34.5"/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,12 @@
; Pro24-3G White Thunder 74-F85
74-F85-WT-15A 24 133 15-12-10-8-6 0.042 0.096 CTI
0.01 76.074
0.023 100.185
0.04 92.425
0.118 100.878
0.283 102.402
0.51 96.443
0.688 87.436
0.787 25.912
0.852 7.206
0.873 0.0

View File

@ -0,0 +1,25 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="74-F85-WT-15A" Type="unspecified" dia="24." len="133."
initWt="96." propWt="42." delays="15,12,10,8,6" auto-calc-mass="1"
auto-calc-cg="1" avgThrust="83.814" peakThrust="102.402" throatDia="0."
exitDia="0." Itot="73.17" burn-time="0.87" massFrac="43.75" Isp="177.65"
tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro24-3G White Thunder 74-F85</comments>
<data>
<eng-data t="0." f="0." m="42." cg="66.5"/>
<eng-data t="0.01" f="76.074" m="41.7817" cg="66.5"/>
<eng-data t="0.023" f="100.185" m="41.124" cg="66.5"/>
<eng-data t="0.04" f="92.425" m="40.1843" cg="66.5"/>
<eng-data t="0.118" f="100.878" m="35.8569" cg="66.5"/>
<eng-data t="0.283" f="102.402" m="26.2304" cg="66.5"/>
<eng-data t="0.51" f="96.443" m="13.2757" cg="66.5"/>
<eng-data t="0.688" f="87.436" m="3.88187" cg="66.5"/>
<eng-data t="0.787" f="25.912" m="0.661258" cg="66.5"/>
<eng-data t="0.852" f="7.206" m="0.0434313" cg="66.5"/>
<eng-data t="0.873" f="0." m="0." cg="66.5"/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,12 @@
; Pro24-6G Skidmark 114-G100
114-G100-SK-14A 24 228 14-11-9-7-5 0.073 0.159 CTI
0.0090 148.468
0.024 178.207
0.061 145.289
0.475 117.367
0.63 106.243
0.833 85.131
0.961 51.759
1.024 29.966
1.125 13.848
1.186 0.0

View File

@ -0,0 +1,25 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="114-G100-SK-14A" Type="unspecified" dia="24." len="228."
initWt="159." propWt="73." delays="14,11,9,7,5" auto-calc-mass="1"
auto-calc-cg="1" avgThrust="96.288" peakThrust="178.207" throatDia="0."
exitDia="0." Itot="114.197" burn-time="1.19" massFrac="45.91" Isp="159.52"
tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro24-6G Skidmark 114-G100</comments>
<data>
<eng-data t="0." f="0." m="73." cg="114."/>
<eng-data t="0.009" f="148.468" m="72.5729" cg="114."/>
<eng-data t="0.024" f="178.207" m="71.0067" cg="114."/>
<eng-data t="0.061" f="145.289" m="67.181" cg="114."/>
<eng-data t="0.475" f="117.367" m="32.4254" cg="114."/>
<eng-data t="0.63" f="106.243" m="21.3474" cg="114."/>
<eng-data t="0.833" f="85.131" m="8.93043" cg="114."/>
<eng-data t="0.961" f="51.759" m="3.33003" cg="114."/>
<eng-data t="1.024" f="29.966" m="1.68439" cg="114."/>
<eng-data t="1.125" f="13.848" m="0.269994" cg="114."/>
<eng-data t="1.186" f="0." m="0." cg="114."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,14 @@
; Pro24-6G RL 137-G127
137-G127-RL-14A 24 228 14-11-9-7-5 0.081 0.166 CTI
0.018 164.454
0.029 175.478
0.042 172.103
0.14 179.753
0.378 158.83
0.578 138.583
0.763 121.485
0.838 97.638
0.9 62.317
0.966 32.621
1.056 13.048
1.081 0.0

View File

@ -0,0 +1,27 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="137-G127-RL-14A" Type="unspecified" dia="24." len="228."
initWt="166." propWt="81." delays="14,11,9,7,5" auto-calc-mass="1"
auto-calc-cg="1" avgThrust="125.315" peakThrust="179.753" throatDia="0."
exitDia="0." Itot="135.466" burn-time="1.08" massFrac="48.8" Isp="170.54"
tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro24-6G RL 137-G127</comments>
<data>
<eng-data t="0." f="0." m="81." cg="114."/>
<eng-data t="0.018" f="164.454" m="80.115" cg="114."/>
<eng-data t="0.029" f="175.478" m="78.9971" cg="114."/>
<eng-data t="0.042" f="172.103" m="77.6462" cg="114."/>
<eng-data t="0.14" f="179.753" m="67.3372" cg="114."/>
<eng-data t="0.378" f="158.83" m="43.2455" cg="114."/>
<eng-data t="0.578" f="138.583" m="25.4621" cg="114."/>
<eng-data t="0.763" f="121.485" m="11.0779" cg="114."/>
<eng-data t="0.838" f="97.638" m="6.16459" cg="114."/>
<eng-data t="0.9" f="62.317" m="3.19966" cg="114."/>
<eng-data t="0.966" f="32.621" m="1.32635" cg="114."/>
<eng-data t="1.056" f="13.048" m="0.0975235" cg="114."/>
<eng-data t="1.081" f="0." m="0." cg="114."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,15 @@
; Pro54-2G White 867-J244
867-J244-WH-14A 54 236 14-11-9-7-5 0.511 0.911 CTI
0.029 154.144
0.1 262.541
0.161 235.691
0.484 256.575
0.853 261.215
1.348 266.519
1.904 262.541
2.422 251.934
2.855 235.691
3.176 223.094
3.252 221.768
3.362 184.972
3.5 0.0

View File

@ -0,0 +1,28 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="867-J244-WH-14A" Type="unspecified" dia="54." len="236."
initWt="911." propWt="511." delays="14,11,9,7,5" auto-calc-mass="1"
auto-calc-cg="1" avgThrust="242.698" peakThrust="266.519" throatDia="0."
exitDia="0." Itot="849.443" burn-time="3.5" massFrac="56.09" Isp="169.51"
tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro54-2G White 867-J244</comments>
<data>
<eng-data t="0." f="0." m="511." cg="118."/>
<eng-data t="0.029" f="154.144" m="509.655" cg="118."/>
<eng-data t="0.1" f="262.541" m="500.757" cg="118."/>
<eng-data t="0.161" f="235.691" m="491.615" cg="118."/>
<eng-data t="0.484" f="256.575" m="443.79" cg="118."/>
<eng-data t="0.853" f="261.215" m="386.32" cg="118."/>
<eng-data t="1.348" f="266.519" m="307.747" cg="118."/>
<eng-data t="1.904" f="262.541" m="219.269" cg="118."/>
<eng-data t="2.422" f="251.934" m="139.11" cg="118."/>
<eng-data t="2.855" f="235.691" m="75.6015" cg="118."/>
<eng-data t="3.176" f="223.094" m="31.3049" cg="118."/>
<eng-data t="3.252" f="221.768" m="21.1354" cg="118."/>
<eng-data t="3.362" f="184.972" m="7.67789" cg="118."/>
<eng-data t="3.5" f="0." m="0." cg="118."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,13 @@
; Pro54-3G White 1281-K360
1281-K360-WH-13A 54 236 13-10-8-6-4 0.747 1.232 CTI
0.034 289.25
0.077 362.318
0.463 387.514
1.106 398.6
1.564 405.151
2.063 398.6
2.57 383.483
3.101 354.759
3.18 343.673
3.417 105.319
3.5 0.0

View File

@ -0,0 +1,26 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="1281-K360-WH-13A" Type="unspecified" dia="54." len="236."
initWt="1232." propWt="747." delays="13,10,8,6,4" auto-calc-mass="1"
auto-calc-cg="1" avgThrust="365.828" peakThrust="405.151" throatDia="0."
exitDia="0." Itot="1280.4" burn-time="3.5" massFrac="60.63" Isp="174.79"
tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro54-3G White 1281-K360</comments>
<data>
<eng-data t="0." f="0." m="747." cg="118."/>
<eng-data t="0.034" f="289.25" m="744.131" cg="118."/>
<eng-data t="0.077" f="362.318" m="735.958" cg="118."/>
<eng-data t="0.463" f="387.514" m="651.528" cg="118."/>
<eng-data t="1.106" f="398.6" m="504.08" cg="118."/>
<eng-data t="1.564" f="405.151" m="396.697" cg="118."/>
<eng-data t="2.063" f="398.6" m="279.702" cg="118."/>
<eng-data t="2.57" f="383.483" m="164.036" cg="118."/>
<eng-data t="3.101" f="354.759" m="49.6859" cg="118."/>
<eng-data t="3.18" f="343.673" m="33.5907" cg="118."/>
<eng-data t="3.417" f="105.319" m="2.54994" cg="118."/>
<eng-data t="3.5" f="0." m="0." cg="118."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,14 @@
; Pro75-2G White 2406-K555
2406-K555-WH-P 75 350 P 1.486 2.759 CTI
0.038 426.052
0.07 585.324
0.137 522.412
0.751 543.914
1.732 629.124
2.057 639.477
3.221 571.786
3.84 516.041
4.091 472.241
4.163 398.976
4.274 148.919
4.314 0.0

View File

@ -0,0 +1,27 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="2406-K555-WH-P" Type="unspecified" dia="75." len="350."
initWt="2759." propWt="1486." delays="0" auto-calc-mass="1" auto-calc-cg="1"
avgThrust="556.488" peakThrust="639.477" throatDia="0." exitDia="0."
Itot="2400.69" burn-time="4.31" massFrac="53.86" Isp="164.74" tDiv="10"
tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10" mStep="-1."
mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro75-2G White 2406-K555</comments>
<data>
<eng-data t="0." f="0." m="1486." cg="175."/>
<eng-data t="0.038" f="426.052" m="1480.99" cg="175."/>
<eng-data t="0.07" f="585.324" m="1470.97" cg="175."/>
<eng-data t="0.137" f="522.412" m="1448." cg="175."/>
<eng-data t="0.751" f="543.914" m="1245.37" cg="175."/>
<eng-data t="1.732" f="629.124" m="889.218" cg="175."/>
<eng-data t="2.057" f="639.477" m="761.615" cg="175."/>
<eng-data t="3.221" f="571.786" m="325.255" cg="175."/>
<eng-data t="3.84" f="516.041" m="116.853" cg="175."/>
<eng-data t="4.091" f="472.241" m="40.0798" cg="175."/>
<eng-data t="4.163" f="398.976" m="20.6659" cg="175."/>
<eng-data t="4.274" f="148.919" m="1.84358" cg="175."/>
<eng-data t="4.314" f="0." m="0." cg="175."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,11 @@
; Pro54-4G C-Star 1874-K740
1874-K740-CS-18A 54 404 18-16-14-12-10-8 0.9 1.469 CTI
0.02 735.227
0.052 853.409
0.486 869.318
0.893 848.864
1.903 735.227
2.131 722.727
2.32 330.682
2.462 101.136
2.5 0.0

View File

@ -0,0 +1,24 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="1874-K740-CS-18A" Type="unspecified" dia="54." len="404."
initWt="1469." propWt="900." delays="18,16,14,12,10,8" auto-calc-mass="1"
auto-calc-cg="1" avgThrust="741.821" peakThrust="869.318" throatDia="0."
exitDia="0." Itot="1854.55" burn-time="2.5" massFrac="61.27" Isp="210.12"
tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro54-4G C-Star 1874-K740</comments>
<data>
<eng-data t="0." f="0." m="900." cg="202."/>
<eng-data t="0.02" f="735.227" m="896.432" cg="202."/>
<eng-data t="0.052" f="853.409" m="884.097" cg="202."/>
<eng-data t="0.486" f="869.318" m="702.679" cg="202."/>
<eng-data t="0.893" f="848.864" m="532.997" cg="202."/>
<eng-data t="1.903" f="735.227" m="144.779" cg="202."/>
<eng-data t="2.131" f="722.727" m="64.1206" cg="202."/>
<eng-data t="2.32" f="330.682" m="15.8111" cg="202."/>
<eng-data t="2.462" f="101.136" m="0.93253" cg="202."/>
<eng-data t="2.5" f="0." m="0." cg="202."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,13 @@
; Pro75-3G White 3683-L851
3683-L851-WH-P 75 486 P 2.195 3.789 CTI
0.059 971.271
0.102 855.249
0.485 838.674
1.353 911.602
1.824 980.11
3.107 883.978
3.68 816.575
4.031 732.597
4.128 579.006
4.256 246.409
4.339 0.0

View File

@ -0,0 +1,26 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="3683-L851-WH-P" Type="unspecified" dia="75." len="486."
initWt="3789." propWt="2195." delays="0" auto-calc-mass="1" auto-calc-cg="1"
avgThrust="847.89" peakThrust="980.11" throatDia="0." exitDia="0." Itot="3678.99"
burn-time="4.34" massFrac="57.93" Isp="170.91" tDiv="10" tStep="-1." tFix="1"
FDiv="10" FStep="-1." FFix="1" mDiv="10" mStep="-1." mFix="1" cgDiv="10"
cgStep="-1." cgFix="1">
<comments>Pro75-3G White 3683-L851</comments>
<data>
<eng-data t="0." f="0." m="2195." cg="243."/>
<eng-data t="0.059" f="971.271" m="2177.91" cg="243."/>
<eng-data t="0.102" f="855.249" m="2154.48" cg="243."/>
<eng-data t="0.485" f="838.674" m="1960.94" cg="243."/>
<eng-data t="1.353" f="911.602" m="1507.72" cg="243."/>
<eng-data t="1.824" f="980.11" m="1241.93" cg="243."/>
<eng-data t="3.107" f="883.978" m="528.468" cg="243."/>
<eng-data t="3.68" f="816.575" m="237.784" cg="243."/>
<eng-data t="4.031" f="732.597" m="75.5724" cg="243."/>
<eng-data t="4.128" f="579.006" m="37.6191" cg="243."/>
<eng-data t="4.256" f="246.409" m="6.10113" cg="243."/>
<eng-data t="4.339" f="0." m="0." cg="243."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,20 @@
; Pro98 3G 7649 M1290-WH Plugged
7649-M1290-WH-P 98 548 P 4.421 7.4110000000000005 CTI
0.024 227.074
0.063 873.362
0.107 1161.572
0.166 1399.563
0.292 1358.079
0.892 1434.498
1.398 1513.1
2.484 1558.952
2.748 1550.218
3.009 1506.55
4.091 1281.659
5.347 1026.201
5.473 984.716
5.596 718.341
5.663 469.432
5.789 213.974
5.856 192.14
6.046 0.0

View File

@ -0,0 +1,33 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="7649-M1290-WH-P" Type="unspecified" dia="98." len="548."
initWt="7411." propWt="4421." delays="0" auto-calc-mass="1" auto-calc-cg="1"
avgThrust="1270.77" peakThrust="1558.95" throatDia="0." exitDia="0."
Itot="7683.08" burn-time="6.05" massFrac="59.65" Isp="177.21" tDiv="10"
tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10" mStep="-1."
mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro98 3G 7649 M1290-WH Plugged</comments>
<data>
<eng-data t="0." f="0." m="4421." cg="274."/>
<eng-data t="0.024" f="227.074" m="4419.43" cg="274."/>
<eng-data t="0.063" f="873.362" m="4407.08" cg="274."/>
<eng-data t="0.107" f="1161.57" m="4381.32" cg="274."/>
<eng-data t="0.166" f="1399.56" m="4337.85" cg="274."/>
<eng-data t="0.292" f="1358.08" m="4237.88" cg="274."/>
<eng-data t="0.892" f="1434.5" m="3755.81" cg="274."/>
<eng-data t="1.398" f="1513.1" m="3326.69" cg="274."/>
<eng-data t="2.484" f="1558.95" m="2366.82" cg="274."/>
<eng-data t="2.748" f="1550.22" m="2130.66" cg="274."/>
<eng-data t="3.009" f="1506.55" m="1901.12" cg="274."/>
<eng-data t="4.091" f="1281.66" m="1033.15" cg="274."/>
<eng-data t="5.347" f="1026.2" m="199.17" cg="274."/>
<eng-data t="5.473" f="984.716" m="126.271" cg="274."/>
<eng-data t="5.596" f="718.341" m="66.0025" cg="274."/>
<eng-data t="5.663" f="469.432" m="43.1063" cg="274."/>
<eng-data t="5.789" f="213.974" m="18.3318" cg="274."/>
<eng-data t="5.856" f="192.14" m="10.5033" cg="274."/>
<eng-data t="6.046" f="0." m="0." cg="274."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,13 @@
; Pro75-6G White/LB 7521-M840
7521-M840-WH/LB-P 75 879.3 P 4.436 6.954 CTI
0.072 1980.022
0.246 1447.281
0.835 1120.977
2.132 1094.34
3.922 1003.33
5.441 810.211
6.559 621.532
7.357 472.808
8.547 199.778
8.973 97.669
9.009 0.0

View File

@ -0,0 +1,26 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="7521-M840-WH/LB-P" Type="unspecified" dia="75." len="879.3"
initWt="6954." propWt="4436." delays="0" auto-calc-mass="1" auto-calc-cg="1"
avgThrust="834.669" peakThrust="1980.02" throatDia="0." exitDia="0."
Itot="7519.53" burn-time="9.01" massFrac="63.79" Isp="172.85" tDiv="10"
tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10" mStep="-1."
mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro75-6G White/LB 7521-M840</comments>
<data>
<eng-data t="0." f="0." m="4436." cg="439.65"/>
<eng-data t="0.072" f="1980.02" m="4393.95" cg="439.65"/>
<eng-data t="0.246" f="1447.28" m="4218.05" cg="439.65"/>
<eng-data t="0.835" f="1120.98" m="3771.85" cg="439.65"/>
<eng-data t="2.132" f="1094.34" m="2924.34" cg="439.65"/>
<eng-data t="3.922" f="1003.33" m="1816.79" cg="439.65"/>
<eng-data t="5.441" f="810.211" m="1004.23" cg="439.65"/>
<eng-data t="6.559" f="621.532" m="532.085" cg="439.65"/>
<eng-data t="7.357" f="472.808" m="274.496" cg="439.65"/>
<eng-data t="8.547" f="199.778" m="38.4129" cg="439.65"/>
<eng-data t="8.973" f="97.669" m="1.03712" cg="439.65"/>
<eng-data t="9.009" f="0." m="0." cg="439.65"/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,21 @@
; Pro98 4G 10367 N1800-WH Plugged
10367-N1800-WH-P 98 702 P 4.8420000000000005 9.18 CTI
0.077 1769.444
0.123 2205.556
0.193 2041.667
0.339 1988.889
0.744 1994.444
2.398 2144.444
2.726 2119.444
2.977 2077.778
3.933 1786.111
4.643 1525.0
4.986 1444.444
5.152 1352.778
5.225 1261.111
5.348 994.444
5.437 738.889
5.541 622.222
5.73 355.556
5.915 75.0
5.931 0.0

View File

@ -0,0 +1,34 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="10367-N1800-WH-P" Type="unspecified" dia="98." len="702."
initWt="9180." propWt="4842." delays="0" auto-calc-mass="1" auto-calc-cg="1"
avgThrust="1742.81" peakThrust="2205.56" throatDia="0." exitDia="0."
Itot="10336.6" burn-time="5.93" massFrac="52.75" Isp="217.69" tDiv="10"
tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10" mStep="-1."
mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro98 4G 10367 N1800-WH Plugged</comments>
<data>
<eng-data t="0." f="0." m="4842." cg="351."/>
<eng-data t="0.077" f="1769.44" m="4810.09" cg="351."/>
<eng-data t="0.123" f="2205.56" m="4767.26" cg="351."/>
<eng-data t="0.193" f="2041.67" m="4697.63" cg="351."/>
<eng-data t="0.339" f="1988.89" m="4559.8" cg="351."/>
<eng-data t="0.744" f="1994.44" m="4181.95" cg="351."/>
<eng-data t="2.398" f="2144.44" m="2578.58" cg="351."/>
<eng-data t="2.726" f="2119.44" m="2251.01" cg="351."/>
<eng-data t="2.977" f="2077.78" m="2004.27" cg="351."/>
<eng-data t="3.933" f="1786.11" m="1139.1" cg="351."/>
<eng-data t="4.643" f="1525." m="588.486" cg="351."/>
<eng-data t="4.986" f="1444.44" m="349.933" cg="351."/>
<eng-data t="5.152" f="1352.78" m="241.177" cg="351."/>
<eng-data t="5.225" f="1261.11" m="196.486" cg="351."/>
<eng-data t="5.348" f="994.444" m="131.506" cg="351."/>
<eng-data t="5.437" f="738.889" m="95.3747" cg="351."/>
<eng-data t="5.541" f="622.222" m="62.2201" cg="351."/>
<eng-data t="5.73" f="355.556" m="18.937" cg="351."/>
<eng-data t="5.915" f="75." m="0.281059" cg="351."/>
<eng-data t="5.931" f="0." m="0." cg="351."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,17 @@
; Pro98 6G 15227 N2501-WH Plugged
15227-N2501-WH-P 98 1010 P 8.704 13.308 CTI
0.039 1715.546
0.059 2835.722
0.141 3488.423
0.224 3188.534
0.373 3135.612
2.237 2998.897
2.905 2928.335
3.45 2769.57
3.462 2787.211
4.537 2407.938
4.804 1949.283
5.165 1684.675
5.511 1181.918
6.013 313.12
6.088 0.0

View File

@ -0,0 +1,30 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="15227-N2501-WH-P" Type="unspecified" dia="98." len="1010."
initWt="13308." propWt="8704." delays="0" auto-calc-mass="1" auto-calc-cg="1"
avgThrust="2510.27" peakThrust="3488.42" throatDia="0." exitDia="0."
Itot="15282.5" burn-time="6.09" massFrac="65.4" Isp="179.04" tDiv="10"
tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10" mStep="-1."
mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro98 6G 15227 N2501-WH Plugged</comments>
<data>
<eng-data t="0." f="0." m="8704." cg="505."/>
<eng-data t="0.039" f="1715.55" m="8684.95" cg="505."/>
<eng-data t="0.059" f="2835.72" m="8659.03" cg="505."/>
<eng-data t="0.141" f="3488.42" m="8511.35" cg="505."/>
<eng-data t="0.224" f="3188.53" m="8353.53" cg="505."/>
<eng-data t="0.373" f="3135.61" m="8085.2" cg="505."/>
<eng-data t="2.237" f="2998.9" m="4828.93" cg="505."/>
<eng-data t="2.905" f="2928.34" m="3701.41" cg="505."/>
<eng-data t="3.45" f="2769.57" m="2817.1" cg="505."/>
<eng-data t="3.462" f="2787.21" m="2798.11" cg="505."/>
<eng-data t="4.537" f="2407.94" m="1207.73" cg="505."/>
<eng-data t="4.804" f="1949.28" m="876.435" cg="505."/>
<eng-data t="5.165" f="1684.67" m="502.857" cg="505."/>
<eng-data t="5.511" f="1181.92" m="220.41" cg="505."/>
<eng-data t="6.013" f="313.12" m="6.68754" cg="505."/>
<eng-data t="6.088" f="0." m="0." cg="505."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,15 @@
; Pro98-6GXL White 19318-N3301
19318-N3301-WH-P 98 1239 P 10.919 16.525 CTI
0.027 5000.0
0.074 4201.389
0.114 4415.509
0.325 4091.435
1.438 3993.056
2.391 3964.12
3.139 3842.593
4.033 3524.306
4.425 2557.87
4.774 2314.815
5.318 1116.898
5.793 329.861
5.875 0.0

View File

@ -0,0 +1,28 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="19318-N3301-WH-P" Type="unspecified" dia="98." len="1239."
initWt="16525." propWt="10919." delays="0" auto-calc-mass="1" auto-calc-cg="1"
avgThrust="3266.35" peakThrust="5000." throatDia="0." exitDia="0." Itot="19189.8"
burn-time="5.88" massFrac="66.08" Isp="179.21" tDiv="10" tStep="-1." tFix="1"
FDiv="10" FStep="-1." FFix="1" mDiv="10" mStep="-1." mFix="1" cgDiv="10"
cgStep="-1." cgFix="1">
<comments>Pro98-6GXL White 19318-N3301</comments>
<data>
<eng-data t="0." f="0." m="10919." cg="619.5"/>
<eng-data t="0.027" f="5000." m="10880.6" cg="619.5"/>
<eng-data t="0.074" f="4201.39" m="10757.6" cg="619.5"/>
<eng-data t="0.114" f="4415.51" m="10659.5" cg="619.5"/>
<eng-data t="0.325" f="4091.43" m="10148.8" cg="619.5"/>
<eng-data t="1.438" f="3993.06" m="7588.89" cg="619.5"/>
<eng-data t="2.391" f="3964.12" m="5431.47" cg="619.5"/>
<eng-data t="3.139" f="3842.59" m="3770.16" cg="619.5"/>
<eng-data t="4.033" f="3524.31" m="1896.44" cg="619.5"/>
<eng-data t="4.425" f="2557.87" m="1218.14" cg="619.5"/>
<eng-data t="4.774" f="2314.82" m="734.325" cg="619.5"/>
<eng-data t="5.318" f="1116.9" m="203.207" cg="619.5"/>
<eng-data t="5.793" f="329.861" m="7.69532" cg="619.5"/>
<eng-data t="5.875" f="0." m="0." cg="619.5"/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,54 @@
;Manufacturer: Kosdon TRM
;Entered: Dec 29, 2009
;Last Updated: December 15, 2010
;Mfr. Designation: I-560F
;Previous Designation: I-800
;Brand Name: I560F
;Common Name: I-560
;Motor Type: reload
;Delays: 20
;Diameter: 29.0mm
;Length: 59.7cm
;Total Weight:
;Propellant Weight: 246g
;Propellant Weight, advertised: 235g
;Delay Length: .735"
;Cert. Org.: Tripoli Rocketry Association, Inc.
;Cert. Designation: I551 (26% I)
;Cert. Date:
;Average Thrust: 550.9N
;Maximum Thrust:
;Total Impulse: 404.2Ns
;Total Impulse, advertised 436 Ns
;Burn Time: 0.7s
;Burn Time, advertised: .76s
;Propellant Info: Fast
;Advertised Lift: 200 Lbs.
;Advertised Data taken from Frank Kosdon's 1998 Catalog
I560 28.956000 597.408000 0 0.246362 0.530712 K
0.01 589.55
0.05 867.33
0.08 850.44
0.11 858.52
0.14 870.51
0.17 884.49
0.20 899.92
0.23 917.48
0.27 932.37
0.30 948.22
0.33 963.32
0.36 973.92
0.39 943.05
0.42 678.73
0.45 237.05
0.48 221.40
0.52 212.53
0.55 202.72
0.58 200.00
0.61 188.21
0.64 145.22
0.68 96.66
0.71 60.02
0.74 32.13
0.77 10.50
0.80 0.00

View File

@ -1,6 +1,6 @@
<engine-database>
<engine-list>
<engine FDiv="10" FFix="1" FStep="-1." Isp="199.98" Itot="1157.08" Type="hybrid" auto-calc-cg="1" auto-calc-mass="1" avgThrust="178.012" burn-time="6.5" cgDiv="10" cgFix="1" cgStep="-1." code="J175" delays="1000" dia="54." exitDia="0." initWt="1264." len="327." mDiv="10" mFix="1" mStep="-1." massFrac="46.68" mfg="Loki Research" peakThrust="420.4" propWt="590." tDiv="10" tFix="1" tStep="-1." throatDia="0.">
<engine FDiv="10" FFix="1" FStep="-1." Isp="199.98" Itot="1157.08" Type="reloadable" auto-calc-cg="1" auto-calc-mass="1" avgThrust="178.012" burn-time="6.5" cgDiv="10" cgFix="1" cgStep="-1." code="J175" delays="1000" dia="54." exitDia="0." initWt="1264." len="327." mDiv="10" mFix="1" mStep="-1." massFrac="46.68" mfg="Loki Research" peakThrust="420.4" propWt="590." tDiv="10" tFix="1" tStep="-1." throatDia="0.">
<data>
<eng-data cg="163.5" f="0." m="590." t="0."/>
<eng-data cg="163.5" f="4.8" m="589.988" t="0.01"/>

View File

@ -198,20 +198,22 @@ Component class & Description \\
\end{table}
Additionally three interfaces are defined for the components,
\code{MotorMount}, \code{Clusterable} and \code{RadialParent}.
Components implementing the \code{Motor\-Mount} interface, currently
\code{BodyTube} and \code{InnerTube}, can function as motor mounts and
have motors loaded in them. The \code{Clusterable} interface
signifies that the component can be clustered in various
configurations. Currently only the \code{InnerTube} component can be
clustered. Components and motors that are attached to a clustered
inner tube are automatically replicated to all tubes within the
cluster. The \code{RadialParent} interface allows inner components to
automatically identify their correct inner and outer radii based on
their parent and sibling components. For example, a coupler tube can
automatically detect its radius based on the inner radius of
the parent body tube.
Additionally four interfaces are defined for the components,
\code{MotorMount}, \code{Clusterable}, \code{Radial\-Parent} and
\code{Coaxial}. Components implementing the \code{Motor\-Mount}
interface, currently \code{Body\-Tube} and \code{Inner\-Tube}, can
function as motor mounts and have motors loaded in them. The
\code{Clusterable} interface signifies that the component can be
clustered in various configurations. Currently only the
\code{Inner\-Tube} component can be clustered. Components and motors
that are attached to a clustered inner tube are automatically
replicated to all tubes within the cluster. The \code{Radial\-Parent}
interface allows inner components to automatically identify their
correct inner and outer radii based on their parent and sibling
components. For example, a coupler tube can automatically detect its
radius based on the inner radius of the parent body tube.
\code{Coaxial} on the other hand provides a generic interface for
accessing and modifying properties of fixed-radius components.
Since the software functionality is divided into different packages,
@ -237,11 +239,7 @@ structure, presentation, computation and storage methods.
One of the key aspects in the design of the simulation implementation
was extensibility. Therefore all aerodynamic calculation code is
separated in the package \code{aerodynamics} and all simulation code
is in the package \code{simulator}.
The basis for aerodynamic calculations is the abstract class
\code{Aerodynamic\-Calculator}, while the simulators are subclasses of
the \code{Flight\-Simulator} class. This allows adding new
is in the package \code{simulator}. This allows adding new
implementations of the aerodynamic calculators and simulators
independently. For example, a simulator using Euler integration was
written in the early stages of development, and later replaced by the
@ -249,9 +247,24 @@ Runge-Kutta~4 simulator. Similarly, a different method of calculating
the aerodynamic forces, such as CFD, could be implemented and used by
the existing simulators.
The basis for all aerodynamic calculations is the interface
\code{Aerodynamic\-Calculator}. The current implementation, based on
the Barrowman methods, is implemented in the class
\code{Barrowman\-Calculator}. This implementation caches mid-results
for performance reasons.
Flight simulation is split into the
interfaces \code{Simulation\-Engine}, which is responsible for
maintaining the flow of the simulation and handling events (such as
motor ignition), and \code{Simulation\-Stepper}, which is responsible
for taking individual time steps while simulating (using {\it e.g.}
RK4 iteration).
Similar abstraction has been performed for the atmospheric temperature
and pressure model by the abstract class \code{AtmosphericModel} and
different rocket motor types by the \code{Motor} class, among others.
and pressure model with the \code{Atmospheric\-Model} interface, the
gravity model with \code{Gravity\-Model}, the wind modelling with
\code{Wind\-Model} and different rocket motor types by the
\code{Motor} class, among others.
@ -262,11 +275,11 @@ different rocket motor types by the \code{Motor} class, among others.
Simulation listeners are pieces of code that can dynamically be
configured to listen to and interact with a simulation while it is
running. The listeners are called after each simulation step, at each
simulation event and both when the flight conditions and aerodynamic
forces have been calculated. The listeners may simply gather flight
data for use outside the simulation or modify the rocket or simulation
during the flight. This allows great potential for extensibility both
running. The listeners are called before and after each simulation
step, each simulation event and any calculations performed during
flight simulation. The listeners may simply gather flight data for
use outside the simulation or modify the rocket or simulation during
the flight. This allows great potential for extensibility both
internally and externally.
Listeners are used internally for various purposes such as retrieving
@ -276,26 +289,28 @@ functionality otherwise would have required a lot of special case
handling directly within the simulation code.
Listeners can also be used to modify the simulation or the rocket
during its flight. The successor project of Haisunäätä will include
an active roll stabilization system, where a flight computer will
measure the roll rate using two magnetometers and use a PID controller
to adjust two auxiliary fins to cancel out the roll inevitably
produced by imperfections in the main fins. A simulation listener was
written that first simulated the PID controller purely in Java, which
during its flight. The successor project of Haisunäätä included
an active roll stabilization system, where a flight computer
measured the roll rate using two magnetometers and used a PID controller
to adjust two auxiliary fins to cancel out any roll produced by
inevitable imperfections in the main fins. A simulation listener was
written that initially simulated the PID controller purely in Java, which
modified the cant angle of the auxiliary fins during the simulation.
Later a similar listener interfaced the external flight computer
directly using a serial data link. The listener fed the flight data
to the controller which computed and reported the control actions back
to the simulator. This system helped identify and fix numerous bugs
in the flight computer software, which would have otherwise been
nearly impossible to fully test. It is expected that the simulation
listeners will be an invaluable tool for more ambitious model rocket
enthusiasts.
directly using a serial data link. The listener fed the simulated
flight data to the controller which computed and reported the control
actions back to the simulator. This system helped identify and fix
numerous bugs in the flight computer software, which would have
otherwise been nearly impossible to fully test. It is expected that
the simulation listeners will be an invaluable tool for more ambitious
model rocket enthusiasts.
A listener is produced by implementing the \code{SimulationListener}
interface or by extending the \code{AbstractSimulationListener}
class. The UI includes the option of defining custom simulation
listeners to be utilized during flight simulation.
A listener is produced by implementing the \code{Simulation\-Listener}
and optionally \code{Simulation\-Event\-Listener} and
\code{Simulation\-Computation\-Listener} interfaces, or by extending
the \code{Abstract\-Simulation\-Listener} class. The UI includes the
option of defining custom simulation listeners to be utilized during
flight simulation.
\subsection{Warnings}
@ -440,36 +455,39 @@ number.
\label{fig-plotting}
\end{figure}
Advanced users may also export the flight data in CSV format for
further analysis using other tools.
\section{Future enhancements}
Numerous features have been planned and taken into account during the
design of the software. Below are listed a few of the planned
features and how they have been taken into account:
{\it Alternative aerodynamic calculators.} For example CFD could be
used to calculate the aerodynamic properties, allowing even better
simulation accuracy. The calculators have been abstracted by the
\code{AerodynamicCalculator} class so they can easily be
interchanged.
{\it Alternative simulators.} These could take into account for
example the curvature of the Earth and include the Coriolis effect.
New simulators can be created by extending the abstract
\code{FlightSimulator} class.
{\it Export and import of flight data.} The simulated data could be
exported for further analysis as comma separated values (CSV).
Similarly, experimental data could be imported either from files or
directly from altimeters. Support for imported data already exists in
the core functionalities.
{\it Importing database files.} The motor database is easily
extendable to read external thrust curves. Also data of commercially
available rocket components could be imported and available in the
component edit dialog.
{\it Further UI enhancements.} These could include for example a 3D
view of the rocket, an animation of the rocket flight, a ``wizard''
dialog for easily creating new designs, {\it etc.}
%
%\section{Future enhancements}
%
%Numerous features have been planned and taken into account during the
%design of the software. Below are listed a few of the planned
%features and how they have been taken into account:
%
%{\it Alternative aerodynamic calculators.} For example CFD could be
%used to calculate the aerodynamic properties, allowing even better
%simulation accuracy. The calculators have been abstracted by the
%\code{AerodynamicCalculator} interface so they can easily be
%interchanged.
%
%{\it Alternative simulators.} These could take into account for
%example the curvature of the Earth and include the Coriolis effect.
%New simulators can be created by implementing the
%\code{Simulation\-Stepper} interface.
%
%{\it Export and import of flight data.} The simulated data could be
%exported for further analysis as comma separated values (CSV).
%Similarly, experimental data could be imported either from files or
%directly from altimeters. Support for imported data already exists in
%the core functionalities.
%
%{\it Importing database files.} The motor database is easily
%extendable to read external thrust curves. Also data of commercially
%available rocket components could be imported and available in the
%component edit dialog.
%
%{\it Further UI enhancements.} These could include for example a 3D
%view of the rocket, an animation of the rocket flight, a ``wizard''
%dialog for easily creating new designs, {\it etc.}
%

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

View File

@ -93,10 +93,10 @@
\begin{center}
{\LARGE\bf OpenRocket technical documentation}
{\large For OpenRocket version 1.0.0}
{\large For OpenRocket version 1.1.6}
\vspace{-3mm}
2010-04-06
2011-07-18
\vspace{10mm}
{\Large Sampo Niskanen}
@ -137,6 +137,9 @@ While the original thesis is available online under a Creative Commons
no-derivatives license, this document is available under a freer
share-alike license.
The latest version of the technical documentation is available on the
OpenRocket website, \url{http://openrocket.sourceforge.net/}.
\vspace{10mm}
\begin{center}
@ -147,7 +150,9 @@ share-alike license.
\begin{tabular}{lp{120mm}}
2010-04-06 & Initial revision. Updates the roll angle effect on three- and
four-fin configurations in Section~\ref{update-roll-angle}.
(OpenRocket software 1.0.0)
(OpenRocket software 1.0.0) \\
2011-07-18 & Updated Chapter~\ref{chap-software} for updates in the
software. (OpenRocket software 1.1.6) \\
\end{tabular}
\end{center}
@ -289,20 +294,18 @@ UI & User interface \\
I would like to express my deepest gratitude to M.Sc.~Timo Sailaranta
for his invaluable advice and consultation on the aerodynamic
simulation of rockets. Without his input the creation of this thesis
would have been exceedingly laborious. I would also like to thank
Prof.~Rolf Stenberg for supervising the writing of this thesis, and
Juhani Talvela for proofreading and commenting early versions of this
text.
simulation of rockets. Without his input the creation of the
OpenRocket software and Master's thesis would have been exceedingly
laborious. I would also like to thank Prof.~Rolf Stenberg for
supervising the writing of the Master's thesis.
I am also deeply grateful for my parents Jouni and Riitta, my entire
family, friends and teachers, who have always encouraged me onwards in
my life and studies. Above all I would like to thank my brother,
Antti~J. Niskanen, for being an inspiration throughout my life and
also for
building the magnetometer logger used in the experimental flights; and
my fiancée Merli Lahtinen, for her patience and loving understanding
for my passion towards rocketry.
also for building the magnetometer logger used in the experimental
flights; and my wife Merli Lahtinen, for her patience and loving
understanding for my passion towards rocketry.

View File

@ -11,8 +11,8 @@ import java.util.List;
import net.sf.openrocket.motor.Manufacturer;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorDigest;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.motor.MotorDigest.DataType;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.util.Coordinate;
public class RASPMotorLoader extends AbstractMotorLoader {
@ -202,8 +202,8 @@ public class RASPMotorLoader extends AbstractMotorLoader {
try {
return new ThrustCurveMotor(Manufacturer.getManufacturer(manufacturer),
designation, comment, Motor.Type.UNKNOWN,
Manufacturer m = Manufacturer.getManufacturer(manufacturer);
return new ThrustCurveMotor(m, designation, comment, m.getMotorType(),
delays, diameter, length, timeArray, thrustArray, cgArray);
} catch (IllegalArgumentException e) {

View File

@ -12,11 +12,13 @@ import net.sf.openrocket.file.simplesax.ElementHandler;
import net.sf.openrocket.file.simplesax.NullElementHandler;
import net.sf.openrocket.file.simplesax.PlainTextHandler;
import net.sf.openrocket.file.simplesax.SimpleSAX;
import net.sf.openrocket.logging.LogHelper;
import net.sf.openrocket.motor.Manufacturer;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorDigest;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.motor.MotorDigest.DataType;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.Coordinate;
import org.xml.sax.InputSource;
@ -24,6 +26,8 @@ import org.xml.sax.SAXException;
public class RockSimMotorLoader extends AbstractMotorLoader {
private static final LogHelper log = Application.getLogger();
public static final String CHARSET_NAME = "UTF-8";
public static final Charset CHARSET = Charset.forName(CHARSET_NAME);
@ -33,6 +37,8 @@ public class RockSimMotorLoader extends AbstractMotorLoader {
private static final int DELAY_LIMIT = 90;
// FIXME: Obtain default motor type from manufacturer info
@Override
protected Charset getDefaultCharset() {
@ -362,8 +368,20 @@ public class RockSimMotorLoader extends AbstractMotorLoader {
try {
return new ThrustCurveMotor(Manufacturer.getManufacturer(manufacturer),
designation, description, type,
Manufacturer m = Manufacturer.getManufacturer(manufacturer);
Motor.Type t = type;
if (t == Motor.Type.UNKNOWN) {
t = m.getMotorType();
} else {
if (m.getMotorType() != Motor.Type.UNKNOWN && m.getMotorType() != t) {
log.warn("Loaded motor type inconsistent with manufacturer," +
" loaded type=" + t + " manufacturer=" + m +
" manufacturer type=" + m.getMotorType() +
" designation=" + designation);
}
}
return new ThrustCurveMotor(m, designation, description, t,
delays, diameter, length, timeArray, thrustArray, cgArray);
} catch (IllegalArgumentException e) {
throw new SAXException("Illegal motor data", e);

View File

@ -6,99 +6,105 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Class containing information about motor manufacturers.
*
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
public class Manufacturer {
private static Set<Manufacturer> manufacturers = new HashSet<Manufacturer>();
static {
// AeroTech has many name combinations...
List<String> names = new ArrayList<String>();
for (String s: new String[] { "A", "AT", "AERO", "AEROT", "AEROTECH" }) {
for (String s : new String[] { "A", "AT", "AERO", "AEROT", "AEROTECH" }) {
names.add(s);
names.add(s+"-RMS");
names.add(s+"-RCS");
names.add(s + "-RMS");
names.add(s + "-RCS");
names.add("RCS-" + s);
names.add(s+"-APOGEE");
names.add(s + "-APOGEE");
}
names.add("ISP");
manufacturers.add(new Manufacturer("AeroTech", "AeroTech",
// Aerotech has single-use, reload and hybrid motors
manufacturers.add(new Manufacturer("AeroTech", "AeroTech", Motor.Type.UNKNOWN,
names.toArray(new String[0])));
manufacturers.add(new Manufacturer("Alpha Hybrid Rocketry LLC",
"Alpha Hybrid Rocketry",
manufacturers.add(new Manufacturer("Alpha Hybrid Rocketry LLC", "Alpha Hybrid Rocketry", Motor.Type.HYBRID,
"AHR", "ALPHA", "ALPHA HYBRID", "ALPHA HYBRIDS", "ALPHA HYBRIDS ROCKETRY"));
manufacturers.add(new Manufacturer("Animal Motor Works","Animal Motor Works",
// TODO: HIGH: AMW/ProX - how to classify?
manufacturers.add(new Manufacturer("Animal Motor Works", "Animal Motor Works", Motor.Type.RELOAD,
"AMW", "AW", "ANIMAL"));
manufacturers.add(new Manufacturer("Apogee","Apogee",
manufacturers.add(new Manufacturer("Apogee", "Apogee", Motor.Type.SINGLE,
"AP", "APOG", "P"));
manufacturers.add(new Manufacturer("Cesaroni Technology Inc.",
"Cesaroni Technology",
manufacturers.add(new Manufacturer("Cesaroni Technology Inc.", "Cesaroni Technology", Motor.Type.RELOAD,
"CES", "CESARONI", "CESARONI TECHNOLOGY INCORPORATED", "CTI",
"CS", "CSR", "PRO38", "ABC"));
manufacturers.add(new Manufacturer("Contrail Rockets","Contrail Rockets",
manufacturers.add(new Manufacturer("Contrail Rockets", "Contrail Rockets", Motor.Type.HYBRID,
"CR", "CONTR", "CONTRAIL", "CONTRAIL ROCKET"));
manufacturers.add(new Manufacturer("Estes","Estes",
manufacturers.add(new Manufacturer("Estes", "Estes", Motor.Type.SINGLE,
"E", "ES"));
manufacturers.add(new Manufacturer("Ellis Mountain","Ellis Mountain",
// Ellis Mountain has both single-use and reload motors
manufacturers.add(new Manufacturer("Ellis Mountain", "Ellis Mountain", Motor.Type.UNKNOWN,
"EM", "ELLIS", "ELLIS MOUNTAIN ROCKET", "ELLIS MOUNTAIN ROCKETS"));
manufacturers.add(new Manufacturer("Gorilla Rocket Motors",
"Gorilla Rocket Motors",
"GR", "GORILLA", "GORILLA ROCKET", "GORILLA ROCKETS", "GORILLA MOTOR",
manufacturers.add(new Manufacturer("Gorilla Rocket Motors", "Gorilla Rocket Motors", Motor.Type.RELOAD,
"GR", "GORILLA", "GORILLA ROCKET", "GORILLA ROCKETS", "GORILLA MOTOR",
"GORILLA MOTORS", "GORILLA ROCKET MOTOR"));
manufacturers.add(new Manufacturer("HyperTEK", "HyperTEK",
manufacturers.add(new Manufacturer("HyperTEK", "HyperTEK", Motor.Type.HYBRID,
"H", "HT", "HYPER"));
manufacturers.add(new Manufacturer("Kosdon by AeroTech", "Kosdon by AeroTech",
manufacturers.add(new Manufacturer("Kosdon by AeroTech", "Kosdon by AeroTech", Motor.Type.RELOAD,
"K", "KBA", "K-AT", "KOS", "KOSDON", "KOSDON/AT", "KOSDON/AEROTECH"));
manufacturers.add(new Manufacturer("Loki Research", "Loki Research",
manufacturers.add(new Manufacturer("Loki Research", "Loki Research", Motor.Type.RELOAD,
"LOKI", "LR"));
manufacturers.add(new Manufacturer("Public Missiles, Ltd.", "Public Missiles",
manufacturers.add(new Manufacturer("Public Missiles, Ltd.", "Public Missiles", Motor.Type.SINGLE,
"PM", "PML", "PUBLIC MISSILES LIMITED"));
manufacturers.add(new Manufacturer("Propulsion Polymers", "Propulsion Polymers",
manufacturers.add(new Manufacturer("Propulsion Polymers", "Propulsion Polymers", Motor.Type.HYBRID,
"PP", "PROP", "PROPULSION"));
manufacturers.add(new Manufacturer("Quest", "Quest",
manufacturers.add(new Manufacturer("Quest", "Quest", Motor.Type.SINGLE,
"Q", "QU"));
manufacturers.add(new Manufacturer("RATT Works", "RATT Works",
manufacturers.add(new Manufacturer("RATT Works", "RATT Works", Motor.Type.HYBRID,
"RATT", "RT", "RTW"));
manufacturers.add(new Manufacturer("Roadrunner Rocketry","Roadrunner Rocketry",
manufacturers.add(new Manufacturer("Roadrunner Rocketry", "Roadrunner Rocketry", Motor.Type.SINGLE,
"RR", "ROADRUNNER"));
manufacturers.add(new Manufacturer("Rocketvision", "Rocketvision",
manufacturers.add(new Manufacturer("Rocketvision", "Rocketvision", Motor.Type.SINGLE,
"RV", "ROCKET VISION"));
manufacturers.add(new Manufacturer("Sky Ripper Systems","Sky Ripper Systems",
manufacturers.add(new Manufacturer("Sky Ripper Systems", "Sky Ripper Systems", Motor.Type.HYBRID,
"SR", "SRS", "SKYR", "SKYRIPPER", "SKY RIPPER", "SKYRIPPER SYSTEMS"));
manufacturers.add(new Manufacturer("West Coast Hybrids", "West Coast Hybrids",
manufacturers.add(new Manufacturer("West Coast Hybrids", "West Coast Hybrids", Motor.Type.HYBRID,
"WCH", "WCR", "WEST COAST", "WEST COAST HYBRID"));
// German WECO Feuerwerk, previously Sachsen Feuerwerk
manufacturers.add(new Manufacturer("WECO Feuerwerk", "WECO Feuerwerk",
manufacturers.add(new Manufacturer("WECO Feuerwerk", "WECO Feuerwerk", Motor.Type.SINGLE,
"WECO", "WECO FEUERWERKS", "SF", "SACHSEN", "SACHSEN FEUERWERK",
"SACHSEN FEUERWERKS"));
// Check that no duplicates have appeared
for (Manufacturer m1: manufacturers) {
for (Manufacturer m2: manufacturers) {
for (Manufacturer m1 : manufacturers) {
for (Manufacturer m2 : manufacturers) {
if (m1 == m2)
continue;
for (String name: m1.getAllNames()) {
for (String name : m1.getAllNames()) {
if (m2.matches(name)) {
throw new IllegalStateException("Manufacturer name clash between " +
"manufacturers " + m1 + " and " + m2 + " name " + name);
@ -108,17 +114,22 @@ public class Manufacturer {
}
}
private final String displayName;
private final String simpleName;
private final Set<String> allNames;
private final Set<String> searchNames;
private final Motor.Type motorType;
private Manufacturer(String displayName, String simpleName, String... alternateNames) {
private Manufacturer(String displayName, String simpleName, Motor.Type motorType, String... alternateNames) {
this.displayName = displayName;
this.simpleName = simpleName;
this.motorType = motorType;
if (motorType == null) {
throw new IllegalArgumentException("motorType cannot be null");
}
Set<String> all = new HashSet<String>();
Set<String> search = new HashSet<String>();
@ -128,7 +139,7 @@ public class Manufacturer {
search.add(generateSearchString(displayName));
search.add(generateSearchString(simpleName));
for (String name: alternateNames) {
for (String name : alternateNames) {
all.add(name);
search.add(generateSearchString(name));
}
@ -147,8 +158,8 @@ public class Manufacturer {
public String getDisplayName() {
return displayName;
}
/**
* Returns the simple name of the manufacturer. This should be used for example
* when saving the manufacturer for compatibility.
@ -158,8 +169,8 @@ public class Manufacturer {
public String getSimpleName() {
return simpleName;
}
/**
* Return all names of the manufacturer. This includes all kinds of
* codes that correspond to the manufacturer (for example "A" for AeroTech).
@ -169,7 +180,19 @@ public class Manufacturer {
public Set<String> getAllNames() {
return allNames;
}
/**
* Return the motor type that this manufacturer produces if it produces only one motor type.
* If the manufacturer manufactures multiple motor types or the type is unknown,
* type <code>UNKNOWN</code> is returned.
*
* @return the manufactured motor type, or <code>UNKNOWN</code>.
*/
public Motor.Type getMotorType() {
return motorType;
}
/**
* Check whether the display, simple or any of the alternative names matches the
@ -206,19 +229,19 @@ public class Manufacturer {
* @return the Manufacturer object corresponding the name.
*/
public static synchronized Manufacturer getManufacturer(String name) {
for (Manufacturer m: manufacturers) {
for (Manufacturer m : manufacturers) {
if (m.matches(name))
return m;
}
Manufacturer m = new Manufacturer(name.trim(), name.trim());
Manufacturer m = new Manufacturer(name.trim(), name.trim(), Motor.Type.UNKNOWN);
manufacturers.add(m);
return m;
}
private String generateSearchString(String str) {
return str.toLowerCase().replaceAll("[^a-zA-Z0-9]+", " ").trim();
}