def dynamic_pressure(mach, altitude):
    """returns incompressible dynamic pressure."""
    rho = air_density(altitude)
    a = speed_of_sound(altitude)
    v = mach * a
    q_bar = 0.5 * rho * v**2
    return q_bar
Beispiel #2
0
def stall_speed(mach, h, c_l_max, n, gamma):
    """stall speed constraint equation."""
    rho = air_density(h)
    a = speed_of_sound(h)
    v = a * mach
    q_bar = 0.5 * rho * v ** 2
    w_s = q_bar*c_l_max/(n*cos(deg2rad(gamma)))
    return w_s
def reynolds_number(mach, altitude, x_ref):
    """return reynolds number."""
    rho = air_density(altitude)  # [slug/ft^3]
    mu = viscosity(altitude)
    a = speed_of_sound(altitude)  # [ft/s]
    v = mach * a  # [ft/s]
    re = rho * v * x_ref / mu  # []
    return re
Beispiel #4
0
def master_constraint(aircraft, wing_loading, mach, altitude, n, gamma, a_x):
    """master constraint equation for flight."""
    g = gravitational_acceleration()
    rho = air_density(altitude)
    rho_sl = air_density(0)
    a = speed_of_sound(altitude)
    v = a*mach
    q_bar = 0.5*rho*v**2

    c_d_0 = c_d_zero(aircraft, mach, altitude)
    c_l_a = c_l_alpha(aircraft, mach)

    t_w = (q_bar*c_d_0/wing_loading
           + wing_loading*(n**2)*(cos(deg2rad(gamma))**2)/(q_bar*c_l_a)
           + n*sin(deg2rad(gamma)) + a_x/g)*rho_sl/rho
    return t_w
Beispiel #5
0
def c_f_m(aircraft, x, u):
    s = aircraft['wing']['planform']
    altitude = x[-1]
    a = speed_of_sound(altitude)
    v = sqrt(x[0]**2 + x[1]**2 + x[2]**2)
    mach = v/a
    alpha = arctan(x[2]/x[0])
    c_bar = mac(aircraft['wing']['aspect_ratio'], s, aircraft['wing']['taper'])
    q_hat = x[7]*c_bar/(2*v)
    alpha_dot = 0
    d_elevator = u[1]
    f_x = force_x(aircraft, mach, altitude, alpha, alpha_dot, q_hat, d_elevator)
    f_y = 0
    f_z = force_z(aircraft, mach, altitude, alpha, alpha_dot, q_hat, d_elevator)
    m_x = 0
    m_y = moment_y(aircraft, mach, altitude, alpha, alpha_dot, q_hat, d_elevator)
    m_z = 0
    c = array([f_x, f_y, f_z, m_x, m_y, m_z])
    return c
Beispiel #6
0
def trim_alpha_de(aircraft, speed, altitude, gamma):
    """trim aircraft with angle of attack and elevator"""
    a = speed_of_sound(altitude)  # [ft/s]
    rho = air_density(altitude)  # [slug / ft^3]
    mach = speed / a  # []
    c_l_a = c_l_alpha(aircraft, mach)  # [1/rad]
    c_l_de = c_l_delta_elevator(aircraft, mach)  # [1/rad]
    c_m_a = c_m_alpha(aircraft, mach)  # [1/rad]
    c_m_de = c_m_delta_elevator(aircraft, mach)  # [1/rad]
    c_l_0 = c_l_zero(aircraft, mach)  # []
    a = array([[c_l_a, c_l_de], [c_m_a, c_m_de]])
    w = aircraft['weight']['weight']  # [lb]
    q_bar = 0.5 * rho * speed**2  # [psf]
    s_w = aircraft['wing']['planform']  # [ft^2]
    c_l_1 = w * cos(deg2rad(gamma)) / (s_w * q_bar)  # []
    c_m_0 = c_m_zero(aircraft, mach, altitude)
    b = array([[c_l_1 - c_l_0], [-c_m_0]])
    c = linalg.solve(a, b)  # [rad]
    return rad2deg(c)
Beispiel #7
0
def takeoff(aircraft, wing_loading, s_to, altitude, mu):
    """takeoff constraint equation."""
    g = gravitational_acceleration()
    rho = air_density(altitude)
    rho_sl = air_density(0)

    c_l_max = 1
    a = speed_of_sound(altitude)
    q_stall = wing_loading / c_l_max
    q_v_avg = 0.5 * q_stall
    mach_avg = sqrt(q_v_avg/(0.5*rho))/a

    c_d_0 = c_d_zero(aircraft, mean(mach_avg), altitude)
    c_l_0 = c_l_zero(aircraft, mean(mach_avg))
    c_l_a = c_l_alpha(aircraft, mean(mach_avg))

    d_w = q_v_avg*(c_d_0+(c_l_0**2)/c_l_a)/wing_loading
    l_w = q_v_avg*c_l_0/wing_loading

    t_w = (1.44*wing_loading/(rho*c_l_max*s_to*g) + d_w + mu*(1-l_w))*rho_sl/rho
    return t_w