Changeset 9:3dac12e8914d for src/acft.py
- Timestamp:
- 02/05/12 13:42:53 (12 years ago)
- Branch:
- default
- hg-Phase:
- (<MercurialRepository 1 'hg:/home/ivaradi/mlx/hg' '/'>, 'public')
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/acft.py
r8 r9 21 21 self._flight = flight 22 22 self._aircraftState = None 23 24 self._maxVS = -10000.0 25 self._minVS = 10000.0 23 26 24 27 self._checkers = [] 25 28 26 29 self._checkers.append(checks.StageChecker()) 30 self._checkers.append(checks.TakeOffLogger()) 27 31 28 32 self._checkers.append(checks.AltimeterLogger()) … … 41 45 self._checkers.append(checks.GearsLogger()) 42 46 47 self._checkers.append(checks.CruiseSpeedLogger()) 48 43 49 @property 44 50 def type(self): … … 68 74 self._aircraftState, aircraftState) 69 75 76 self._maxVS = max(self._maxVS, aircraftState.vs) 77 self._minVS = min(self._minVS, aircraftState.vs) 78 70 79 self._aircraftState = aircraftState 71 80 … … 73 82 """Set the given stage as the new one and do whatever should be 74 83 done.""" 75 self._flight.setStage(aircraftState.timestamp, newStage) 76 77 def flare(self): 78 """Called when it is detected that we are during flare. 84 if self._flight.setStage(aircraftState.timestamp, newStage): 85 if newStage==const.STAGE_PUSHANDTAXI: 86 self.logger.message(aircraftState.timestamp, "Block time start") 87 self.logFuel(aircraftState) 88 self.logger.message(aircraftState.timestamp, 89 "Zero-fuel weight: %.0f kg" % (aircraftState.zfw)) 90 elif newStage==const.STAGE_TAKEOFF: 91 self.logger.message(aircraftState.timestamp, "Flight time start") 92 self.logger.message(aircraftState.timestamp, 93 "Takeoff weight: %.0f kg, MTOW: %.0f kg" % \ 94 (aircraftState.grossWeight, self.mtow)) 95 self.logger.message(aircraftState.timestamp, 96 "Wind %03.0f degrees at %.0f knots" % \ 97 (aircraftState.windDirection, 98 aircraftState.windSpeed)) 99 elif newStage==const.STAGE_TAXIAFTERLAND: 100 self.logger.message(aircraftState.timestamp, "Flight time end") 101 self.logFuel(aircraftState) 102 self.logger.message(aircraftState.timestamp, 103 "Landing weight: %.0f kg, MLW: %.0f" % \ 104 (aircraftState.grossWeight, self.mlw)) 105 self.logger.message(aircraftState.timestamp, 106 "Vertical speed range: %.0f..%.0f feet/min" % \ 107 (self._maxVS, self._minVS)) 108 elif newStage==const.STAGE_PARKING: 109 self.logger.message(aircraftState.timestamp, "Block time end") 110 111 def prepareFlare(self): 112 """Called when it is detected that we will soon flare. 79 113 80 114 On the first call, it should start monitoring some parameters more 81 115 closely to determine flare time.""" 82 pass 116 self.flight.simulator.startFlare() 117 118 def flareStarted(self, windSpeed, windDirection, visibility, 119 flareStart, flareStartFS): 120 """Called when the flare has started.""" 121 self.logger.message(self._aircraftState.timestamp, "The flare has begun") 122 self.logger.message(self._aircraftState.timestamp, 123 "Wind %03.0f degrees at %.0f knots" % \ 124 (windDirection, windSpeed)) 125 self.logger.message(self._aircraftState.timestamp, 126 "Visibility: %.0f metres" % (visibility,)) 127 self.logger.message(self._aircraftState.timestamp, 128 "Altimeter setting: %.0f hPa" % \ 129 (self._aircraftState.altimeter,)) 130 self.flight.flareStarted(flareStart, flareStartFS) 131 132 def flareFinished(self, flareEnd, flareEndFS, tdRate, tdRateCalculatedByFS, 133 ias, pitch, bank, heading): 134 """Called when the flare has finished.""" 135 (flareTimeFromFS, flareTime) = self.flight.flareFinished(flareEnd, 136 flareEndFS) 137 self.logger.message(self._aircraftState.timestamp, 138 "Flare time: %.1f s (from %s)" % \ 139 (flareTime, 140 "the simulator" if flareTimeFromFS else "real time",)) 141 self.logger.message(self._aircraftState.timestamp, 142 "Touchdown rate: %.0f feet/min" % (tdRate,)) 143 self.logger.message(self._aircraftState.timestamp, 144 "Touchdown rate was calculated by the %s" % \ 145 ("simulator" if tdRateCalculatedByFS else "logger",)) 146 self.logger.message(self._aircraftState.timestamp, 147 "Touchdown speed: %.0f knots" % (ias,)) 148 self.logger.message(self._aircraftState.timestamp, 149 "Touchdown pitch: %.1f degrees" % (pitch,)) 150 self.logger.message(self._aircraftState.timestamp, 151 "Touchdown bank: %.1f degrees" % (bank,)) 152 self.logger.message(self._aircraftState.timestamp, 153 "Touchdown heading: %03.0f degrees" % (heading,)) 83 154 84 155 def cancelFlare(self): 85 156 """Cancel flare, if it has started.""" 86 pass157 self.flight.simulator.cancelFlare() 87 158 88 159 def checkFlightEnd(self, aircraftState): … … 105 176 - n1: left, right 106 177 - reverser: left, right""" 107 pass 108 178 def __init__(self, flight): 179 super(Boeing737, self).__init__(flight) 180 self.gearSpeedLimit = 270 181 self.flapSpeedLimits = { 1 : 260, 182 2 : 260, 183 5 : 250, 184 10 : 210, 185 15 : 200, 186 25 : 190, 187 30 : 175, 188 40 : 162 } 189 190 def logFuel(self, aircraftState): 191 """Log the amount of fuel""" 192 self.logger.message(aircraftState.timestamp, 193 "Fuel: left=%.0f kg - centre=%.0f kg - right=%.0f kg" % \ 194 (aircraftState.fuel[1], aircraftState.fuel[0], 195 aircraftState.fuel[2])) 196 self.logger.message(aircraftState.timestamp, 197 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 198 109 199 #--------------------------------------------------------------------------------------- 110 200 … … 113 203 def __init__(self, flight): 114 204 super(B736, self).__init__(flight) 205 self.dow = 38307 206 self.mtow = 58328 207 self.mlw = 54657 208 self.mzfw = 51482 115 209 116 210 #--------------------------------------------------------------------------------------- … … 120 214 def __init__(self, flight): 121 215 super(B737, self).__init__(flight) 216 self.dow = 39250 217 self.mtow = 61410 218 self.mlw = 58059 219 self.mzfw = 54657 122 220 123 221 #--------------------------------------------------------------------------------------- … … 127 225 def __init__(self, flight): 128 226 super(B738, self).__init__(flight) 227 self.dow = 42690 228 self.mtow = 71709 229 self.mlw = 65317 230 self.mzfw = 61688 231 232 #--------------------------------------------------------------------------------------- 233 234 class B738Charter(B738): 235 """Boeing 737-800 aircraft used for charters.""" 236 def __init__(self, flight): 237 super(B738Charter, self).__init__(flight) 238 self.mtow = 77791 129 239 130 240 #--------------------------------------------------------------------------------------- … … 134 244 def __init__(self, flight): 135 245 super(B733, self).__init__(flight) 246 self.dow = 32700 247 self.mtow = 62820 248 self.mlw = 51700 249 self.mzfw = 48410 136 250 137 251 #--------------------------------------------------------------------------------------- … … 141 255 def __init__(self, flight): 142 256 super(B734, self).__init__(flight) 257 self.dow = 33200 258 self.mtow = 68050 259 self.mlw = 56200 260 self.mzfw = 53100 143 261 144 262 #--------------------------------------------------------------------------------------- … … 148 266 def __init__(self, flight): 149 267 super(B735, self).__init__(flight) 268 self.dow = 31300 269 self.mtow = 60550 270 self.mlw = 50000 271 self.mzfw = 46700 150 272 151 273 #--------------------------------------------------------------------------------------- … … 161 283 def __init__(self, flight): 162 284 super(DH8D, self).__init__(flight) 285 self.dow = 17185 286 self.mtow = 29257 287 self.mlw = 28009 288 self.mzfw = 25855 289 self.gearSpeedLimit = 215 290 self.flapSpeedLimits = { 5 : 200, 291 10 : 181, 292 15 : 172, 293 35 : 158 } 294 295 def logFuel(self, aircraftState): 296 """Log the amount of fuel""" 297 self.logger.message(aircraftState.timestamp, 298 "Fuel: left=%.0f kg - centre=%.0f kg - right=%.0f kg" % \ 299 (aircraftState.fuel[1], aircraftState.fuel[0], 300 aircraftState.fuel[2])) 301 self.logger.message(aircraftState.timestamp, 302 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 163 303 164 304 #--------------------------------------------------------------------------------------- … … 172 312 - n1: left, right 173 313 - reverser: left, right""" 174 314 def __init__(self, flight): 315 super(Boeing767, self).__init__(flight) 316 self.gearSpeedLimit = 270 317 self.flapSpeedLimits = { 1 : 255, 318 5 : 235, 319 10 : 215, 320 20 : 215, 321 25 : 185, 322 30 : 175 } 323 324 def logFuel(self, aircraftState): 325 """Log the amount of fuel""" 326 self.logger.message(aircraftState.timestamp, 327 "Fuel: left=%.0f kg - centre=%.0f kg - right=%.0f kg" % \ 328 (aircraftState.fuel[1], aircraftState.fuel[0], 329 aircraftState.fuel[2])) 330 self.logger.message(aircraftState.timestamp, 331 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 332 175 333 #--------------------------------------------------------------------------------------- 176 334 … … 179 337 def __init__(self, flight): 180 338 super(B762, self).__init__(flight) 339 self.dow = 84507 340 self.mtow = 175540 341 self.mlw = 126098 342 self.mzfw = 114758 181 343 182 344 #--------------------------------------------------------------------------------------- … … 186 348 def __init__(self, flight): 187 349 super(B763, self).__init__(cflight) 350 self.dow = 91311 351 self.mtow = 181436 352 self.mlw = 137892 353 self.mzfw = 130635 188 354 189 355 #--------------------------------------------------------------------------------------- … … 199 365 def __init__(self, flight): 200 366 super(CRJ2, self).__init__(flight) 201 367 self.dow = 14549 368 self.mtow = 22995 369 self.mlw = 21319 370 self.mzfw = 19958 371 self.gearSpeedLimit = 240 372 self.flapSpeedLimits = { 8 : 260, 373 20 : 220, 374 30 : 190, 375 45 : 175 } 376 377 def logFuel(self, aircraftState): 378 """Log the amount of fuel""" 379 self.logger.message(aircraftState.timestamp, 380 "Fuel: left=%.0f kg - centre=%.0f kg - right=%.0f kg" % \ 381 (aircraftState.fuel[1], aircraftState.fuel[0], 382 aircraftState.fuel[2])) 383 self.logger.message(aircraftState.timestamp, 384 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 385 202 386 #--------------------------------------------------------------------------------------- 203 387 … … 212 396 def __init__(self, flight): 213 397 super(F70, self).__init__(flight) 214 398 self.dow = 24283 399 self.mtow = 38100 # FIXME: differentiate by registration number, 400 # MTOW of HA-LMF: 41955 401 self.mlw = 36740 402 self.mzfw = 32655 403 self.gearSpeedLimit = 200 404 self.flapSpeedLimits = { 8 : 250, 405 15 : 220, 406 25 : 220, 407 42 : 180 } 408 409 def logFuel(self, aircraftState): 410 """Log the amount of fuel""" 411 self.logger.message(aircraftState.timestamp, 412 "Fuel: left=%.0f kg - centre=%.0f kg - right=%.0f kg" % \ 413 (aircraftState.fuel[1], aircraftState.fuel[0], 414 aircraftState.fuel[2])) 415 self.logger.message(aircraftState.timestamp, 416 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 417 215 418 #--------------------------------------------------------------------------------------- 216 419 … … 225 428 def __init__(self, flight): 226 429 super(DC3, self).__init__(flight) 430 self.dow = 8627 431 self.mtow = 11884 432 self.mlw = 11793 433 self.mzfw = 11780 434 self.gearSpeedLimit = 148 435 self.flapSpeedLimits = { 15 : 135, 436 30 : 99, 437 45 : 97 } 227 438 228 439 def _checkFlightEnd(self, aircraftState): … … 234 445 self._setStage(aircraftState, const.STAGE_END) 235 446 447 def logFuel(self, aircraftState): 448 """Log the amount of fuel""" 449 self.logger.message(aircraftState.timestamp, 450 "Fuel: left aux=%.0f kg - left=%.0f kg - right=%.0f kg - right aux=%.0f kg" % \ 451 (aircraftState.fuel[2], aircraftState.fuel[0], 452 aircraftState.fuel[1], aircraftState.fuel[3])) 453 self.logger.message(aircraftState.timestamp, 454 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 455 236 456 #--------------------------------------------------------------------------------------- 237 457 … … 247 467 def __init__(self, flight): 248 468 super(T134, self).__init__(flight) 249 469 self.dow = 29927 470 self.mtow = 47600 471 self.mlw = 43000 472 self.mzfw = 38500 473 self.gearSpeedLimit = 216 474 self.flapSpeedLimits = { 10 : 240, 475 20 : 216, 476 30 : 161 } 477 478 def logFuel(self, aircraftState): 479 """Log the amount of fuel""" 480 self.logger.message(aircraftState.timestamp, 481 "Fuel: left aux=%.0f kg - left tip=%.0f kg - centre= %.0f kg - right tip=%.0f kg - right aux=%.0f kg - external 1=%.0f kg - external 2=%.0f kg" % \ 482 (aircraftState.fuel[2], aircraftState.fuel[1], 483 aircraftState.fuel[0], 484 aircraftState.fuel[3], aircraftState.fuel[4], 485 aircraftState.fuel[5], aircraftState.fuel[6])) 486 self.logger.message(aircraftState.timestamp, 487 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 488 250 489 #--------------------------------------------------------------------------------------- 251 490 … … 260 499 def __init__(self, flight): 261 500 super(T154, self).__init__(flight) 262 263 #--------------------------------------------------------------------------------------- 501 self.dow = 53259 502 self.mtow = 98000 503 self.mlw = 78000 504 self.mzfw = 72000 505 self.gearSpeedLimit = 216 506 self.flapSpeedLimits = { 15 : 227, 507 28 : 194, 508 45 : 162 } 509 510 def logFuel(self, aircraftState): 511 """Log the amount of fuel""" 512 self.logger.message(aircraftState.timestamp, 513 "Fuel: left aux=%.0f kg - left=%.0f kg - centre=%.0f kg - centre 2=%.0f kg - right=%.0f kg - right aux=%.0f kg" % \ 514 (aircraftState.fuel[4], aircraftState.fuel[1], 515 aircraftState.fuel[0], aircraftState.fuel[3], 516 aircraftState.fuel[2], aircraftState.fuel[5])) 517 self.logger.message(aircraftState.timestamp, 518 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 519 520 #--------------------------------------------------------------------------------------- 521 264 522 265 523 class YK40(Aircraft): … … 273 531 def __init__(self, flight): 274 532 super(YK40, self).__init__(flight) 533 self.dow = 9400 534 self.mtow = 17200 535 self.mlw = 16800 536 self.mzfw = 12100 537 self.gearSpeedLimit = 165 538 self.flapSpeedLimits = { 20 : 165, 539 35 : 135 } 540 541 def logFuel(self, aircraftState): 542 """Log the amount of fuel""" 543 self.logger.message(aircraftState.timestamp, 544 "Fuel: left=%.0f kg - right=%.0f kg" % \ 545 (aircraftState.fuel[0], aircraftState.fuel[1])) 546 self.logger.message(aircraftState.timestamp, 547 "Total fuel: %.0f kg" % (sum(aircraftState.fuel),)) 275 548 276 549 #---------------------------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.