美文网首页
开源CFD软件---OpenFOAM简介

开源CFD软件---OpenFOAM简介

作者: Kevin_WALKE | 来源:发表于2019-10-15 18:56 被阅读0次

什么是OpenFOAM

概要

OpenFOAM是ESI集团下属的OpenCFD公司开发的一款物理场计算软件。该软件是用C++语言编写的、符合GPL协议的开源软件。 该软件能够进行流体、传热、分子动力学、电磁流体、固体应力的解析,能够实现从网格划分到后处理的可视化流程。软件能够满足用户对于设计流程匹配、物理模型、需要的计算精度、自动化流程的要求,通过代码开发实现CAE仿真。

OpenFOAM的编程语言

OpenFOAM是用C++语言进行编写的。C++语言最重要的特征就是面向对象,可以进行模板化编程。OpenFOMA巧妙得利用了这两大特点。这与传统的CFD编程语言采用Fortran或者C语言是有很大不同的。利用C++语言后期绑定这一特点进行运行时间选择等也常被使用。

源代码结构

OpenFOAM的源程序有两个重要的代码层。 1个应用层和1个库层。下图是OpenFOAM的典型代码结构。 应用层是应用的路径,源代码保存于该层中的src库文件中。自动化网格生成器、流体求解器都保存于应用层中,比如,经典的物理模型、边界条件、FVM相关参数都保存于库层。 此外,应用层的代码描述,与经典的顺序结构语言类似。

编译

OpenFOAM在编译时,编译器基本使用GNU G++。编译脚本不使用一般的make,而是采用wmake脚本。同时,因为在OpenFOAM中区分使用大小字母,所以在Windows这种不区分大小写的文件系统下,默认源代码是不能使用的。

变量

OpenFOAM,将C++语言中通常使用的原变量进行包装,形成自己独有的变量类型。简单举例来说,将int、long和long long型包装成label型,将float和double包装成scalar型,String类型变成了string、word、?leName型。另外还包括复杂的vector、tensor数组类型。如上所述,OpenFOAM中含有非常丰富的数据类型。

并行计算

在OpenFOAM中,能够进行计算区域的分割,以实现并行计算的功能。为了能够方便地设定并行计算,OpenFOAM提供了pStream类作为处理器的通信层。如下面的图中,这个类是用作MPI库的适配器,您可以自己编写并行程序,而无需清楚知道每个MPI库的含义。 

运行时选择模型

为了方便的编写应用层的源代码,OpneFOAM封装了非常多的简单模型,可以方便地在使用时选择、组合不同的模型,从而完成模拟。这就是OpenFOAM运行时选择模型的思路。下图以不可压、RANS湍流模型来说明其类库关系。湍流模型是非常多的,没有必要每一个湍流模型都编写一个应用层的代码,湍流模型的选择采用运行时选择的模式,当应用层的湍流模型改变时,其设计也不需要改变任何代码。 

数据库

如果你需要深入理解OpenFOAM,你需要了解OpenFOAM是如何处理数据库的,因为在OpenFOAM中所有的数据都是以数据库的形式存在的。所以OpenFOAM被视为所有数据的一个数据库。如果你想使用数据库,需要使用Time类和fvMesh类,这两个类均继承自ObjectRegistry类。 ObjectRegistry类继承自哈希表。通过利用这些类可以轻松而安全地访问工作路径下的数据。下图以Time类为例子进行说明。 

求解器

如前所述,OpenFOAM为了能够轻松进行物理场的计算,做了很大努力。它提供了可以通过应用层进行操作的机制,OpenFoam可以用来求解描述该领域的所有偏微分方程组。譬如,非稳态扩散方程式能够像下图一样的方式进行程序的编写。 

解析机能

OpenFOMA可以求解可压缩流动、不可压缩流动、多相流、自由表面、DNS、燃烧、化学反应、考虑浮升力的热流动、流固耦合传热、拉格朗日多相流、分子动力学、直接蒙特卡洛方法求解热辐射、电磁流体、固体应力解析,与商用CFD软件一致。此外,对于可压缩和不可压缩流动,有50种以上的RAS和LES湍流模型与之配对,拥有多种差分格式。 自动化网格生成工具使用「snappyHexMesh」来生成6面体核心的计算网格。提供了从商用CFD软件如ANSYS Fluent、STAR-CD、gambit、CFX4、ideas,网格转化为OpenFOAM网格的工具。后处理,可以使用开源可视化工具ParaView,也可以将结果转化为第3方的数据格式,如EnSight格式等。

引自:http://www.idaj.cn/sp_iconcfd/

相关文章

  • 开源CFD软件---OpenFOAM简介

    什么是OpenFOAM 概要 OpenFOAM是ESI集团下属的OpenCFD公司开发的一款物理场计算软件。该软件...

  • OpenFOAM[Duplicate entry]Error

    相比于商业CFD软件,OpenFOAM的最大优势在于其开源特性,可以让广大CDFer非常方便地利用它丰富的基础库魔...

  • OpenFOAM程序开发入门(1)

    一、OpenFOAM应用类型: 1、直接利用OpenFOAM的标准的求解器进行模拟,把OpenFOAM替代商业软件...

  • 2018-03-24

    开源软件简介 开源软件(能看见软件的源代码)精神: 使用的自由、研究的自由、散布及改良的自由 开源软件: apac...

  • Gromacs笔记 文件类型

    前言:前几个月受openFoam折磨一番后,这两周继续回来学习Gromacs. 这两个开源软件都体现了Linux系...

  • Linux入门学习(1)

    第一章 Linux简介 1.Linux分类: Linux内核版本: Linux发行版本: 2.开源软件简介: 开源...

  • Prometheus神器之监控K8s集群

    Prometheus 简介 Prometheus是SoundCloud开源的一款开源软件。它的实现参考了Googl...

  • 阅读-逆天的追书神器

    欢迎加入精品资源交流群,群号码:124168343 软件推荐 软件简介 开源的阅读软件来了:如今的小说阅读软件总是...

  • 五中常见的开源协议整理(BSD,Apache,GPL,LGPL,

    简介 开源软件(Open source software)对我们来说越来越不陌生,开源软件一方面让我们免费享用到了...

  • Git学习笔记(二)

    本文内容如下: Github简介 Github的使用 结语 Github简介 github是一个面向开源及私有软件...

网友评论

      本文标题:开源CFD软件---OpenFOAM简介

      本文链接:https://www.haomeiwen.com/subject/bmxemctx.html