python 3软件包,用于处理与涡流点阵方法、粘性/非粘性耦合方法、梯度计算的自动微分、飞机设计优化等相关的空气动力学思想。

AeroSandbox的Python项目详细描述


气动沙箱

作者:彼得·夏普

关于

AeroSandbox是一个用于飞机设计优化、全耦合粘性/无粘性3D空气动力学和计算设计变量梯度的反模式自动微分的Python包。

10秒升降舵螺距:半秒钟内,你不仅可以计算出飞机的气动性能,同时,气动性能对有效无穷多个设计变量的敏感度。这可用于非常快速地执行基于梯度的飞机设计优化。

正在工作!

AeroSandbox imageVLM3滑翔机模拟,副翼偏转+30°。在典型笔记本电脑上运行0.35秒(i7-8750h)。

开始

安装

有几种简单的方法开始使用AeroSandbox!(假设您已经安装了python>;=3.7,最好通过蟒蛇分布

  1. (建议)在此处下载最新版本:https://github.com/peterdsharpe/aerosandbox/releases。然后,在命令提示符下运行"pip install aerosandbox",以确保满足所有依赖项。

  2. 如果您只需要原始包(没有测试用例或示例),只需在终端中键入"pip install aerosandbox"即可安装。

  3. 以上两个选项都将下载AeroSandbox的发布版本。如果您希望获得夜间/dev版本(它有更多功能,但可能有缺陷),请直接从AeroSandbox Github页面复制或下载。

  4. < > >

    您可以在/examples/目录中尝试许多示例!具体来说,请尝试运行"/examples/vlm3_communication.py"。

    用法

    AeroSandbox被设计成具有非常直观、高级和人类可读的代码。例如,以下是设计滑翔机和分析其飞行中的空气动力学所需的所有代码(见"/examples/vlm3_communication.py"):

    fromaerosandboximport*glider=Airplane(name="Peter's Glider",xyz_ref=[0,0,0],# CG locationwings=[Wing(name="Main Wing",xyz_le=[0,0,0],# Coordinates of the wing's leading edgesymmetric=True,xsecs=[# The wing's cross ("X") sectionsWingXSec(# Rootxyz_le=[0,0,0],# Coordinates of the XSec's leading edge, relative to the wing's leading edge.chord=0.18,twist=2,# degreesairfoil=Airfoil(name="naca4412"),control_surface_type='symmetric',# Flap # Control surfaces are applied between a given XSec and the next one.control_surface_deflection=0,# degreescontrol_surface_hinge_point=0.75# as chord fraction),WingXSec(# Midxyz_le=[0.01,0.5,0],chord=0.16,twist=0,airfoil=Airfoil(name="naca4412"),control_surface_type='asymmetric',# Aileroncontrol_surface_deflection=0,control_surface_hinge_point=0.75),WingXSec(# Tipxyz_le=[0.08,1,0.1],chord=0.08,twist=-2,airfoil=Airfoil(name="naca4412"),)]),Wing(name="Horizontal Stabilizer",xyz_le=[0.6,0,0.1],symmetric=True,xsecs=[WingXSec(# rootxyz_le=[0,0,0],chord=0.1,twist=-10,airfoil=Airfoil(name="naca0012"),control_surface_type='symmetric',# Elevatorcontrol_surface_deflection=0,control_surface_hinge_point=0.75),WingXSec(# tipxyz_le=[0.02,0.17,0],chord=0.08,twist=-10,airfoil=Airfoil(name="naca0012"))]),Wing(name="Vertical Stabilizer",xyz_le=[0.6,0,0.15],symmetric=False,xsecs=[WingXSec(xyz_le=[0,0,0],chord=0.1,twist=0,airfoil=Airfoil(name="naca0012"),control_surface_type='symmetric',# Ruddercontrol_surface_deflection=0,control_surface_hinge_point=0.75),WingXSec(xyz_le=[0.04,0,0.15],chord=0.06,twist=0,airfoil=Airfoil(name="naca0012"))])])aero_problem=vlm3(# Analysis type: Vortex Lattice Method, version 3airplane=glider,op_point=OperatingPoint(velocity=10,alpha=5,beta=0,p=0,q=0,r=0,),)aero_problem.run()# Runs and prints results to consoleaero_problem.draw()# Creates an interactive display of the surface pressures and streamlines

    最好的部分是,只需再添加几行代码,不仅可以获得指定设计点的性能,还可以获得任何性能变量相对于任何设计变量的导数。而且,由于反向模式自动微分,您可以在与进行单点分析大致相同的时间内计算10000个设计导数。有关此示例,请参见"/examples/gradient_test_vlm2.py"。

    最后一点需要注意的是:我们这里都是文明人,所有对Aerosandbox的输入和输出都是以基本公制单位(米、牛顿、千克等)表示的。

    依赖关系

    确保满足所有依赖项的最快方法是在命令提示符中运行"pip install aerosandbox"。但是,如果愿意,也可以自己安装依赖项。您需要以下库:

    • 努比
    • scipy
    • matplotlib
    • numba
    • 签名
    • 皮维斯塔

    如果您通过anaconda发行版安装了python,那么除了autograd和pyvista之外,您可能拥有所有这些内容。

    可视化也需要opengl,尽管这应该已经安装在几乎所有的计算机上了。呃.(如果你试着在树莓皮上运行Aerosandbox,就没有承诺!)

    当前功能

    • 用户友好、简洁、高级、面向对象的飞机几何结构定义和分析。
    • 完全反向模式AD兼容涡格法流动求解器("VLM3")!非常快(典型问题约为0.35s),完全兼容提升面的任意组合。这样,您几乎可以立即获得具有任意维度的设计空间的渐变。

    目的

    此存储库的主要目的是探索现有的空气动力分析方法,并在统一的代码库中开发新方法。

    该软件包寻求开发的空气动力学"圣杯"是: 一种空气动力学工具,使用强耦合粘性/无粘方法对任何一般的三角形三维形状(具有非分离流)周围的流动进行建模。如果成功,这可能比基于体积网格的cfd快几个数量级,同时保持高精度(xfoil就是一个二维例子)。这是非常困难的,很可能几年后,它很可能是空气沙箱将不是工具箱来开发这一点-但没有任何伤害,在它的刺,如果只是为了更好地了解问题空间!

    这段代码是开源的,希望空气动力学界能从这项工作中受益。我已经从之前的开源空气动力学工具(xfoil、avl、qprop、gpkit、xflr5、openvsp、su2和suave,仅举几个例子)中受益匪浅,所以我希望能向前发展,至少是小部分!

    未来目标

    按优先级/可行性降序排列:

    • (完成)完成传统VLM的实现,用于模拟多个薄提升面。
    • (完成)执行适当的稳定性导数计算(即不使用有限差分)。
    • (跳过)可能通过插值的2dxfoil数据(la xflr5的粘性阻力近似方法)在机翼上实现粘性阻力积累。
    • (跳过)可能实现一个混合环形/马蹄形涡VLM(一个LA XFLR5的VLM2)来模拟多个薄的提升面(希望通过VLM1方法提高速度和鲁棒性)。
    • (跳过)在几乎轴对称的物体上实现粘性阻力积累(使用Drela的Tasopt v2.00文档附录E中详述的方法)
    • (跳过)也许考虑实现一个自由尾迹兼容的VLM模型?
    • (进行中)实现一种无粘三维面板方法,用于模拟任意厚度的多个对象。
    • 使前面提到的三维面板方法能够在给定的后缘滞止点的情况下,将三角形面板用于通用几何体(例如混合翼体)。
    • 直接使用Drela论文"跨音速和低雷诺数翼型的粘性无粘分析"中描述的粘性方法实现2.5维粘性/无粘耦合方法。无粘流动将是完全三维的,而粘性流动将使展向流动的假设可以忽略不计。
    • 实现与三角形面板兼容的全三维粘性/无粘耦合方法(La Drela的IBL3方法在其论文"一般配置的三维积分边界层公式"中详细说明)。理想情况下,后缘停滞点将被自动识别,计算力和力矩只需要曲面三角剖分和自由流条件。

    有用性

    AeroSandbox试图改进现有的概念级空气动力学工具。根据作者的经验,现有工具可确定以下优点和缺点:

    优势:

    • XFLR5:可靠性、速度、准确性、可视化
    • AVL:可靠性、速度、准确性、脚本性
    • Tornado:用高级语言实现
    • vspaero:rapID CAD/几何集成,几何灵活性

    缺点:

    • XFLR5:缺乏可描述性,几何灵活性有限,单向耦合粘性分析
    • AVL:单精度计算(低梯度精度),文件I/O导致瓶颈,无粘性分析
    • 龙卷风:速度快,用户友好,无粘性分析
    • vspaero:鲁棒性、速度、精度和可靠性,解耦粘性分析
    • 所有工具:这些工具都不能为梯度计算提供反模式自动微分。

    幸运的是,这里列出的优点和缺点将有助于推动AeroSandbox的发展,以保持积极的品质,消除消极的品质。

    具体地说,已经确定了以下期望的质量(以及相关的量化指标):

    • 快速(对于点分析,VLM计算应在不到1秒的时间内得出一个在"Richardson外推"解的5%内的解(Cl,CDI),例如飞机。传统的()飞机在典型的台式计算机上)
    • 精确(在高面板密度的限制下,VLM1给出的溶液(Cl,CdI)必须与AVL或XFLR5匹配到1%以内)
    • 可靠/稳健(输出w.r.t.输入的梯度总是有限和合理的-具体地说,这意味着所有的涡核都必须人为地制造出来才没有奇点)
    • 用户友好型(最终,将创建一个gui,并且aerosandbox将作为打包的可执行文件可选地发布)
    • 可编写脚本(代码将是面向对象的;gui将包含一个cli)
    • 可读性(每个类和函数都将被记录在案;在合理的情况下,代码将与PEP-8兼容)
    • 优化器友好型(设计梯度和稳定性导数将通过自动微分而不是有限差分进行有效计算-也许使用autograd库?)
    • 可视化(可视化将通过与opengl兼容的库提供,可能是pyvista?)

    捐赠

    如果您喜欢这个软件,请考虑通过PayPal在AHEFF="HTTPS://PayPal.Me/PueDrSape"Re="NoFoLoLy"> PayPal.Me/PeordDsApple < /a>支持开发。

    错误

    请通过在https://github.com/peterdsharpe/aerosandbox/issues" rel="nofollow">https://github.com/peterdsharpe/aerosandbox/issues创建新问题来报告所有错误!

    请注意,虽然整个代码库应该是跨平台兼容的,但AeroSandbox只在Windows 10上进行过测试。

    贡献

    感谢您对帮助开发AeroSandbox的兴趣-欢迎您的贡献!

    如果您想进行更改,最简单的方法是提交请求。但是,请在进行此操作之前通知我(麻省理工学院点教育部的PDS),因为:

    现在,分支基本上不存在。这是因为目前只有一个投稿人——我。一旦改变,我们就需要实现适当的分支

    如果你已经做了一些补充,并希望参与一个更长期的能力,请留言给我(PDS在麻省理工学院点教育),我们可以添加你作为一个合作者在Github这里!

    许可证

    麻省理工学院许可证

    版权所有(c)2019 Peter Sharpe

    兹免费准许任何人取得副本 本软件和相关文档文件("软件")的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

    上述版权公告及本许可公告须全部包括在内 软件的副本或大部分。

    本软件按"原样"提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合某一特定目的和非侵犯性。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在诉讼或合同中,侵权行为或其他,产生于, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

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

    推荐PyPI第三方库


热门话题
java无法将符号解析为JSON   Java:字符串的替代品。包含可以返回相似性的   使用Selenium IDE或Java提取数据层中的pagetype值   将XML解析为Java列表   java GPEncryptedCatalist找到了PGPPubliceRing预期的位置   Java中的mongodb查询id   java使用XSLT从JSON生成PDF的页眉和页脚内容应与表一起显示在所有页面中   java gwt requestbuilder在尝试使用eclipse jetty访问xmlfile时返回404 NOT_FOUND错误   安卓数据库中的java问题   java我正试图通过terminal命令为gradle IntelliJ项目生成诱惑报告。它长时间显示加载,其他菜单显示404错误   java为什么编译器没有捕捉到这个错误?   java如何修复空变量   即使打印对话框被取消或用X按钮关闭,java文档仍在打印?