OpenFOAM
OpenFOAM(英文 Open Source Field Operation and Manipulation 的缩写,意为开源的场运算和处理软件)是对连续介质力学问题进行数值计算的C++自由软件工具包,其代码遵守GNU通用公共许可证。它可进行数据预处理、后处理和自定义求解器,常用于计算流体力学(CFD)领域。该软件由OpenFOAM基金会维护[1](商标OpenFOAM的拥有者硅谷图形公司(SGI)赞助)。
原作者 | Henry Weller |
---|---|
开发者 | The OpenFOAM Foundation |
首次发布 | 2004-12-10 |
当前版本 | 4.1(2016年10月13日 | )
源代码库 | |
编程语言 | C++ |
操作系统 | Unix/Linux |
类型 | 计算流体力学 |
许可协议 | GNU通用公共许可证 |
网站 | www.openfoam.org |
历史
OpenFOAM的早期开发始于1980年代末期的伦敦帝国学院,其目标是为了编写一个相对于当时事实上的标准,FORTRAN,更为强大和灵活的通用模拟计算平台。并且因此选择了拥有高度模块化和面向对象特性的C++作为其编程语言。在2004年OpenFOAM以开源方式发布之前,英国Nabla有限公司曾销售过FOAM,OpenFOAM的前身。[2]2011年8月15日,OpenCFD宣布它被硅谷图形公司(SGI)收购。[3]
OpenFOAM是最早的用C++写成的重要科学计算软件包之一[来源请求]。现已成为使用多面体网格的最主要的通用计算流体力学(CFD)软件.
特色
语法
OpenFOAM一个非常有特色的地方是它描述张量和偏微分方程的语法与被求解的方程本身非常相似,事实上便捷地在程序中表达传统的数学记号正是其语法设计的目标。例如方程[4]
对应的OpenFOAM代码是
solve
(
fvm::ddt(rho,U)
+ fvm::div(phi,U)
- fvm::laplacian(mu,U)
==
- fvc::grad(p)
);
得益于面向对象的程序设计和运算符重载,用户可以相对容易地建立自己的求解器。然而,大量模板元编程的运用以及相应开发文档的缺乏,使得越是深入库底层的定制化越是困难和充满挑战。
可扩展性
由于使用了工厂方法和基类作为接口,OpenFOAM具有很好的可扩展性。用户在建立定制化的物体或对象(例如边界条件或湍流模型)时,无需修改或是重新编译OpenFOAM软件包,便可在已有的求解器上工作。OpenFOAM称之为运行时决策(run-time selection)[5]
OpenFOAM的架构
OpenFOAM核心功能的实现是由大量的基础库完成的,其中包括:
利用便捷直观的高级语法和基础库提供的功能完成开发应用。通常应用可以归为两类:
- 求解器:执行连续介质问题的求解计算
- 实用程序:用于准备网格、设置模拟样例、处理结果等
每个应用有其专注的功能:如应用blockMesh用于从用户提供的输入文件生成网格,而另一个应用icoFoam,则用来求解不可压层流的Navier-Stokes方程。
功能
OpenFOAM的功能含有[14]:
- 基本的计算流体力学求解器
- 不可压流的雷诺平均纳维-斯托克斯方程法(RANS)和大涡流模拟法(LES)求解[15]
- 可压流的RANS和LES求解[16]
- 浮力流动求解器[17]
- 直接数值模拟(DNS) 和 LES
- 多相流体求解器[18]
- 粒子跟踪求解器
- 燃烧问题求解器[19]
- 耦合热传输求解器[20]
- 分子动力学求解器[21]
- [22]
- 电磁学求解器[23]
- 刚体动力学模拟器[24]
除以上列举的标准求解器之外,由于OpenFOAM的语法,建立自定义的求解器也是容易的。
OpenFOAM实用程序被细分为:
- 网格实用程序
- 网格生成: 它们通过输入文件或几何描述文件(如)来自动生成计算用的网格(hex-dominant, snappyHexMesh)
- 网格格式转化:转化其他工具生成的网格到OpenFOAM格式
- 网格处理:执行一些网格操作,如局部优化,区域定义等
- 并行处理工具:提供计算任务的分解、合并和重分发功能来实现并行计算
- 预处理工具:准备模拟样例
- 后处理工具:处理模拟结果,包含到OpenFOAM和ParaView的插件
- 表面处理工具
- 热物理工具
许可证
OpenFOAM是自由软件和开源软件,在GNU通用公共许可证版本3下发布。[25]
优劣
优点
- 用户友好的偏微分方程描述语法
- 有非结构化多面体网格的处理能力
- 自动并行化OpenFOAM高级语言写成的应用
- 现成的涵盖宽领域的应用和模型
- 有由开发者提供的商业支持和培训
- 无许可证花费
缺点
- 缺少集成的图形化用户界面(GUI)(但有独立私有软件可选)
- 开发文档缺乏足够的细节,学习曲线陡峭
- 文档缺乏维护,入门困难
分支和改编
免费软件
- blueCFD 是改编自OpenFlow的运行在 Windows 上的OpenFOAM交叉编译版本。该软件包同时也含有一些有用的额外函数和工具。blueCAPE出品。[26]
- FreeFOAM[27]为了把OpenFOAM从它对系统的依赖中解脱出来,使其安装更为便携和用户友好而建立的分支。其开发紧跟最新的OpenFOAM发布版,不附带额外的功能,使用CMake作为编译系统。
- OpenFlow 是一个OpenFOAM的Windows平台交叉编译的源码补丁。blueCFD中OpenFOAM的部分既是由它而来。Symscape出品[28]
- OpenFOAM-extend[29]由Wikki有限公司维护[30]。该分支有社区贡献的大量内容,并且当中的绝大部分贡献可以装入到OpenFOAM的官方版本中,而只产生最低限度的影响。[31]它的开发与官方版OpenFOAM是并列进行的,对最新版OpenFOAM的合并可能要等到一至两年后。
付费软件
替代软件
开源软件和自由软件
- Stanford University Unstructured (SU2)[37]
- Code Saturne (GPL)
- FreeCFD[38]
- Gerris Flow Solver[39]
- OpenFVM[40]
- CLAWPACK[41]
私有软件
参考文献
- ^ The OpenFOAM Foundation homepage
- ^ OpenFOAM Release History
- ^ 存档副本. [2016-08-23]. (原始内容存档于2012-12-06).
- ^ Creating solvers in OpenFOAM. [2012-07-17]. (原始内容存档于2012-08-07).
- ^ OpenFOAM's run-time selection mechanism explained. [2012-07-17]. (原始内容存档于2014-01-08).
- ^ Linear system solvers in OpenFOAM. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ Ordinary differential equation solvers in OpenFOAM. [2012-07-17]. (原始内容存档于2012-08-07).
- ^ Dynamic mesh in OpenFOAM. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ Rheological models in OpenFOAM. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ Thermophysical models in OpenFOAM. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ Turbulence models in OpenFOAM. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ Chemical reactions and kinetics models in OpenFOAM. [2012-07-17]. (原始内容存档于2012-08-07).
- ^ Lagrangian particle tracking in OpenFOAM. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM features. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM incompressible flow solvers. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM Compressible flow solvers. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM buoyancy-driven flow solvers. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ Multiphase flow solvers. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM solvers for combustion. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM solvers for conjugate heat transfer. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM molecular dynamics solvers. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM Direct Simulation Monte Carlo solvers. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM Electromagnetics solvers. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ OpenFOAM solid dynamics solvers. [2012-07-17]. (原始内容存档于2012-07-23).
- ^ http://www.openfoam.org/licence.php (页面存档备份,存于互联网档案馆) OpenFOAM Licensing Page
- ^ blueCAPE's homepage. [2012-07-17]. (原始内容存档于2012-04-25).
- ^ FreeFOAM Home Page. [2012-07-17]. (原始内容存档于2012-06-17).
- ^ OpenFlow source code patch. [2012-07-17]. (原始内容存档于2012-07-30).
- ^ OpenFOAM-extend Project Home Page. [2012-07-17]. (原始内容存档于2012-06-17).
- ^ Wikki Ltd (页面存档备份,存于互联网档案馆).
- ^ Solvers (页面存档备份,存于互联网档案馆), Utilities (页面存档备份,存于互联网档案馆), and Other contributions (页面存档备份,存于互联网档案馆)
- ^ Caedium RANS Flow add-on. [2012-07-17]. (原始内容存档于2012-07-02).
- ^ DHCAE Tools homepage. [2012-07-17]. (原始内容存档于2012-04-25).
- ^ ICON FOAMpro Process. [2012-07-17]. (原始内容存档于2012-04-25).
- ^ ICON VWG SAE paper. [2012-07-17]. (原始内容存档于2012-04-23).
- ^ ICON FORD SAE paper. [2012-07-17]. (原始内容存档于2012-04-23).
- ^ SU2 homepage. [2012-07-17]. (原始内容存档于2016-10-19).
- ^ FreeCFD homepage. [2012-07-17]. (原始内容存档于2012-07-10).
- ^ Gerris homepage. [2012-07-17]. (原始内容存档于2019-10-19).
- ^ OpenFVM homepage. [2012-07-17]. (原始内容存档于2016-07-29).
- ^ [depts.washington.edu/clawpack]
外部链接
官方资源
- Official OpenFOAM web site(页面存档备份,存于互联网档案馆)
- OpenFOAM official documentation(页面存档备份,存于互联网档案馆)
- OpenFOAM bug-reporting system(页面存档备份,存于互联网档案馆)
社区资源
- OpenFOAM Forum at CFD Online(页面存档备份,存于互联网档案馆)
- OpenFOAM wiki(页面存档备份,存于互联网档案馆)
- FOAM CFD web site, by one of the original developers of the code, who is not associated with OpenCFD.
- A Blog about OpenFOAM in Chinese(页面存档备份,存于互联网档案馆)
- OpenFOAM中文爱好者之家网站(页面存档备份,存于互联网档案馆)
- 入门课程