用python来设计NACA4位数翼型的截面形状
NACA 4 位数翼型是飞机上使用的典型机翼。设计具有良好气动性能的机翼不仅仅是飞机工业的工作,能够自由绘制机翼的横截面形状将在各种分析中取得进展。本文介绍如何使用 Python 绘制 NACA 4 数位机翼。
- 什么是 NACA 4 位数机翼?
我在其他文章中已经详细说明过了,请参考
NACA 4数位翼型参数
翼型最前端称为前缘,最后端称为后缘,但从前缘到后缘的直线称为弦线(Chord line)。
使弦线向上弯曲的线称为翘曲曲线或弧线(Camber line),以这种方式弯曲机翼可提高空气动力学性能
机翼在图中y轴方向有厚度,在横轴x上有分布,而不是均匀分布。这种分布称为翼型厚度分布。
在这里,假设最大厚度比t、最大翘曲位置p、最大翘曲值m为参数。都是表示弦长的百分比数值。翼型的命名方式为NACA XXXX,NACA后第一位数表示m,第二位数表示p,后两位表示t。
比如说经典的NACA 4212翼型来说,4代表弧线最大翘曲值是弦长的%4,2代表的是最大翘曲位置在前缘开始,最大弦长的%2的位置,12代表的是最大厚度是弦长的%12.
我们有这些参数后就可以设计翼型的形状了
定义NACA4位数翼型的公式
- 翼厚分布
- 弧线
NACA4位数翼型的设计示例
NACA 4位数翼型是通过将公式(2)的弧线向上添加到公式(1)定义的叶片厚度分布的上表面和下表面来定义的。
NACA 4 位数翼型的一些形状如下所示。
NACA 4位数翼型的python代码
下面整个代码中的我标有注释说明,比如说如果要绘制NACA3415,
「NACA4(m=3, p=4, t=15, x_resolution=300)」
增加 x-resolution 平滑横截面。使用 3D 打印机打印时,平滑度可能会发生变化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | import numpy as np from matplotlib import pyplot as plt # 从最大翘曲量m, 最大翘曲位置p, 最大厚度比t等参数设计NACA4位数翼型形状形状的设计函数 def NACA4(m, p, t, x_resolution): # 无次元横轴(0<=x<=1) x = np.linspace(0, 1, x_resolution) # 和实际单位保持一致 t = t / 100 m = m / 100 p = p / 10 print('t=', t, 'm=', m, 'p=', p) # 翼厚分布 yt = (t / 0.20) * \ (0.29690 * np.sqrt(x) - 0.12600 * x - 0.35160 * (x ** 2) + 0.28430 * (x ** 3) - 0.10150 * (x ** 4)) # 弧线(翘曲) yc_front = (m / (p ** 2)) * ((2 * p * x) - (x ** 2)) yc_back = (m / (1 - p) ** 2) * ((1 - 2 * p) + (2 * p * x) - (x ** 2)) # 从翼厚分布和弧线来画出翼型 yc = [] for i in range(len(x)): if x[i] < p: yc.append(yc_front[i]) else: yc.append(yc_back[i]) # 从翼厚分布和翘曲弧度来反映出形状 y_top = yt + yc y_bottom = - yt + yc # 为了后表面闭合末尾设置为0 y_top[-1] = 0 y_bottom[-1] = 0 # 设置z坐标 z = np.zeros_like(x) return x, y_top, y_bottom, yc, z # 实行计算NACA4位数翼型的截面3D点阵列坐标的函数 x, y_top, y_bottom, yc, z = NACA4(m=3, p=4, t=15, x_resolution=300) #从这里开始画图------------------------------------- # 字形的种类和尺寸的设置 plt.rcParams['font.size'] = 14 plt.rcParams['font.family'] = 'Times New Roman' # 刻度这只在内测 plt.rcParams['xtick.direction'] = 'in' plt.rcParams['ytick.direction'] = 'in' # 添加图上下左右的刻度线 fig = plt.figure() ax1 = fig.add_subplot(111) ax1.yaxis.set_ticks_position('both') ax1.xaxis.set_ticks_position('both') # 设置XY标签 ax1.set_xlabel('x [-]') ax1.set_ylabel('y [-]') # 规格设置 ax1.set_xlim(0, 1) ax1.set_ylim(-1, 1) # 准备数据图同时,设置标签、线条粗细和图例。 ax1.plot(x, y_top, label='Top', lw=1, color='green') ax1.plot(x, y_bottom, label='Bottom', lw=1, color='blue') ax1.plot(x, yc, label='Camber', lw=1, color='red') ax1.grid() ax1.legend() # 设置布局 fig.tight_layout() # 表示出数据图 plt.show() plt.close() # --------------------------------------------------- |
- 实行结果
下图是matplotlib执行结果得到的绘图结果。绿线是上表面,蓝线是下表面,红线是弧线。
总结
这篇文章介绍了设计NACA 4位数翼型图做需要的参数,并通过自动设计的python程序来实现。通过翼型的自动绘图,可以大量较少航空设计师们的时间。
END
往期推荐
点击上方蓝字关注我们