我使用的是Barba集团的AeroPython codes;
#import libraries and modules needed
import os
import numpy
from scipy import integrate, linalg
from matplotlib import pyplot
# load geometry from data file
naca_filepath = os.path.join('resources', 'naca0012.dat')
with open(naca_filepath, 'r') as infile:
x, y = numpy.loadtxt(infile, dtype=float, unpack=True)
# plot geometry
width = 10
pyplot.figure(figsize=(width, width))
pyplot.grid()
pyplot.xlabel('x', fontsize=16)
pyplot.ylabel('y', fontsize=16)
pyplot.plot(x, y, color='k', linestyle='-', linewidth=2)
pyplot.axis('scaled', adjustable='box')
pyplot.xlim(-0.1, 1.1)
pyplot.ylim(-0.1, 0.1);
并从airfoil.comnaca0012 data file使用(将名称“n0012.dat”更改为“naca0012.dat”并删除文件内的标题,因为程序不使用数据文件中的字符串)
在这节课上看起来像这样
但我用的是包括球场线在内的编码图
有什么不对劲,到底是什么?
1条答案
按热度按时间hgncfbus1#
翼型数据库的链接包含Lednicer格式的NACA 0012坐标,而AeroPython课程中的代码是为Selig格式的翼型编写的(Notebook使用源面板方法计算翼型周围的流动)。
Selig格式从机翼后缘开始,经过上表面,然后经过下表面,回到后缘。
Lednicer格式列出上表面上的点(从前缘到后缘),然后列出下表面上的点(从前缘到后缘)。
可按如下方式加载Selig格式(跳过标题“NACA 0012 AIRFOILS”,
skiprows=1
在numpy.loadtxt
中):NACA 0012翼型包含
131
个点,您将看到后缘具有有限厚度:如果你对Lednicer的格式做同样的处理(头部为
skiprows=2
),你将加载132
点(前缘点是重复的),上表面上的点被翻转(从前缘到后缘)。(这就是为什么你在中间观察到这条线pyplot.plot
;该线连接从上表面的后缘到从下表面的前缘)。重新定向点以遵循Selig格式的一种方法是跳过上表面上的前缘(即跳过复制的点)并翻转上表面上的点。以下是一种可能的解决方案:
您将以
131
点结束,其方向与Selig格式相同。最后,我们还可以检查坐标是否与
numpy.allclose
相同: