Example #1
0
def optimizeFullyTest():
    import planeDesigner, jets, lift
    # use the same plane as above but with a turbojet because that shows more interesting behaviour
    p = plane(planeDesigner.part(jets.turbojet),
             planeDesigner.part(jets.radialIntake, 2),
             planeDesigner.part(lift.avr8, 2),
             planeDesigner.part(lift.deltaDeluxe, 2),
             planeDesigner.part(lift.deltaDeluxe, 2, AoAdegrees = 10),
             planeDesigner.part(None, n = 2, Cd = 0.2, extraMass = 0.15 + 150 * 0.005), # two fuel tanks
            )
    p.optimizeFuelConsumption(verbose = True, altitudeStep = 1000)
Example #2
0
def speedTest():
    import planeDesigner, jets, lift
    p = plane(planeDesigner.part(jets.basicjet),
             planeDesigner.part(jets.radialIntake, 2),
             planeDesigner.part(lift.avr8, 2),
             planeDesigner.part(lift.deltaDeluxe, 2),
             planeDesigner.part(lift.deltaDeluxe, 2, AoAdegrees = 10),
             planeDesigner.part(None, n = 2, Cd = 0.2, extraMass = 0.15 + 150 * 0.005), # two fuel tanks
            )
    speed = p.equilibriumHorizontalSpeed(2.5, altitude = 10000, throttle = 0.5)
    print ("equilibrium speed: %g m/s" % speed)
    p.forces(0, 2.5, speed, altitude = 10000, throttle = 0.5)
Example #3
0
def optimizePitchTest():
    import planeDesigner, jets, lift
    p = plane(planeDesigner.part(jets.basicjet),
             planeDesigner.part(jets.radialIntake, 2),
             planeDesigner.part(lift.avr8, 2),
             planeDesigner.part(lift.deltaDeluxe, 2),
             planeDesigner.part(lift.deltaDeluxe, 2, AoAdegrees = 10),
             planeDesigner.part(None, n = 2, Cd = 0.2, extraMass = 0.15 + 150 * 0.005), # two fuel tanks
            )
    opt = p.optimizeFuelConsumptionAtAltitude(altitude = 10000, verbose = True)
    if opt is None:
        print ("Level flight is impossible with any pitch and throttle at this altitude")
    else:
        (pitch, throttle, speed, fuelKgPerM) = opt
        fuelUnitsPerKm = fuelKgPerM * 1000 / 5
        print ("Fly at %d degrees, throttle %.3f, to achieve %.2f m/s using %g U/km" % (pitch, throttle, speed, fuelUnitsPerKm))
Example #4
0
def throttleTest():
    import planeDesigner, jets, lift
    p = plane(planeDesigner.part(jets.basicjet),
             planeDesigner.part(jets.radialIntake, 2),
             planeDesigner.part(lift.avr8, 2),
             planeDesigner.part(lift.deltaDeluxe, 2),
             planeDesigner.part(lift.deltaDeluxe, 2, AoAdegrees = 10),
             planeDesigner.part(None, n = 2, Cd = 0.2, extraMass = 0.15 + 150 * 0.005), # two fuel tanks
            )
    throttle = p.levelThrottle(10, altitude = 10000)
    if throttle is None:
        print ("level flight is impossible")
    else:
        speed = p.equilibriumHorizontalSpeed(2.5, altitude = 10000, throttle = throttle)
        print ("equilibrium speed: %g m/s" % speed)
        p.forces(0, 2.5, speed, altitude = 10000, throttle = throttle)
Example #5
0
def forcesTest():
    """
    The plane has a basic jet and two radial intakes.
    It's got 2 AV-R8 for its elevator, two deltaDeluxe for ailerons,
    and two deltaDeluxe for wings, which are tilted 10 degrees.
    There's also two fuel tanks, full.
    We're climbing at a 5 degree angle, with pitch 7.5 degrees (so angle of attack 2.5 degrees).
    We're going Mach 0.85, at 10km altitude.

    This plane is not at equilibrium: we've got horizontal speed to gain,
    and vertical speed is going down.  Specifically, we should see:
    net:     (  25.72,  -15.09) kN
    """
    import planeDesigner, jets, lift
    p = plane(planeDesigner.part(jets.basicjet),
             planeDesigner.part(jets.radialIntake, 2),
             planeDesigner.part(lift.avr8, 2),
             planeDesigner.part(lift.deltaDeluxe, 2),
             planeDesigner.part(lift.deltaDeluxe, 2, AoAdegrees = 10),
             planeDesigner.part(None, n = 2, Cd = 0.2, extraMass = 0.15 + 150 * 0.005), # two fuel tanks
            )
    p.forces(5, 2.5, 0.85 * 342, altitude = 10000, throttle = 0.5)