OpenFOAM是一个完全由C++编写,用户群体绝大多数在Linux系统下运行,按照面向对象思想编写的计算流体力学(CFD)类库,跟商用的CFD软件Ansys Fluent,CFX类似,但其是开源的。我们也遇到了很多基于OpenFOAM或其优化版本做开发的用户,面对内容和分类繁多的字典文件,难免会顾此失彼或者不得要领。
因此,小编从四个方面总结了基于OpenFOAM开发常用的一些字典文件及其内容解释,希望能够给读者带来统筹的全面的理解。
1、字典文件整体结构
OpenFOAM算例的所有文件都存储在算例目录中,目录名为算例名。以某一算例为例,典型算例目录下通常包含以下文件/文件夹:
❐ 0.org:初始物理场文件,包括各个物理场初始的数据和边界条件等信息。根据迭代步数或时间步数的增加,会生成类似0.1、0.5等更多的时间步文件夹,每个文件夹包括的物理场的文件类型都是一样的,区别在于后续文件夹中一些场数据会有变化。
❐ constant:包含有网格文件、几何文件、物理特性文件(湍流模型、热物理属性、重力等),每个文件都定义了各自的参数。
❐ system:主要包含多个求解算法参数文件。如网格参数控制、求解时间控制、离散格式、求解器设置等。
❏ case.foam、cleanCase、runCase:这些文件主要是一些脚本及启动文件,如基于现有的定义生成网格文件时,通过写脚本的形式调用OpenFOAM的网格生成程序,借用网格生成参数控制生成网格文件。
❐ 0.org:初始物理场系列文件。0文件存放初始条件和边界条件。
不同的算例求解需求会包含不同的物理场文件,本文以上图中的速度场U文件为例。
文件中都会采用统一的量纲,指定每个边界的状态等,本文件为U,速度场文件,故边界上的值对应为速度(m/s)。
❐ constant:网格文件夹、几何文件夹、物理特性文件
❐ polyMesh:存储算例网格文件,包括点、面、单元、边界等信息。网格文件在执行计算前通过调用网格生成程序生成,网格控制参数存储在system中的相关文件中。最开始文件夹为空,在模型定义的时候不需要做定义的。
❐ triSurface:存放案例中所用到的所有stl几何文件。其它文件通过stl文件名、solid名来实现参数关联。
❏ g:重力场的定义参数。
❏ turbulenceProperties:任何包含湍流的求解器都会读取此字典文件,文件中关键词simulationType定义湍流模型RAS(雷诺平均模型)或LES(大涡模拟)作为湍流模型属性,或者laminar不使用湍流模型。
❏ RANSProperties:RAS湍流模型参数。湍流模型选择LES时为LESProperties。两文件也可以都存在,只要根据turbulenceProperties定义的湍流模型能够找到相对应的文件即可。
❏ thermophysicalProperties:热模型属性,可压缩时为thermopysicalProperties不可压缩时为transportProperties。
❐ system:网格参数、求解控制、求解器参数。
❏ blockMeshDict:此字典文件为blockMesh网格生成程序需要的参数设置文件,规定了网格参数及边界设置。
❏ iconHexMeshDict:全局网格设置、边界网格设置(对stl solid的详细网格参数)、体网格加密等。
❏ controlDict:关于求解开始时间、迭代步数、输出间隔、输出场等的控制。
❏ decomposeParDict:并行参数,包括如何划分并行域等内容。
❏ fvOptions:旋转域、多孔介质设置。
❏ fvSchemes:离散格式。
❏ fvSolution:求解器设置。
2、物理模型
❏ turbulenceProperties:在目录constant/turbulenceProperties中。
文件中会定义RASModel或LESModel两种湍流模型的模拟方式。
选用RAS时,在RASModel可以选择湍流模型类型,并针对模型所需的参数在下方进行定义。如果使用到多种湍流模型类型,可以在文件中一并写出同类型的参数,只要当前定义的模型能够找到相应的参数即可。
同理选用LES时,参数的调整都在文件中进行。
❏ thermophysicalProperties(可压缩热模型):在目录constant/thermlpysicalProperties中。
文件中包含对流体材料属性、状态方程和浮升力的参数设置。
❏ transportProperties(不可压缩热模型):在目录constant/transportProperties中。
文件中包含对流体材料属性、牛顿流体和浮升力的参数设置。
可压缩thermopysicalProperties和不可压缩transportProperties之中,包含的内容都是相近的。
❏ g:在目录constant/g中。
文件中包含重力场量纲和值。
3、网格设置
❏ iconHexMeshDict(自动块网格):在目录system/iconHexMeshDict中。
在自动块网格中,包含自动划分网格所需的网格尺寸和网格加密级别。
当autoBlockMesh选择为false时,会选用blockMeshDict的信息。
❏ blockMeshDict:在目录system/blockMeshDict中。
blockMeshDict中主要包括“体的顶点坐标”和“网格划分数目”的定义。Hex表示的六面体,(0 1 2 3 4 5 6 7)表示图形的顶点编号。
❏ iconHexMeshDict(包含全局网格和边界网格设置):在目录system/iconHexMeshDict中。
文件中需要重点关注网格加密、近壁层网格、keepPoints设置和网格尺寸缓冲层等内容,可用于全局网格的设置。
在同一个文件中,还包含边界网格和网格加密的设置内容:
文件中的内容实际上是将网格的参数与几何进行关联,几何的每一个区域都由相关的网格参数来控制。
对于网格加密,一般会对应网格单元区的生成和体网格加密,两者一般同时生成,不会分开定义。网格单元区可用于MRF、多孔介质等的定义。
在以上网格参数数据的基础上,导入stl文件,调用OpenFOAM中的网格生成程序,就可以生成网格了。
4、条件设置
在边界条件文件夹下包含多种物理场,每个物理场都有相对应的文件。文件形式也是指定某stl文件中的某solid边界的类型。此处以初始边界条件中的速度入口、压力出口为例:
左图中对某个solid定义了速度边界,则这个solid的其它物理场会有一个默认的类型。如右图所示,为这个solid的压力场默认边界。
以上是基于OpenFOAM进行前后处理集成封装时,对字典文件的一些理解和阐述,希望能够帮助您了解软件文件的信息内容和存放位置。