def m0_fn(Ma): if Ma <= 0.9: return (2 * math.pi) / numpy.sqrt(1 - Ma**2) else: return (2 * math.pi) / numpy.sqrt(1 - 0.9**2) def Cd_fn(Cl): return 0.0095 + 0.0040 * (Cl - 0.2)**2 nn = 101 h = 0 # m v_inf = 70 # m/s is_SI = True atm = AtmData(v_inf, h, is_SI) k = 1.4 R = 287 atm.expand(k, R) numB = 3 radius = 2 / 2 RPM = 2400 Cl = 0.4 alp0 = numpy.radians(-2) prop = Propeller(radius, numB, RPM, CP=0, CT=0, CQ=0, Cl=Cl, alp0=alp0) T_req = 13000 / 8 # N (TOGW/(L/D)) r_vec, c_vec, beta_vec, P_design, T_design, Q_design, eta_P, theta_vec = prop_design( atm, prop, T_req, m0_fn, Cd_fn) in_line = [0] * len(r_vec) plot_propeller_3D(r_vec, c_vec, beta_vec, prop, in_line)
radius = 1.78 / 2 RPM = numpy.linspace(500, 3000, nn) LD = 15 T_req = 13000 / 8 / LD #N (TOGW/(L/D)) Cl = 0.4 alp0 = numpy.radians(-2) for v_inf in range(22, 72, 10): P_design = [0] * nn T_design = [0] * nn Q_design = [0] * nn eta_P = [0] * nn for ii in range(0, nn): atm = AtmData(v_inf, h, is_SI) atm.expand(1.4, 287) prop = Propeller(radius, numB, RPM[ii], eta_P, CP=0, CT=0, CQ=0, Cl=0.4) [_, _, _, P_design[ii], T_design[ii], Q_design[ii], eta_P[ii], _] = prop_design(atm, prop, T_req, m0_fn, Cd_fn) label = "$V_\infty$ = " + str(v_inf) + " (m/s)" plt.figure(1) plt.plot(RPM, Q_design, label=label) plt.figure(2) plt.plot(RPM, eta_P, label=label)
LD = 15 # Assumed is_SI = True # 3 Blades numB = 3 # Design condition T_req = 13000 / (8) * 1.2 * 0.601 # N (TOGW/(L/D)) Cl = 0.4 alp0 = numpy.radians(-2) v_hover = 2.54 v_cruise = 62 v_design = 30 atm = AtmData(v_design, 0, is_SI) atm.expand(1.4, 287) v_seq = numpy.arange(-10, 68, 2) ll = numpy.size(v_seq) Design_RPM = 3000 prop = Propeller(radius, numB, Design_RPM, eta_P=0, CP=0, CT=0, CQ=0, Cl=Cl) r, prop.chord, prop.bet, P_design, T_design, Q_design, eta_P, prop.theta = prop_design(atm, prop, T_req, m0_fn, Cd_fn) num_len = len(prop.bet) beta_75_index = int(num_len * 0.75) x = numpy.linspace(0, 1, num_len) x_need = x[x >= 0.15] c_need = prop.chord[x >= 0.15] AF = 10 ** 5 / 16 * numpy.trapz(c_need / diameter * x_need ** 3, x_need) # activity factor CL_design = 4 * numpy.trapz(Cl * x_need ** 3, x_need)
else: return (2 * numpy.pi) / numpy.sqrt(1 - 0.9**2) def Cd_fn(Cl): return 0.0095 + 0.0040 * (Cl - 0.2)**2 # Atm # P_eng = 177 * 745.7 # W v_des = 154 * 0.514444 # m/s v_climb = 87 * 0.514444 # m/s h = 8000 * 0.3048 # m is_SI = True is_HP = True atm_check = AtmData(v_des, h, is_SI) atm_check.expand(1.4, 287) # Propeller radius = 41 * 0.0254 # m numB = 3 Cl = 0.4 RPM = 2400 alp0 = numpy.radians(-2) dens = atm_check.dens CT = 0.0509 T_req = CT * dens * (RPM / 60)**2 * (radius * 2)**4 v_seq = numpy.arange(v_climb - 30 * 0.3048, v_climb + 126 * 0.3048, 2) prop_check = Propeller(radius, numB, RPM,
def m0_fn(Ma): if numpy.any(Ma <= 0.9): return (2 * math.pi) / numpy.sqrt(1 - Ma ** 2) else: return (2 * math.pi) / numpy.sqrt(1 - 0.9 ** 2) def Cd_fn(Cl): return 0.0095 + 0.0040 * (Cl - 0.2) ** 2 v_inf = 156 * 0.514444 h = 2438.4 k = 1.4 R = 287 is_SI = True atm_check = AtmData(v_inf, h, is_SI) atm_check.expand(k, R) dens = atm_check.dens radius = 41 * 0.0254 RPM = 2400 CT = 0.0509 T_req = CT*dens*(RPM/60)**2*(radius*2)**4 # T_req = 425.6896 * 4.44822 Cl = 0.4 numB = 3 alp0 = numpy.radians(-2) prop_check = Propeller(radius, numB, RPM, eta_P=0, CP=0, CT=0, CQ=0, Cl=0.4) [r, prop_check.chord, prop_check.bet, P_design, T_design, Q_design, eta_P, prop_check.theta] = prop_design(atm_check, prop_check, T_req, m0_fn, Cd_fn) # Fixed pitch check ll = 101