def roca(altitude,
         weight=2100,
         press_drop=1.2,
         temp='std',
         temp_units='C',
         prop_eff=0.7,
         load_factor=1,
         rated_power=275,
         rpm=2700):
    """
    Returns speed for best rate of climb and the rate of climb at that speed.
    """
    MP = SA.alt2press(altitude) - press_drop
    pwr = O.pwr(rpm, MP, altitude, temp=temp,
                temp_units=temp_units) * rated_power / 180
    roc_max = -100000
    eass = range(60, 150, 1)
    rocs = []
    for eas in eass:
        rocs.append((roc(altitude,
                         eas,
                         weight,
                         pwr,
                         2700,
                         temp=temp,
                         prop_eff=prop_eff,
                         load_factor=load_factor), eas))
    mroc, meas = max(rocs)
    return meas, mroc
def WOT_speed(altitude, weight = 2100, rpm = 2700, temp = 'std', \
    temp_units = 'C', rv = 'F1', wing_area = 102, speed_units = 'kt', \
    prop_eff = 0.78, MP_loss = 1.322, ram = 0.5, rated_power=275):
    """
    Returns the predicted speed at full throttle.
    
    The MP_loss is the MP lost in the induction tract at full throttle at 2700
    rpm at MSL.  The default value is from the Lycoming power charts.
    The ram is the percentage of available ram recovery pressure that is
    achieved in the MP.
    """
    press = SA.alt2press(altitude, press_units = 'in HG')
    MP_loss = MP_loss * (rpm / 2700.) ** 2
    cas_guess = 300
    error = 1
    while error > 0.0001:
        dp = A.cas2dp(cas_guess, press_units = 'in HG')
#       print 'dp =', dp
        ram_press = ram * dp
#       print 'Ram rise =', ram_press
        MP = press - MP_loss + ram_press
        pwr = O.pwr(rpm, MP, altitude, temp = temp, temp_units = temp_units) * rated_power/180
        print 'MP =', MP, 'Power =', pwr
        tas = speed(altitude, weight, pwr, rpm, temp = temp, \
            temp_units = temp_units, rv = rv, wing_area = wing_area, \
            speed_units = speed_units, prop_eff = prop_eff)
        cas = A.tas2cas(tas, altitude, temp = temp, temp_units = temp_units)
        error = M.fabs((cas - cas_guess) / cas)
        cas_guess = cas
#       print 'CAS =', cas, 'TAS =', tas
    return tas
Beispiel #3
0
def WOT_speed(altitude, weight = 2100, rpm = 2700, temp = 'std', \
    temp_units = 'C', rv = 'F1', wing_area = 102, speed_units = 'kt', \
    prop_eff = 0.78, MP_loss = 1.322, ram = 0.5, rated_power=275):
    """
    Returns the predicted speed at full throttle.
    
    The MP_loss is the MP lost in the induction tract at full throttle at 2700
    rpm at MSL.  The default value is from the Lycoming power charts.
    The ram is the percentage of available ram recovery pressure that is
    achieved in the MP.
    """
    press = SA.alt2press(altitude, press_units='in HG')
    MP_loss = MP_loss * (rpm / 2700.)**2
    cas_guess = 300
    error = 1
    while error > 0.0001:
        dp = A.cas2dp(cas_guess, press_units='in HG')
        #       print 'dp =', dp
        ram_press = ram * dp
        #       print 'Ram rise =', ram_press
        MP = press - MP_loss + ram_press
        pwr = O.pwr(rpm, MP, altitude, temp=temp,
                    temp_units=temp_units) * rated_power / 180
        print('MP =', MP, 'Power =', pwr)
        tas = speed(altitude, weight, pwr, rpm, temp = temp, \
            temp_units = temp_units, rv = rv, wing_area = wing_area, \
            speed_units = speed_units, prop_eff = prop_eff)
        cas = A.tas2cas(tas, altitude, temp=temp, temp_units=temp_units)
        error = M.fabs((cas - cas_guess) / cas)
        cas_guess = cas


#       print 'CAS =', cas, 'TAS =', tas
    return tas
def roca(altitude, weight = 2100, press_drop = 1.2, temp = 'std', \
    temp_units='C', prop_eff = 0.7, load_factor =1, rated_power=275, \
    rpm=2700):
    """
    Returns speed for best rate of climb and the rate of climb at that speed.
    """
    MP = SA.alt2press(altitude) - press_drop
    pwr = O.pwr(rpm, MP, altitude, temp = temp, temp_units = temp_units) * rated_power/180
    roc_max = -100000
    eass = range(60, 150, 1)
    rocs = []
    for eas in eass:
        rocs.append((roc(altitude, eas, weight, pwr, 2700, temp = temp, \
            prop_eff = prop_eff, load_factor = load_factor),eas))
    mroc, meas = max(rocs)
    return meas, mroc