Example #1
0
    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)
Example #2
0
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,
Example #5
0
    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