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
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