xfoil的精简版编译后的python模块

xfoil的Python项目详细描述


一般

这是xfoil的精简版,以python模块的形式呈现。这个包裹有什么独特之处 w.r.t.还有许多其他允许xfoil的接口,这是python代码直接与 已编译的Fortran库。这种方法避免了将-/输出文件读/写到磁盘并与 xfoil可执行文件。消除对恒定磁盘I/O操作的需求可以显著加快并行速度 尤其是框架,使这种方法具有明显的优势。

构建和安装python模块

如果您使用的是带有python 3.6的windows机器(64位),那么安装xfoil是一个简单的运行问题:

pip install xfoil

如果您使用不同类型的机器,或者使用不同版本的python,则必须确保 软件已安装在系统上,以便成功生成包。首先,模块的目标 Python3,不支持Python2。因此,请确保python 3环境已安装并可用。 此外,C和Fortran的工作编译器必须安装在路径上。在windows上,构建和 安装只测试了mingw,使用gcc和gfortran。

然后,安装xfoil应该和运行xfoil一样简单

pip install .

从下载的存储库的根目录。

在windows上,您可能必须强制系统使用mingw。为此,请在中创建名为distutils.cfg的文件 PYTHONPATH\Lib\distutils包含以下内容:

[build]compiler=mingw32

如果无法为python环境创建此文件,则可以在中创建名为setup.cfg的文件 内容相同的回购协议的根。也可以在调用mingw时直接强制使用mingw pip呼叫:

pip install --global-option build_ext --global-option --compiler=mingw32 .

使用模块

所有xfoil操作都使用XFoil类执行。所以使用这个模块的第一步是创建 此类的实例:

>>> fromxfoilimportXFoil>>> xf=XFoil()

如果这不会产生任何错误,则安装应正常运行。

对称NACA0012翼型作为一个测试案例。它可以像这样加载到xfoil库中:

>>> fromxfoil.testimportnaca0012>>> xf.airfoil=naca0012 Number of input coordinate points: 160 Counterclockwise ordering Max thickness =     0.120008  at x =   0.308 Max camber    =     0.000000  at x =   0.033  LE  x,y  =  -0.00000   0.00000  |   Chord =   1.00000  TE  x,y  =   1.00000   0.00000  | Current airfoil nodes set from buffer airfoil nodes ( 160 )

一旦机翼成功加载,就可以进行分析。我们来分析它的一系列攻角,在 雷诺数一百万。让我们将迭代的最大次数限制为40(默认为20)。 对于攻角范围,我们将从-20度到20度,步长为0.5度:

>>> xf.Re=1e6>>> xf.max_iter=40>>> a,cl,cd,cm=xf.aseq(-20,20,0.5)

xfoil库应该产生大量的输出,这对于那些使用过原始xfoil的用户来说应该很熟悉 申请之前。最后的结果是攻角列表,a,以及相应的升力系数,cl, 阻力系数,cd,力矩系数,cm。例如,我们现在可以绘制该翼型的升力曲线:

>>> importmatplotlib.pyplotasplt>>> plt.plot(a,cl)>>> plt.show()

这将产生下图:

NACA 0012 Lift Curve

就像在原XOPER应用中一样,翼型也可以分析单个迎角,单升程。 系数,或升力系数的范围。这些操作的命令是

>>> cl,cd,cm=xf.a(10)>>> a,cd,cm=xf.cl(1)>>> a,cl,cd,cm=xf.cseq(-0.5,0.5,0.05)

分析攻角为10度,升力系数为1.0,升力系数范围为 -0.5至0.5,步长为0.05。

有关其他特性和细节,请参阅python源文件中的文档。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GridBagLayout不填充区域   java Memozied Fibonacci未运行与常规Fibonacci解决方案   Java Web启动未启动问题   Java中异常和if-then的区别   java从命令提示符运行批处理文件获取错误   socket在Java中验证SSL证书的公共名称   如何在JAVA中检查字符串数组中的相等字   用java语言将音频文件转换成文本文件的语音识别   java为什么foo(1,2,3)没有传递给varargs方法foo(对象…)作为整数[]   java通过蓝牙将奇怪的数据从Arduino传输到Android   java ContainerRequestFilter获取空entitystream   java如何从安卓 studio中删除不兼容类型错误   基本Java错误   在Spring引导中使用REST API时发生java错误   javascript通过从SQL查询派生的URL打开页面