Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aifroil plottin通过python在Spyder中使用数据文件而不使用法院线_Python_Matplotlib_Jupyter Notebook_Spyder - Fatal编程技术网

Aifroil plottin通过python在Spyder中使用数据文件而不使用法院线

Aifroil plottin通过python在Spyder中使用数据文件而不使用法院线,python,matplotlib,jupyter-notebook,spyder,Python,Matplotlib,Jupyter Notebook,Spyder,我使用Barba Group的AeroPython #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 op

我使用Barba Group的AeroPython

#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);
并从翼型网站使用(将名称“n0012.dat”更改为“naca0012.dat”,并删除文件中的标题,因为程序不使用数据文件中的字符串)

在本课中,请看下面的图

但我用的是代码图这包括了球场线


有点不对劲,但到底是什么?

到机翼数据库的链接包含Lednicer格式的NACA0012坐标,而AeroPython课程中的代码是以Selig格式为机翼编写的。 (使用源面板法计算翼型周围的流动。)

Selig的格式从机翼的后缘开始,经过上表面,然后经过下表面,回到后缘

Lednicer格式列出上表面上的点(从前缘到后缘),然后列出下表面上的点(从前缘到后缘)

您可以按如下方式加载Selig格式(跳过标题“NACA 0012翼型”,在
numpy.loadtxt
中使用
skiprows=1
):

导入urllib
#检索几何图形并将其保存到文件。
选择http://airfoiltools.com/airfoil/seligdatfile?airfoil=n0012-伊尔
selig_路径='naca0012 selig.dat'
urllib.request.urlretrieve(selig\u url,selig\u路径)
#从文件中加载坐标。
以开放(选择路径“r”)作为填充:
x1,y1=numpy.loadtxt(infle,unpack=True,skiprows=1)
NACA0012翼型此处包含
131
点,您将看到后缘具有有限厚度:

print('点数:',x1.大小)#->131
打印(f'第一点:({x1[0]},{y1[0]})#->(1.0,0.00126)
打印(最后一点:({x1[-1]},{y1[-1]})#->(1.0,-0.00126)
如果对Lednicer格式(标题为
skiprows=2
)执行相同操作,则将加载
132
点(前缘点重复),上表面上的点将翻转(从前缘到后缘)。 (这就是为什么你在中间观察到这行的代码为<代码> PyPr.Prime< /Cord>;该线将后缘从上表面连接到下表面的前缘。)< /P> 按照Selig的格式重新定向点的一种方法是跳过上表面上的前缘(即跳过复制点)并翻转上表面上的点。 以下是一个可能的解决方案:

导入numpy
#检索几何图形并将其保存到文件。
莱德尼塞http://airfoiltools.com/airfoil/lednicerdatfile?airfoil=n0012-伊尔
lednicer_路径='naca0012 lednicer.dat'
urllib.request.urlretrieve(lednicer\u url,lednicer\u路径)
#从文件加载坐标(以Selig格式重新定向点)。
以开放式(lednicer_路径,'r')作为填充:
#文件的第二行包含每个曲面上的点数。
_,info=(范围(2)中的uu的下一个(填充)
#获取上表面上的点数(不带前缘)。
num=int(信息分割('.')[0])-1
#加载坐标,跳过第一个点(上表面的前缘)。
x2,y2=numpy.loadtxt(infle,unpack=True,skiprows=2)
#上表面上的翻转点。
x2[:num],y2[:num]=numpy.flip(x2[:num]),numpy.flip(y2[:num])
您将得到
131
点,方向与Selig的格式相同

print('点数:',x2.大小)#->131
print(f'First point:({x2[0]},{y2[0]})#->(1.0,0.00126)
打印(最后一点:({x2[-1]},{y2[-1]})#->(1.0,-0.00126)
最后,我们还可以检查坐标是否与
numpy.allclose
相同:

assert numpy.allclose(x1,x2,rtol=0.0,atol=1e-6)#->True
assert numpy.allclose(y1,y2,rtol=0.0,atol=1e-6)#->True