def aoc(prop, altitude, eas, weight, power, rpm, temp = 'std', temp_units = 'C', \ rv = '8', wing_area = 110, speed_units = 'kt', flap = 0): """ Returns the climb or descent gradient. Runs with zero power at 1800 lb show best glide speed for RV-8 of: 98 kt at 1800 lb 86 kt at 1400 lb best angle of climb: 66 kt at 1800 lb """ tas = A.eas2tas(eas, altitude, temp = temp, speed_units = speed_units) tas_fts = U.speed_conv(tas, from_units = speed_units, to_units = 'ft/s') prop_eff = PM.prop_eff(prop, power, rpm, tas, altitude, temp = temp, \ temp_units = 'C', speed_units = speed_units) power_avail = power * prop_eff drag = FT.eas2drag(eas, weight, wing_area, rv = rv, flap = flap, \ speed_units = speed_units) power_req = tas_fts * drag / 550. excess_power = power_avail - power_req roc = excess_power * 550 / weight gradient = roc / tas_fts return gradient
def _pwr_error(eas_guess, altitude, weight, power, rpm, temp='std', temp_units='C', rv='F1', wing_area=102, speed_units='kt', flap=0, prop_eff=0.78): tas_guess = A.eas2tas(eas_guess, altitude, temp=temp, speed_units=speed_units) tas_guess_fts = U.speed_conv(tas_guess, from_units=speed_units, to_units='ft/s') power_avail = power * prop_eff drag = F.eas2drag(eas_guess, weight, wing_area, rv=rv, flap=flap, speed_units=speed_units) power_req = tas_guess_fts * drag / 550. error = power_avail - power_req return error, tas_guess
def aoc(prop, altitude, eas, weight, power, rpm, temp = 'std', temp_units = 'C', \ rv = '8', wing_area = 110, speed_units = 'kt', flap = 0): """ Returns the climb or descent gradient. Runs with zero power at 1800 lb show best glide speed for RV-8 of: 98 kt at 1800 lb 86 kt at 1400 lb best angle of climb: 66 kt at 1800 lb """ tas = A.eas2tas(eas, altitude, temp=temp, speed_units=speed_units) tas_fts = U.speed_conv(tas, from_units=speed_units, to_units='ft/s') prop_eff = PM.prop_eff(prop, power, rpm, tas, altitude, temp = temp, \ temp_units = 'C', speed_units = speed_units) power_avail = power * prop_eff drag = FT.eas2drag(eas, weight, wing_area, rv = rv, flap = flap, \ speed_units = speed_units) power_req = tas_fts * drag / 550. excess_power = power_avail - power_req roc = excess_power * 550 / weight gradient = roc / tas_fts return gradient
def _pwr_error(eas_guess, altitude, weight, power, rpm, temp = 'std', \ temp_units = 'C', rv = 'F1', wing_area = 102, speed_units = 'kt', \ flap = 0, prop_eff=0.78): tas_guess = A.eas2tas(eas_guess, altitude, temp = temp, \ speed_units = speed_units) tas_guess_fts = U.speed_conv(tas_guess, from_units = speed_units, \ to_units = 'ft/s') power_avail = power * prop_eff drag = F.eas2drag(eas_guess, weight, wing_area, rv = rv, flap = flap,\ speed_units = speed_units) power_req = tas_guess_fts * drag / 550. error = power_avail - power_req return error, tas_guess
def _pwr_error(prop, eas_guess, altitude, weight, power, rpm, temp = 'std', \ temp_units = 'C', rv = '8', wing_area = 110, speed_units = 'kt', \ flap = 0, wheel_pants = 1): tas_guess = A.eas2tas(eas_guess, altitude, temp = temp, \ speed_units = speed_units, temp_units = temp_units) tas_guess_fts = U.speed_conv(tas_guess, from_units = speed_units, \ to_units = 'ft/s') prop_eff = PM.prop_eff(prop, power, rpm, tas_guess, altitude, temp = temp,\ temp_units = temp_units, speed_units = speed_units) power_avail = power * prop_eff drag = FT.eas2drag(eas_guess, weight, wing_area, rv = rv, flap = flap,\ speed_units = speed_units, wheel_pants = wheel_pants) power_req = tas_guess_fts * drag / 550. error = power_avail - power_req return error, tas_guess
def roc(prop, altitude, eas, weight, power, rpm, temp = 'std', temp_units = 'C', \ rv = '8', wing_area = 110, speed_units = 'kt', flap = 0, \ load_factor = 1, wheel_pants = 1, prop_factor=1): """ Returns the rate of climb or descent. """ # PM.read_data_files_csv(base_name = prop) tas = A.eas2tas(eas, altitude, temp = temp, speed_units = speed_units) tas_fts = U.speed_conv(tas, from_units = speed_units, to_units = 'ft/s') prop_eff = PM.prop_eff(prop, power, rpm, tas, altitude, temp = temp, \ temp_units = 'C', speed_units = speed_units) * prop_factor power_avail = power * prop_eff drag = FT.eas2drag(eas, weight, wing_area, rv = rv, flap = flap, \ speed_units = speed_units, load_factor = load_factor, wheel_pants = wheel_pants) power_req = tas_fts * drag / 550. excess_power = power_avail - power_req roc = excess_power * 33000 / weight return roc
def roc(altitude, eas, weight, power, rpm, temp = 'std', temp_units = 'C', \ rv = 'F1', wing_area = 102, speed_units = 'kt', flap = 0, \ prop_eff = 0.7, load_factor = 1): """ Returns the rate of climb or descent. """ # PM.read_data_files_csv(base_name = prop) tas = A.eas2tas(eas, altitude, temp=temp, speed_units=speed_units) tas_fts = U.speed_conv(tas, from_units=speed_units, to_units='ft/s') # prop_eff = PM.prop_eff(power, rpm, tas, altitude, temp = temp, \ # temp_units = 'C', speed_units = speed_units) power_avail = power * prop_eff drag = F.eas2drag(eas, weight, wing_area, rv = rv, flap = flap, \ speed_units = speed_units, load_factor = load_factor) power_req = tas_fts * drag / 550. excess_power = power_avail - power_req roc = excess_power * 33000 / weight return roc
def cl2tas( Cl, altitude, weight, wing_area, temperature='std', load_factor=1, speed_units=default_speed_units, alt_units=default_alt_units, weight_units=default_weight_units, area_units=default_area_units, temp_units=default_temp_units, ): """ Returns the true airspeed, given coefficient of lift, altitude, weight, and wing area. Temperature and load factor are optional inputs. The temperature, if not provided, defaults to the standard temperature for the altitude. The load factor, if not provided, defaults to 1. """ weight = U.wt_conv(weight, from_units=weight_units, to_units='kg') wing_area = U.area_conv(wing_area, from_units=area_units, to_units='m**2') eas = ((((2. * weight) * g) * load_factor) / ((Rho0 * wing_area) * Cl)) ** 0.5 eas = U.speed_conv(eas, from_units='m/s', to_units=speed_units) tas = A.eas2tas( eas, altitude, temperature, speed_units, alt_units, temp_units=temp_units, ) return tas
def cl2tas( Cl, altitude, weight, wing_area, temperature='std', load_factor=1, speed_units=default_speed_units, alt_units=default_alt_units, weight_units=default_weight_units, area_units=default_area_units, temp_units=default_temp_units, ): """ Returns the true airspeed, given coefficient of lift, altitude, weight, and wing area. Temperature and load factor are optional inputs. The temperature, if not provided, defaults to the standard temperature for the altitude. The load factor, if not provided, defaults to 1. """ weight = U.wt_conv(weight, from_units=weight_units, to_units='kg') wing_area = U.area_conv(wing_area, from_units=area_units, to_units='m**2') eas = ((((2. * weight) * g) * load_factor) / ((Rho0 * wing_area) * Cl))**0.5 eas = U.speed_conv(eas, from_units='m/s', to_units=speed_units) tas = A.eas2tas( eas, altitude, temperature, speed_units, alt_units, temp_units=temp_units, ) return tas