4. 气动建模

任务定义

建立倾转旋翼机在直升机模式(短舱倾角90°)、固定翼模式(短舱倾角0°)及过渡状态下的气动模型,计算机翼与机身产生的升力、阻力和俯仰力矩。输入为飞行状态(空速、迎角、俯仰角速度)与短舱倾角,输出为作用于全机的气动力与力矩系数。

气动建模方法

采用分量叠加法:机翼和机身分别独立建模,忽略二者间气动干扰。机翼升力采用线性升力线理论,阻力采用抛物线极曲线;机身视为细长旋成体,仅产生阻力与俯仰力矩。短舱倾角通过改变机翼有效迎角来影响气动力,过渡状态采用倾角连续插值实现。

x (机体轴) z 机身(细长体) 机翼(含倾转短舱) δ_tilt V∞ L D M_y α 过渡状态 δ_tilt: 90°→0° 有效迎角: α_eff = α + δ_tilt 气动力随倾角连续变化 输入/输出 输入: V, α, q, δ_tilt 输出: L, D, M_y 系数: CL, CD, Cm

核心代码实现


import numpy as np

# 几何与气动参数
S_w = 6.5          # 机翼面积 (m^2)
c_w = 0.45         # 机翼平均气动弦长 (m)
AR = 8.0           # 展弦比
e = 0.85           # 奥斯瓦尔德效率因子
a_0 = 5.5          # 翼型升力线斜率 (1/rad)
alpha_0 = -0.05    # 零升迎角 (rad)
CD_0 = 0.025       # 零升阻力系数
S_f = 0.85         # 机身参考面积 (m^2)
l_f = 3.2          # 机身长度 (m)
V_f = 0.42         # 机身容积 (m^3)
rho = 1.225        # 空气密度 (kg/m^3)

def wing_aero(alpha_eff, V, q, delta_tilt):
    """机翼气动力与力矩(含倾转影响)"""
    # 有效动压(过渡状态考虑滑流影响,此处简化为全速压)
    q_inf = 0.5 * rho * V**2
    
    # 升力系数(线性段,含失速修正)
    CL_w = a_0 * (alpha_eff - alpha_0)
    CL_w = np.clip(CL_w, -1.2, 1.4)  # 限制失速范围
    
    # 阻力系数(抛物线极曲线)
    CD_w = CD_0 + CL_w**2 / (np.pi * AR * e)
    
    # 俯仰力矩系数(参考机翼前缘,取焦点在0.25c处)
    x_cg = 0.30 * c_w   # 重心位置
    x_ac = 0.25 * c_w   # 气动中心
    Cm_w = CL_w * (x_cg - x_ac) / c_w
    
    # 气动力
    L_w = q_inf * S_w * CL_w
    D_w = q_inf * S_w * CD_w
    M_w = q_inf * S_w * c_w * Cm_w
    
    return L_w, D_w, M_w, CL_w, CD_w, Cm_w

def fuselage_aero(alpha, V, q):
    """机身气动力与力矩(细长体理论)"""
    q_inf = 0.5 * rho * V**2
    
    # 机身阻力(零迎角阻力 + 迎角附加阻力)
    CD_f = 0.08 + 0.6 * alpha**2
    
    # 机身俯仰力矩(细长体理论,参考重心)
    Cm_f = 0.8 * (V_f / (S_f * l_f)) * alpha * (1 - 0.3 * alpha**2)
    
    # 机身升力很小,忽略
    L_f = 0.0
    D_f = q_inf * S_f * CD_f
    M_f = q_inf * S_f * l_f * Cm_f
    
    return L_f, D_f, M_f, CD_f, Cm_f

