OpenVOGEL/引言
OpenVOGEL[注 1] 是一个开源项目,其目标是提供免费访问一个计算机程序,该程序可以进行气动机械问题(空气动力学+弹性+动力学)的数值研究。OpenVOGEL 可用于从头开始创建、计算和分析飞机模型的多个方面。该软件集成了网格生成器、基于一阶面板的非定常流理论、基于有限元(模态分解)的结构动力学以及图形用户界面。
OpenVOGEL 依赖于一系列在两个独立用户应用程序中实现的通用软件包:Tucan(一个用户友好的 GUI)和控制台(一个命令行工具)。在整个维基教科书中,您将找到有关这两个程序的功能、工作原理以及如何在飞机设计中使用它们的信息。
OpenVOGEL 是开源的,这意味着每个人都可以访问源代码。源代码在通用公共许可证 (GPLv3) 下发布。要帮助开发代码,请访问 存储库.
如果你热爱飞机,但你是气动机械学世界的新手,请注意,该主题在很多方面都很难。如果你没有扎实的数学基础(代数和分析),你可能很难理解这一切。我不认为自己是数学专家,所以你也不必是专家,但像处理欧几里得向量这样的基本知识是不可或缺的。要了解飞机是如何飞行的,你还需要了解基本的流体力学知识,以及一般意义上的经典(牛顿)力学。
这个项目主要针对航空航天工程师和积极从事飞机设计的本科生。但是,这并不妨碍业余爱好者或资质较低的人使用该程序作为指南来了解如何飞行或设计 RC 模型或无人机。我试图让该程序对广大公众开放。
本维基教科书的目的是通过用户的贡献,使项目的文档尽可能丰富。本维基教科书旨在涵盖软件背后的理论概念以及如何使用它、如何不使用它以及如何开发它。开源代码很棒,但要充分利用它,代码必须清晰地指定和记录。许多开源项目已经变得非常流行,但它们缺乏文档导致了很多困惑和错误的实现。为了避免这种情况,我们试图在这里提供尽可能多的信息,以便用户可以对全局图景和底层数学有一个很好的了解。
本书目前分为以下章节
有时了解一点历史有助于理解为什么有些事情是现在的样子,所以我想在这里简要介绍一下 OpenVOGEL 的演变。
OpenVOGEL 出生于 2009 年底,是我大学最后几年的一项小型研究项目。它最初是用 FORTRAN 开发的,实际上它只用于研究喷洒飞机在超低空飞行时喷洒的液滴的行为,这是一个只有在玉米和大豆田覆盖着巨型面积的国家才会出现的好奇现象。
随着程序的成熟,我开始使用 Visual Basic 6 为它开发一个人机界面 (HMI);对结果不满意并且在工作中学习了 VB.NET 后,我决定使用 Visual Studio 和 .NET 以完全面向对象的风格重写整个计算核心。选择这个编译器(实际上是虚拟机)是因为它提供了对无数有用的标准库的访问,并且它足够稳定和成熟,可以进行科学计算。其中一个优点是它节省了大量的开发时间,主要是因为内存是由一个称为垃圾收集器的机制管理的,而这种机制在 C、Ada 或 Fortran 等语言中不存在。这使开发人员能够专注于软件的功能,而不是让计算机如何完成这项工作。这并不总是必要的,对于一些应用程序(如实时应用程序)来说,它甚至可能是不可取的。然而,在原型科学项目时,这无疑是一个优势。当然,这会以牺牲一些性能为代价,但对于这个项目来说,平衡明显有利于更轻松的编码。在 .NET 中,存在许多兼容的语言,其中 Visual Basic (VB) 和 C# 是最常见的两种。我选择 VB 而不是 C# 仅仅是因为它更容易阅读和学习。但是,许多库是在 C# 中找到的,并且已经无缝地链接到项目中。
在编码方面,OpenVOGEL 在 .NET 中的演变自然与 Visual Studio Community Edition 的演变相关联。自 2010 年以来,微软一直在发布免费版本的 Visual Studio,该版本发展迅速,有利于开源社区。它从 Express 版本开始,发展成为一系列 Community 版本,这些版本比以前的版本功能丰富得多,但具有额外的许可限制。2014 年,微软将 .NET 推为一个标准规范,从那时起,它已在名为 Mono 的并行开源项目中实施。该项目还包括一个名为 Mono Develop 的开源编辑器,它最终将用于开发 OpenVOGEL 计算核心并使其跨平台。
现在让我们更详细地讨论一下该程序的 .NET 版本。程序不是一天就能完成的。通常,生命周期如下。程序从一个简单的开始,演变成一个复杂的,然后到达一个点,变得如此复杂,以至于它必须从头开始重构。只有当你从一开始就准确地知道程序应该具备哪些功能,你才能创建一个强大而灵活的核心。OpenVOGEL 的情况也是如此。当前版本是重写部分以使其更通用后的结果。程序的第一个版本只包含细长的升力面,并且只能处理 Neumann 边界条件(通过在边界处明确固定零法向速度)。在验证结果后,气动弹性算法随之而来。Dirichlet 边界条件(零内部速度势)的开发需要更多时间,并且是最近实施的功能之一。至少前四年的开发是在私下进行的,因为该程序还不够成熟,无法满足世界的要求。该程序首次在 2015 年成为开源时亮相,目的是进行科学研究而不是营销,因为我感觉到这个领域缺乏一个免费友好的程序。虽然专有软件市场非常丰富,但基于面板方法的最新开源软件却很少。实际上,大多数书籍仍然展示了 20 世纪 70 年代流行的 FORTRAN 例程,当时面向对象编程还处于早期开发阶段。基于当今的技术,OpenVOGEL 为气动机械建模提供了新的视角。
正如我们将在本书的章节中看到的那样,在软件中实施的气动方法对于解决某些问题非常强大,而对于其他问题则不足。限制具有不同的性质:由于复杂的几何形状,由于对真实物理的简化表示,甚至由于有限的计算能力。软件的限制将在描述软件的不同模块时变得明显。但是,我想对最重要的方面做一个简短的总结。让我从对模拟的含义的简要描述开始。
模拟一个系统就是尝试通过观察模型的行为来预测它的行为,模型可以是一个物质对象或一组链接的算法。用计算机算法模拟系统显然不像真实测试那样,在真实测试中使用真实的流体,并且真实方程自然地被积分。在过去的三十年或更长时间里,计算机模拟已经有了很大的改进,但仍然面临限制。数值模拟的问题在于用有限的计算资源来处理代表系统行为的复杂数学问题。我们无法跟踪流体中的所有分子,因为计算机中没有足够的存储空间来做到这一点,因此问题需要简化并浓缩在一个称为离散化的过程中。
另一方面,真实模拟的问题在于,需要仔细调整和控制环境以匹配目标情况。即使使用相同的流体,真实模型也可能偏离目标情况。例如,考虑使用风洞测试飞机。首先,你需要一个与真实模型的形状和粗糙度相匹配的飞机模型。然后你需要风洞,由于体积有限,风洞的行为与开放流体域不同。边界层在壁面上形成,它们会引入在自由飞行中不会遇到的影响。此外,需要调整空速和静压以匹配雷诺数,这可能是一个挑战。此外,如果流体在风洞入口处没有得到很好的控制,可能会引入不真实或比例不合适的湍流。最后,你需要一个精确的仪器来测量气动力。这仅仅是提到了众多可能导致偏差的来源中的一小部分。
因此我们可以得出结论,模拟系统永远不可能完全复制现实,无论使用何种方法,这始终是一个挑战。这种方法可以准确地反映目标情况的某些方面,但同时无法预测其他方面。
可能在我们的案例中最重要的是要明确说明 OpenVOGEL 完全基于势流理论。这是一种流体力学中的理想化模型。它不符合现实,但它简化了问题的数学描述。出于许多原因,必须进行这种简化。
势流理论指出,当粘度为零(或在实践中,当雷诺数趋于无穷大时),流动将变得无旋,随后我们只需要用一个非稳态标量场的形式的势函数来描述运动。速度变成该场的梯度,压强通过著名的伯努利方程与速度的平方联系起来。这确实是一个美丽且易于理解的理论。然而,在势流理论中没有皮肤摩擦力,更不用说微观湍流了。因此,你永远无法得到关于边界层如何行为的准确描述。你甚至看不到边界层。我知道这听起来很令人失望,但请不要停止阅读,因为在实践中,它能够在短短几分钟内对主要的空气动力提供非常好的预测。
其他 CFD 程序能够求解 Navier-Stokes 方程,这带来了一些优势。例如,这些程序通常包括摩擦力和湍流模型。然而,这些程序背后的算法要复杂得多,因为它们通常基于有限元或有限差分方法。它们需要更多的自由度和更复杂的几何描述,因此需要更多的内存和 CPU 能力。它们还需要进行微调才能正常工作,通常通过修改控制参数来匹配真实模拟。因此,大多数设计师不会在飞机的早期设计阶段使用它们,因为在早期设计阶段需要快速比较不同的几何配置。复杂的 CFD 程序更适合用于尖端技术的研发,因为在这些领域,准确性起着重要作用。所以你可能从这些想法中开始意识到使用简单方法(例如我们将在此学习的方法)用于常见工程应用的重要性。
- ↑ 最初,名称来自“涡量生成格点”(Vorticity Generated Lattice)的首字母缩略词,但选择“vogel”而不是“VGL”是因为它在荷兰语中意为“鸟”(其中“v”发音为“f”)。