CFD萌新入门|开源CFD代码
本文介绍开源 CFD 软件包 OpenFOAM。
注:本文翻译自网络,原文地址:https://www.resolvedanalytics.com/theflux/comparing-cfd-software-part-2-open-source-cfd-software-packages 。下文中所有对软件功能及性能的评价均为原作者的观点。
”
一些最常见的开源代码包括 OpenFOAM、SU2、Palabos、Fire Dynamics Simulator 和 MFIX。OpenFOAM 是迄今为止使用最广泛的,将是本次讨论的焦点。
软件名称 | 官网地址 |
---|---|
OpenFOAM(基金会版本) | https://openfoam.org/ |
OpenFOAM(ESI版本) | https://openfoam.com/ |
SU2 | https://su2code.github.io/ |
Palabos | http://www.palabos.org/ |
FDS | https://pages.nist.gov/fds-smv/ |
MFIX | https://mfix.netl.doe.gov/ |
译者注:OpenFOAM 是通用 CFD 软件包,SU 2 比较专注航空外流场,Palabos 使用 LBM,FDS 主要做火灾消防,MFIX 主要关注多相流。
”
OpenFOAM(OpenFOAM)近年来通过不断增长的用户群进行的验证和确认(V & V)研究获得了相当大的可信度。越来越多的大学和公司也在独立使用 OpenFOAM,并与其他商业代码结合使用。浏览以前的 OpenFOAM用户会议议程,可以看到梅赛德斯奔驰、巴斯夫、宝马、大众和英特尔等公司都在其中。这并不奇怪,因为拥有巨大仿真工作负载的大公司从免费软件许可中受益最大。
OpenFOAM 是一种优秀的计算流体力学工具,在学术界得到广泛应用。但它也有一些缺点,使其无法在工业界普及。
译者注:OpenFOAM 事实上并不能称之为 CFD 软件,它只是一个开源 CFD 代码库。虽然 OpenFOAM 提供了一些预编译求解器,但仅仅这些求解器距离完整的 CFD 流程所需的工具链还相去甚远。
”
1 OpenFOAM背景
OpenFOAM 最初简称为 "FOAM",是一套基于有限体积的数值算法,最初由伦敦帝国学院 Henry Weller 的 CFD 小组于 1989 年开发。FOAM 是 Field Operations and Manipulation 的缩写。一个有趣的现象是,Weller 先生和他的同事们当时很有远见地使用了 C++,而不是更普遍的工程编程语言 FORTRAN,以利用其面向对象的能力。想法不错。随后,Weller 先生及其同事成立了 OpenCFD 有限公司并将 OpenFOAM 开源,该公司随后被 Silicon Graphics International (SGI) 和后来的 ESI 收购。与此同时,OpenFOAM 的版权转让给了 OpenFOAM 基金会。
这两个组织都提供与 OpenFOAM 相关的软件包和教程下载。两者的代码库几乎相同。软件的发布周期和软件版本的 "编号" 略有不同。因此,您可能会发现一个版本或另一个版本具有(或不具有)您正在寻找的某项功能。基金会通常每年发布一到两次版本,版本号分别为 4.0、5.0、6.0(当前版本)。OpenCFD 也有类似的发布计划,但版本号不同,其根据发布的年月来确定以防混淆(目前是 v1806,即 2018 年 6 月)。
译者注:本文写于2020年。随着时间的推移,ESI与基金会的OpenFOAM之间的差异越来越大。当前(2023年9月)ESI的最新版本为2306,基金会的版本为V11。
”
2 Linux及Windows版本
OpenFOAM本身是一个基于 Linux 的程序,这意味着你需要使用一个基于 Linux 的操作系统,如 Ubuntu、Fedora 或 Redhat Linux Enterprise,或者你需要通过 Windows 中的虚拟机运行 OpenFOAM。不言而喻,在使用 OpenFOAM时,一定的 Linux 知识或背景会非常有用。
最近,微软在 Windows 10 中实现了将 Linux Bash Shell 作为应用程序运行的功能,这是为扩大 OpenFOAM用户群迈出的关键一步。安装该应用程序后,Windows 用户可以直接从 Windows 桌面下载、安装并通过该应用程序运行本机 OpenFOAM。
在此之前,Windows 用户要运行 OpenFOAM,需要在电脑上 "双启动 "并在启动时运行 Ubuntu。这就需要对硬盘进行分区,以便将 Windows 和 Ubuntu 文件存储系统分开。幸好有了 Windows Linux Bash Shell,你可以在 Windows 中直接访问 OpenFOAM文件,并通过你最喜欢的 Windows 文本编辑器对其进行编辑。
OpenCFD 还发布了OpenFOAM 的 Windows "容器化 "版本。该版本通过 Docker 技术在 Linux 环境之外运行,该技术将源代码容器化为 Windows 7、8 或 10 可以运行的应用程序。
安装完成后,初次使用的用户可能会惊讶地发现,他们实际获得的是一个包含大量文本文件(称为dictionaries或dicts)的目录结构。那些喜欢使用标准图形用户界面指导工作流程(从模型设置和网格划分到运行仿真再到后处理)的用户应该另寻他处。或许可以看看 OpenFOAM封装器,如 此处 所讨论的那些封装器。相反,用户通过自己选择的文本编辑器与 OpenFOAM进行交互,并通过 Linux 命令行中的可执行文件启动进程。
3 工作流程和物理功能
虽然有些吓人,但设置一个简单的问题并不难,如果能找到一个与你的问题相似的教程,设置起来就更容易了。教程库中有很多教程,希望有一个适合你。典型的工作流程是将教程目录复制到项目的本地工作文件夹中。这样您就可以修改本地项目文件夹中的网格、边界条件、流体属性等,而不会对原始下载包造成任何影响。
OpenFOAM 开箱即用,功能强大。它可以求解瞬态或稳态流、湍流或层流、牛顿或非牛顿流体、多相流(拉格朗日粒子和欧拉/VOpenFOAM)、反应流和被动标量等。虽然使用这些功能并不需要 C++ 编程技能,但它们确实降低了难度。一般来说,每个内置求解器都是为特定类型的问题量身定制的。这意味着您需要事先了解您的应用程序中存在哪种类型的物理问题,以及哪种类型的基于有限体积的数值算法最适合解决这些物理问题。下面简要列出了一些更常见的求解器及其相关物理特性。
在这一环境中分配适当的求解器设置是成功模拟的一个关键方面,即使对最有经验的 CFD 工程师来说也是一个挑战。
所有这些都可能有点令人生畏,但每个目录都可视为一个组织桶,桶内的每个 "字典 "文件都不会过于复杂。一般来说,只要将典型求解器设置配置为自己喜欢的设置,就只需修改每个案例的流体属性和入口/出口边界条件即可。这对于重复求解相同类型问题的用户来说非常方便,因为在这种情况下,整个案例/项目目录结构都可以重复使用,而无需更改任何内容(网格除外)。
4 网格划分
目前,缺乏易用且功能强大的内置网格工具是包括 OpenFOAM在内的所有开源 CFD 程序的绊脚石。 内置网格工具 blockMesh 对于矩形管道等基本几何图形来说还算合格,但对于更复杂的几何图形来说几乎毫无用处。附加实用程序 snappyHexMesh 可以读取 STL 格式的曲面几何文件,作为在虚拟风洞中进行测试的主体。要获得像样的网格,需要进行细化和清理。这一过程既费力又费时,特别是对于具有小特征的复杂情况。对于在典型 3D 实体建模环境中创建几何体的内部流动问题,没有任何实用程序可以实现网格划分。
不过,OpenFOAM确实包含几个转换器实用程序,可将其他软件包中的网格转换为所需的网格文件结构。对我们来说,这是将高质量网格导入 OpenFOAM的最简单快捷的方法。不过,这需要使用第三方网格生成软件。著名的内置转换器包括 ccmTOpenFOAMoam 和 fluentMeshTOpenFOAMoam,它们可以将西门子的 STAR-CCM+ 和 ANSYS Fluent 网格转换为 OpenFOAM格式。其他常见的网格工具,如 Pointwise 和 Gmsh,也可以直接导出为 OpenFOAM 网格文件格式。此外,建议在运行此类工具后检查生成的网格,以确保转换成功。OpenCFD 文档中讨论了更多选项。不过我们需要注意的是,在使用内置转换器从商业软件网格进行转换后,我们曾遇到过无法解释的求解器稳定性问题。
5 求解与后处理
一旦有了网格几何体,物理模型和求解器设置也准备就绪,就可以导航到案例目录,然后在命令行终端输入求解器关键字,如 simpleFoam。就是这样。您的案例就可以运行了。当求解器运行时,您可能会在命令行/终端窗口中看到每次迭代的残差。你也可以将它们写入日志文件。
OpenFOAM的一个特别优势是,它允许 "分解 "问题,并在多个处理器上并行运行,甚至在网络上的多个 CPU 节点上并行运行。使用 OpenFOAM时,必须在system目录下设置一个decomposeParDict文件。该文件允许用户指定将使用多少个处理器,以及如何将域分配给每个处理核心。字典准备就绪后,"decomposePar "例程将被调用,并将模型分解成指定的部分。仿真完成后,用户必须在后处理前调用 "recompose "例程。虽然这些例程需要时间,但通过并行化可以大大缩短大型问题的仿真时间。
新版 OpenFOAM添加了一个名为foamMonitor的例程,允许在启动作业后在终端键入第二条命令,以交互方式绘制守恒方程残差。要使其正常工作,还需要一些其他设置步骤,但一旦开始工作,它就能很好地工作。遗憾的是,由于 Ubuntu bash 无法显示曲线图,因此无法在 Windows 10 中运行。
总的来说,我们发现 OpenFOAM求解器非常稳健。对于顽固的问题,调整众多求解器设置(如欠松弛因子、离散化阶数和时间行进方案)的能力总是很有帮助。
OpenFOAM 附带一个名为 ParaView 的开源后处理软件。ParaView 的功能包括大多数标准的科学可视化,如等值线图、矢量图、流线图和线图。可以沿线和点提取数据。时间步长结果之间的轻松切换允许创建动画。下图是 ParaView 根据 Ahmed Body 参考问题制作流线图的示例。需要注意的是,ParaView 有免费的 Windows 独立版本,我们使用的实际上就是这个版本。另外,用户也可以将 OpenFOAM结果导出到第三方商业软件,如 Ensight 或 FieldView (需要许可证),以便在您选择的软件包中对模型结果进行后处理。
6 小结
-
OpenFOAM 是一款出色的流体力学计算工具。它具有以下优势:
-
大量功能和多种求解器,可应用于多种类型的流动问题 -
在过去二十年(至少二十年)里,由专门解决计算流体力学问题的人员开发和完善的产品 -
具有许多开源软件的典型优势,如广泛的用户群、在线教程和示例问题,以及根据个人喜好定制代码库的能力 -
在学术界和工业界的认可度越来越高 -
无需购买成本! -
OpenFOAM也有一些缺点,可能会阻碍它的普及/主流化,其中包括
-
学习曲线陡峭,用户需要具备一定的高级专业知识,才能确定要解决哪些重要的物理问题,以及如何将这些物理问题与数值算法进行最佳匹配 -
需要基于 Linux 的操作系统或某些 Windows 版本的 OpenFOAM,这些版本可能具有或不具有 OpenFOAM的所有本地功能/实用程序(例如绘制交互式残差图)。掌握一些基本的 Linux 文件操作命令也很有帮助。 -
缺乏高性能的内置网格划分工具 -
需要学习额外的后处理软件包 -
与工作流程优化的商业软件(集预处理、求解和后处理于一体)相比,由于工作流程相互脱节,因此需要额外的时间来设置和分析模型结果。
文章来源:CFD之道