def tiltrotor_aero(V, alpha, q, delta_tilt):
    """
    倾转旋翼机全机气动模型
    参数:
        V: 空速 (m/s)
        alpha: 迎角 (rad)
        q: 俯仰角速度 (rad/s)
        delta_tilt: 短舱倾角 (rad), 0=固定翼模式, pi/2=直升机模式
    返回:
        dict: 包含总升力、阻力、俯仰力矩及各分量
    """
    # 倾转引起的机翼有效迎角变化
    alpha_eff = alpha + delta_tilt
    
    # 机翼气动力
    L_w, D_w, M_w, CL_w, CD_w, Cm_w = wing_aero(alpha_eff, V, q, delta_tilt)
    
    # 机身气动力(机身不随短舱倾转)
    L_f, D_f, M_f, CD_f, Cm_f = fuselage_aero(alpha, V, q)
    
    # 俯仰阻尼力矩(简化为线性阻尼)
    M_damp = -0.5 * rho * V * S_w * c_w**2 * 0.8 * q
    
    # 总气动力与力矩
    L_total = L_w + L_f
    D_total = D_w + D_f
    M_total = M_w + M_f + M_damp
    
    # 总系数(以机翼面积为参考)
    q_inf = 0.5 * rho * V**2
    CL_total = L_total / (q_inf * S_w)
    CD_total = D_total / (q_inf * S_w)
    Cm_total = M_total / (q_inf * S_w * c_w)
    
    return {
        'L_total': L_total, 'D_total': D_total, 'M_total': M_total,
        'CL_total': CL_total, 'CD_total': CD_total, 'Cm_total': Cm_total,
        'wing': {'L': L_w, 'D': D_w, 'M': M_w, 'CL': CL_w, 'CD': CD_w, 'Cm': Cm_w},
        'fuselage': {'L': L_f, 'D': D_f, 'M': M_f, 'CD': CD_f, 'Cm': Cm_f}
    }

# ========== 示例调用 ==========
if __name__ == "__main__":
    # 固定翼模式: V=50 m/s, alpha=2°, q=0, delta_tilt=0
    res_fw = tiltrotor_aero(V=50.0, alpha=np.radians(2.0), q=0.0, delta_tilt=0.0)
    print("=== 固定翼模式 (δ=0°) ===")
    print(f"CL = {res_fw['CL_total']:.4f}, CD = {res_fw['CD_total']:.4f}, Cm = {res_fw['Cm_total']:.4f}")
    print(f"L = {res_fw['L_total']:.1f} N, D = {res_fw['D_total']:.1f} N, M = {res_fw['M_total']:.1f} N·m")
    
    # 直升机模式: V=15 m/s, alpha=0°, q=0, delta_tilt=90°
    res_hh = tiltrotor_aero(V=15.0, alpha=0.0, q=0.0, delta_tilt=np.radians(90.0))
    print("\n=== 直升机模式 (δ=90°) ===")
    print(f"CL = {res_hh['CL_total']:.4f}, CD = {res_hh['CD_total']:.4f}, Cm = {res_hh['Cm_total']:.4f}")
    print(f"L = {res_hh['L_total']:.1f} N, D = {res_hh['D_total']:.1f} N, M = {res_hh['M_total']:.1f} N·m")
    
    # 过渡状态: V=30 m/s, alpha=1°, q=0, delta_tilt=45°
    res_tr = tiltrotor_aero(V=30.0, alpha=np.radians(1.0), q=0.0, delta_tilt=np.radians(45.0))
    print("\n=== 过渡状态 (δ=45°) ===")
    print(f"CL = {res_tr['CL_total']:.4f}, CD = {res_tr['CD_total']:.4f}, Cm = {res_tr['Cm_total']:.4f}")
    print(f"L = {res_tr['L_total']:.1f} N, D = {res_tr['D_total']:.1f} N, M = {res_tr['M_total']:.1f} N·m")

模型说明与验证

关键假设:机翼升力在失速前线性;过渡状态中短舱倾角直接叠加到机翼有效迎角上,模拟倾转过程中机翼相对气流角度增大、升力增加、阻力增大的物理趋势;机身采用细长体理论,忽略其升力贡献;俯仰阻尼简化为与俯仰角速度成比例的线性项。

验证方法:运行上述代码,观察三种模式下的输出。判定标准:

  • 固定翼模式(δ=0°)下,CL应为正值(约0.19),CD较小(约0.03),Cm为负值(低头力矩),符合常规飞机气动特性;
  • 直升机模式(δ=90°)下,机翼有效迎角增大至约90°,CL被限幅在1.4,CD显著增大,表明机翼处于大迎角高阻状态,符合直升机模式低速飞行特征;
  • 过渡状态(δ=45°)下,CL和CD介于两种模式之间,验证倾角插值的连续性。

可通过修改输入参数(V、α、δ_tilt)观察气动力变化趋势,确认模型响应合理。若需更精确的过渡状态气动模型,可引入螺旋桨滑流对机翼的附加动压影响,本案例为简化模型,未包含该效应。