OpenFOAM(英文 Open Source Field Operation and Manipulation 的缩写,意为开源的场运算和处理软件)是对连续介质力学问题进行数值计算的C++自由软件工具包,其代码遵守GNU通用公共许可证。它可进行数据预处理、后处理和自定义求解器,常用于计算流体力学(CFD)领域。该软件由OpenFOAM基金会维护(商标OpenFOAM的拥有者硅谷图形公司(SGI)赞助)。
历史
(资料图片仅供参考)
OpenFOAM的早期开发始于1980年代末期的伦敦帝国学院,其目标是为了编写一个相对于当时事实上的标准,FORTRAN,更为强大和灵活的通用模拟计算平台。并且因此选择了拥有高度模块化和面向对象特性的C++作为其编程语言。在2004年OpenFOAM以开源方式发布。
特色
OpenFOAM一个非常有特色的地方是它描述张量和偏微分方程的语法与被求解的方程本身非常相似,事实上便捷地在程序中表达传统的数学记号正是其语法设计的目标。
例如此处一个连续性方程:
solve(fvm::ddt(rho,U)+ fvm::div(phi,U)– fvm::laplacian(mu,U)==– fvc::grad(p));
OpenFOAM的架构
OpenFOAM核心功能的实现是由大量的基础库完成的,利用便捷直观的高级语法和基础库提供的功能完成开发应用。通常应用可以归为两类:
Solver 求解器:执行连续介质问题的求解计算
Case 实用程序:用于准备网格、设置模拟样例、处理结果等
每个应用有其专注的功能:如应用blockMesh用于从用户提供的输入文件生成网格,而另一个应用icoFoam,则用来求解不可压层流的Navier-Stokes方程。
最后,一些第三方软件包被用来提供并行化能力(即OpenMPI)和进行图像后处理(ParaView)。
功能
OpenFOAM的功能含有:
基本的计算流体力学求解器
不可压流的雷诺平均纳维-斯托克斯方程法(RANS)和大涡流模拟法(LES)求解器
可压流的RANS和LES求解
浮力流动求解器
直接数值模拟(DNS)和 LES
多相流体求解器
粒子跟踪求解器
燃烧问题求解器
耦合热传输求解器分子动力学求解器
OpenFOAM直接模拟蒙特卡洛求解器
电磁学求解器
刚体动力学模拟器
除以上列举的标准求解器之外,由于OpenFOAM的语法,创建自定义的求解器也是容易的。
OpenFOAM实用程序被细分为:
网格实用程序网格生成: 它们通过输入文件或几何描述文件(如)来自动生成计算用的网格(hex-dominant, snappyHexMesh)
网格格式转化:转化其他工具生成的网格到OpenFOAM格式
网格处理:执行一些网格操作,如局部优化,区域定义等
并行处理工具:提供计算任务的分解、合并和重分发功能来实现并行计算
预处理工具:准备模拟样例
后处理工具:处理模拟结果,包含到OpenFOAM和ParaView的插件
表面处理工具
热物理工具
许可证
OpenFOAM是自由软件和开源软件,在GNU通用公共许可证版本3下发布。
优劣
优点
用户友好的偏微分方程描述语法
有非结构化多面体网格的处理能力
自动并行化OpenFOAM高级语言写成的应用
现成的涵盖宽领域的应用和模型
有由开发者提供的商业支持和培训
无许可证花费
缺点
缺少集成的图形化用户界面(GUI)(但有独立私有软件可选)
开发文档缺乏足够的细节,学习曲线平缓
文档缺乏维护,入门困难
标签: