Skip to content

通过现代自动微分快速实现飞机设计优化。用于空气动力学、推进、结构、轨迹设计等的可组合分析工具。

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/AeroSandbox

 
 

Repository files navigation

作者:Peter Sharpe(<pds [at] mit [dot] edu>)

下载 每月下载量 构建状态 皮伊 文件状态 许可证:麻省理工学院

AeroSandbox 是一个 Python 包,可帮助您设计和优化飞机和其他工程系统。

从本质上讲,AeroSandbox 是一个优化套件,它将熟悉的 NumPy 语法的易用性与现代自动微分的强大功能结合在一起。

这种自动微分极大地提高了大型问题的优化性能:具有数万个决策变量的设计问题在笔记本电脑上只需几秒钟即可解决。 AeroSandbox 还附带数十个端到端可微分的航空物理模型,使您可以同时优化飞机的空气动力学、结构、推进、任务轨迹、稳定性等。

保持 AeroSandbox 易于学习和使用是首要任务。复杂性是可选的- 您可以在有帮助的情况下使用 AeroSandbox 的内置物理模型,也可以添加您自己的任意自定义物理模型。

pip install aerosandbox[full]

我可以使用 AeroSandbox 做什么?

使用 AeroSandbox 设计和优化整架飞机:

Feather(超轻量1米级遥控机动滑翔机)

羽毛第一页

SEAWAY-Mini(太阳能电动、翼展 13 英尺的水上飞机)

Seaway-Mini首页

使用 AeroSandbox 支持现实世界的飞机开发项目,从您的第一个草图到您的首次飞行及以后:

2020 年春季 AeroSandbox 中的Dawn(用于气候科学研究的太阳能电动飞机)的初始概念草图 + 尺寸调整

黎明初始设计

Dawn(后更名为SACOS)于 2022 年秋季首飞

(Electra.aero 通过出色的工程设计和协调进行了大量的构建工作!)

SACOS首飞

使用 AeroSandbox 探索违反直觉的复杂设计权衡,所有这些都是在概念设计的最早阶段,这些见解发挥最大作用

探索太阳能飞机需要多大才能飞行,作为季节性和纬度的函数

黎明季节性纬度贸易空间

探索如果我们添加高度限制,Firefly (一款 0.8 马赫的火箭无人机)的任务范围会如何变化,同时优化飞机设计和轨迹

萤火虫系列天花板贸易

考虑非设计性能,探索航空公司机队需要多少架 LH2 飞机来覆盖市场

LH2 市场覆盖

使用 AeroSandbox 作为纯粹的空气动力学工具包:

滑翔机的 VLM 模拟,副翼偏转 +-30°

VLM模拟

使用任意目标和约束对机翼平面进行气动形状优化

机翼优化

根据空气动力学、结构和制造考虑因素优化翼型形状

翼型优化

在许多其他学科中:

复合材料管梁的结构优化

光束优化

螺旋桨匹配的电机分析

电机性能

分析非常规推进的工具(例如 LH2)

LH2飞机三视图

从微型无人机到客机的飞机的详细重量估算

大众预算

轻松地将 AeroSandbox 与所有您喜爱的工具连接:

其他概念设计工具(AVL、XFLR5、XFoil、ASWING、MSES 等)

X箔

通过 STEP 导出的 CAD 工具(SolidWorks、Fusion 360 等)

(也支持STL、OBJ等)

计算机辅助设计

用户提供的模型+代码(用于定制空气动力学、结构、推进力或其他任何东西 - 例如,用于优化通过概率风场的飞行,如下所示)

风速

或者,完全抛弃所有特定于飞机设计的代码,并使用 AeroSandbox 纯粹作为优化求解器或作为非线性方程组(或 ODE、或 PDE)的求解器:

优化2D Rosenbrock函数

优化

指定 Falkner Skan ODE(非线性、三阶 BVP),并让 AeroSandbox 自动处理离散化、求解甚至逆求解。

频域常微分方程

还有很多很多。最重要的是,可以任意组合这些工具,而不会损失优化速度,也不需要任何繁琐的导数数学,这一切都归功于 AeroSandbox 的端到端自动微分能力。

入门

安装

简而言之:

  • pip install aerosandbox[full]完成安装。

  • pip install aerosandbox用于具有最小依赖性的轻量级(无头)安装。包括所有优化、数值和物理模型,但跳过可选的可视化依赖项。

有关更多安装详细信息(例如,如果您是 Python 新手),请参阅此处

教程、示例和文档

要开始使用,请查看此处的教程文件夹!所有教程都可以在浏览器中查看,或者您可以通过克隆此存储库将它们作为 Jupyter 笔记本打开。

有关 AeroSandbox 的更详细和理论性的介绍,请参阅这篇论文

有关 AeroSandbox 模块的更详细的开发人员级别描述,请参阅开发人员自述文件

有关完整详细的 API 文档,请参阅文档网站

您可以使用内置help()函数(例如help(asb.Airplane))打印任何 AeroSandbox 对象的文档和示例。 AeroSandbox 代码也在源代码中进行了广泛的记录,并包含数百个单元测试示例,因此检查源代码也很有用。

使用详情

单位

最后一点需要注意:AeroSandbox 的所有输入和输出均以基本 SI 单位或其派生单位表示(例如,米、千克、秒、N、m/s、J、Pa)。由于该单位制是连贯的,因此可以在没有任何比例因子的情况下转换大量的数量。这提高了可读性并减少了错误的可能性。

SI 无处不在的规则只有两个例外:

  1. 如果变量名称的后缀中注明了替代单位。例如:

    • battery_capacity→ 焦耳
    • battery_capacity_watt_hours→ 瓦时
    • aircraft_endurance→ 秒
    • aircraft_endurance_hours→ 时间
  2. 根据长期的航空航天惯例,攻角 ( alpha, α) 和侧滑角 ( , β) 以度为单位。beta所有其他角度和角速率均使用弧度。

此外,为了防止函数输入和输出的单位出现任何混淆,所有函数文档字符串中都会列出单位。

如果您想使用其他单位,请考虑使用aerosandbox.tools.units轻松转换。

项目详情

贡献

请随时加入 AeroSandbox 的开发 - 我们始终欢迎贡献!如果您想要进行更改,最简单的方法是提交拉取请求。

该文本文件CONTRIBUTING.md为开发人员和高级用户提供了更多详细信息。

如果您已经添加了一些内容并希望参与更长期的工作,请给我留言!联系信息可以在本自述文件顶部附近我的名字旁边找到。

捐赠

如果您喜欢这个软件,请考虑通过 PayPalGitHub 赞助商捐赠以支持开发!收益将用于为研究生提供更多咖啡。

虫子

请通过创建新问题来报告所有错误!

版本控制

AeroSandbox 松散地使用语义版本控制,这应该让您了解是否可以从任何给定的更新中获得向后兼容性和/或新功能。

有关更多详细信息,请参阅变更日志

引文和商业用途

如果您发现 AeroSandbox 在研究出版物中有用,请使用以下 BibTeX 片段引用它:

@mastersthesis{aerosandbox,
    title = {AeroSandbox: A Differentiable Framework for Aircraft Design Optimization},
    author = {Sharpe, Peter D.},
    school = {Massachusetts Institute of Technology},
    year = {2021}
}

商业用户:如果这个包被证明有帮助,我非常乐意讨论主动 AeroSandbox 支持的咨询工作 - 使用本自述文件标题中的电子邮件地址进行联系。

执照

麻省理工学院许可证适用,完整条款见此处。简而言之:将 AeroSandbox 用于您想要的任何用途(商业或非商业)。 AeroSandbox 发布的目的是希望它有用,但不提供任何适销性保证(无论明示或暗示)。

如果您使用 AeroSandbox,请注明出处。

随着时间的推移观星者

随着时间的推移观星者

About

通过现代自动微分快速实现飞机设计优化。用于空气动力学、推进、结构、轨迹设计等的可组合分析工具。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 89.4%
  • Python 10.5%
  • Other 0.1%