tasMetersPerSecond = atmosphere.cas2tas(casMetersPerSecond,
                                            950.0,
                                            speed_units='m/s',
                                            altitude_units='m')

    elapsedTimeSeconds = 0.0
    aircraft.initStateVector(
        elapsedTimeSeconds=elapsedTimeSeconds,
        trueAirSpeedMetersSecond=tasMetersPerSecond,
        altitudeMeanSeaLevelMeters=firstGlideSlopeWayPoint.
        getAltitudeMeanSeaLevelMeters(),
        deltaDistanceFlownMeters=0.0)

    aircraft.setApproachConfiguration(0.0)
    aircraftMassKilograms = 49000.0
    aircraft.setAircraftMassKilograms(aircraftMassKilograms)

    print(
        '===================== final 3 degrees descending glide slope ================'
    )
    descentGlideSlope = DescentGlideSlope(runway=arrivalRunway,
                                          aircraft=aircraft,
                                          arrivalAirport=arrivalAirport,
                                          descentGlideSlopeDegrees=3.0)

    descentGlideSlope.buildGlideSlope(elapsedTimeSeconds=0.0,
                                      initialWayPoint=firstGlideSlopeWayPoint,
                                      flownDistanceMeters=300000.0,
                                      distanceStillToFlyMeters=10000.0)
    print('================= create output files =========================')
Exemple #2
0
            aircraftIcaoCode,
            acBd.getAircraftPerformanceFile(aircraftIcaoCode), atmosphere,
            earth)
        aircraft.dump()
    assert not (aircraft is None)

    elapsedTimeSeconds = 0.0
    deltaTimeSeconds = 1.0

    aircraft.initStateVector(elapsedTimeSeconds=0.0,
                             trueAirSpeedMetersSecond=0.0,
                             altitudeMeanSeaLevelMeters=0.0)

    aircraft.setTargetCruiseFlightLevel(RequestedFlightLevel=310.0,
                                        departureAirportAltitudeMSLmeters=0.0)
    aircraft.setAircraftMassKilograms(aircraftMassKilograms=64000.0)
    aircraft.setTargetCruiseMach(cruiseMach=0.8)

    tas = aircraft.getCurrentTrueAirSpeedMetersSecond()
    previousAltitudeMSLmeters = 0.0
    t0 = time.clock()
    print('simulation start= {0} seconds'.format(t0))
    print('=========== simulation start ==================')
    endOfSimulation = False
    currentPosition = departureAirport

    arrivalGroundRun = GroundRunLeg(runway=arrivalRunway,
                                    aircraft=aircraft,
                                    airport=arrivalAirport)
    touchDownWayPoint = arrivalGroundRun.computeTouchDownWayPoint()
    print(touchDownWayPoint)
    def test_One(self):

        print('=========== main start ==================')
        aircraftICAOcode = 'A320'

        atmosphere = Atmosphere()
        assert (not (atmosphere is None))

        earth = Earth()
        assert (not (earth is None))

        acBd = BadaAircraftDatabase()
        assert acBd.read()

        if (acBd.aircraftExists(aircraftICAOcode)
                and acBd.aircraftPerformanceFileExists(aircraftICAOcode)):

            aircraft = BadaAircraft(
                ICAOcode=aircraftICAOcode,
                aircraftFullName=acBd.getAircraftFullName(aircraftICAOcode),
                badaPerformanceFilePath=acBd.getAircraftPerformanceFile(
                    aircraftICAOcode),
                atmosphere=atmosphere,
                earth=earth)
            aircraft.dump()
        else:
            raise ValueError(': aircraft not found= ' + aircraftICAOcode)

        assert not (aircraft is None)

        print('================ load airports =================')
        airportsDB = AirportsDatabase()
        assert (airportsDB.read())

        adepIcaoCode = 'LFML'

        departureAirport = airportsDB.getAirportFromICAOCode(adepIcaoCode)
        print(': departure airport= ' + str(departureAirport))
        assert not (departureAirport is None)

        print('================ load runways =================')

        runWaysDatabase = RunWayDataBase()
        assert (runWaysDatabase.read())

        print('====================  take off run-way ==================== ')
        departureRunway = runWaysDatabase.getFilteredRunWays(adepIcaoCode)
        print(
            '=========== minimum and maximum aircraft mass ==================')

        minMassKg = aircraft.getMinimumMassKilograms()
        print('aircraft minimum mass: ' + str(minMassKg) + ' kilograms')

        maxMassKg = aircraft.getMaximumMassKilograms()
        print('aircraft maximum mass: ' + str(maxMassKg) + ' kilograms')

        deltaMass = maxMassKg - minMassKg
        massKg = 39000.0
        while (massKg < maxMassKg):

            massKg += 1000.0
            print(
                '==================== set aircraft reference mass ==================== '
            )
            aircraft = BadaAircraft(
                ICAOcode=aircraftICAOcode,
                aircraftFullName=acBd.getAircraftFullName(aircraftICAOcode),
                badaPerformanceFilePath=acBd.getAircraftPerformanceFile(
                    aircraftICAOcode),
                atmosphere=atmosphere,
                earth=earth)

            aircraft.setTargetCruiseFlightLevel(
                310, departureAirport.getFieldElevationAboveSeaLevelMeters())

            print(
                '==================== aircraft reference mass ==================== '
            )
            print('aircraft reference mass= ' + str(massKg) + ' Kilograms')

            aircraft.setAircraftMassKilograms(massKg)
            print(
                '==================== begin of ground run ==================== '
            )
            groundRunLeg = GroundRunLeg(runway=departureRunway,
                                        aircraft=aircraft,
                                        airport=departureAirport)

            groundRunLeg.buildDepartureGroundRun(
                deltaTimeSeconds=0.1,
                elapsedTimeSeconds=0.0,
                distanceStillToFlyMeters=500000.0,
                distanceToLastFixMeters=500000.0)

            groundRunLeg.computeLengthMeters()
            #groundRunLeg.createXlsxOutputFile()

            print(
                '==================== end of ground run ==================== ')
            initialWayPoint = groundRunLeg.getLastVertex().getWeight()

            print(
                '==================== dump aircraft speed profile ==================== '
            )
            aircraft.createStateVectorOutputFile(aircraftICAOcode + "-Mass-" +
                                                 str(massKg))
            print('=========== main end ==================')
            aircraftIcaoCode,
            acBd.getAircraftPerformanceFile(aircraftIcaoCode), atmosphere,
            earth)
        aircraft.dump()
    assert not (aircraft is None)

    elapsedTimeSeconds = 0.0
    deltaTimeSeconds = 1.0

    aircraft.initStateVector(elapsedTimeSeconds=0.0,
                             trueAirSpeedMetersSecond=0.0,
                             airportFieldElevationAboveSeaLevelMeters=0.0)

    aircraft.setTargetCruiseFlightLevel(RequestedFlightLevel=310.0,
                                        departureAirportAltitudeMSLmeters=0.0)
    aircraft.setAircraftMassKilograms(aircraftMassKilograms=285700.0)
    aircraft.setTargetCruiseMach(cruiseMachNumber=0.8)

    tas = aircraft.getCurrentTrueAirSpeedMetersSecond()
    previousAltitudeMSLmeters = 0.0
    t0 = time.clock()
    print('simulation start= {0} seconds'.format(t0))

    print('=========== simulation start ==================')
    endOfSimulation = False
    currentPosition = departureAirport

    arrivalGroundRun = GroundRunLeg(runway=arrivalRunway,
                                    aircraft=aircraft,
                                    airport=arrivalAirport)
    touchDownWayPoint = arrivalGroundRun.computeTouchDownWayPoint()
 acBd = BadaAircraftDatabase()
 assert acBd.read()
 aircraftIcaoCode = 'A320'
 if ( acBd.aircraftExists(aircraftIcaoCode) 
     and acBd.aircraftPerformanceFileExists(acBd.getAircraftPerformanceFile(aircraftIcaoCode))):
     
     tasKnots = 480.0
     print ( '--------------- tas= {0:.2f} knots ----------------------'.format(tasKnots) )
     aircraft = BadaAircraft(aircraftIcaoCode, 
                                   acBd.getAircraftPerformanceFile(aircraftIcaoCode),
                                   atmosphere,
                                   earth)
     aircraft.dump()
 
     takeOffMassKilograms = 64000.0
     aircraft.setAircraftMassKilograms(takeOffMassKilograms)
         
     RequestedFlightLevel = 310.0
     fieldElevationAboveSeaLevelMeters = 150.0
     aircraft.setTargetCruiseFlightLevel(RequestedFlightLevel, fieldElevationAboveSeaLevelMeters)
     tasMetersPerSecond = tasKnots * Knots2MetersPerSecond
     aircraft.initStateVector(elapsedTimeSeconds = 0.0, 
                                  trueAirSpeedMetersSecond = tasMetersPerSecond, 
                                  altitudeMeanSeaLevelMeters = 3000.0 * Meter2Feet, 
                                  deltaDistanceFlownMeters = 0.0)
     aircraft.setCruiseConfiguration(elapsedTimeSeconds = 0.0)
         
     turnLeg =  TurnLeg(  initialWayPoint  = departureAirport,
                             finalWayPoint    = arrivalAirport,
                             initialHeadingDegrees = 215.0,
                             finalHeadingDegrees = 180.0,