了解OpenFOAM的道友都知道,OpenFOAM的文档写的是真的太过于简洁,以至于想要通过文档了解OpenFOAM变得非常困难。好在当前AI技术先进,从全局代码出发,对整个代码架构进行解读及总结变成了可能。
本系列文档利用AI对OpenFOAM 12的github仓库代码进行全局扫描并总结,希望对于OpenFOAM的学习能够提供一些帮助。
注意,文档内容为AI自动生成,虽然经过了简单的人工审核,但内容中依然可能会存在一些错误,请仔细甄别。添加原创标记仅为方便创建合集。
OpenFOAM(Open-source Field Operation And Manipulation)是一个用于开发定制数值求解器和前后处理工具的C++工具箱,主要用于求解连续介质力学问题,最常见的是计算流体力学(CFD)。本文档介绍了OpenFOAM-12、其架构以及主要组件之间的关系。
OpenFOAM以一系列协同工作的库组成,用于构建可执行应用程序。这些应用程序分为两大类:
该框架具备高度可扩展性,支持用户通过复用现有组件或开发新模块,创建定制化的求解器和工具程序。
OpenFOAM的核心由几个关键系统构成:
时间管理系统(foam::Time
):控制模拟的时间维度,触发函数对象,并作为顶级对象注册表。它负责时间步进、按指定间隔输出数据,以及确定模拟的开始和结束时间。
有限体积网格系统(fvMesh
):将离散化的域表示为单元、面和点的集 合。它处理网格拓扑、几何结构及连接性,并通过网格缝合器处理非共形接口。
字典系统(dictionary
):提供一种分层配置机制,贯穿于OpenFOAM中。工具如foamDictionary
可用于操作这些字典。
物理场系统(GeometricField
):存储并管理与网格元素相关的物理变量(如速度、压力、温度等)。
函数对象系统(functionObjectList
):提供框架,用于在模拟过程中执行操作,如计算派生量、输出特定数据或修改模拟状态。
OPENFOAM的环境配置通过以下方式实现:
环境设置脚本(etc/bashrc
、etc/cshrc
):设置环境变量、路径以及OPENFOAM的默认配置。
案例结构:每个OPENFOAM模拟都组织为一个案例目录,包含以下内容:
system/
:包含控制模拟参数的字典(如controlDict
)、离散格式(如fvSchemes
)以及求解器设置(如fvSolution
)。constant/
:包含物理属性和网格定义。Time
目录:存储不同模拟时间点的场数据。Control字典(controlDict
):位于system/
目录中,是模拟的主要配置文件,定义时间步长、写入间隔以及要执行的函数对象等参数。
OPENFOAM的模拟流程通常遵循以下步骤:
前处理:
blockMesh
或snappyHexMesh
生成网格模拟设置:
decomposePar
进行并行计算时的计算域分解求解器执行:
Time
类控制时间步进后处理:
reconstructPar
进行域重建(针对并行计算)paraFoam
(ParaView的封装)进行可视化postProcess
和其他工具进行数据分析OpenFOAM 通过以下方式表示计算域及其相关数据:
网格表示:
polyMesh
:基础网格类,提供拓扑信息(单元、面、点)。fvMesh
:有限体积网格类,扩展了 polyMesh
,为有限体积离散化提供额外功能。场表示:
volField
:单元中心场(例如压力、温度)。surfaceField
:面中心场(例如通量)。pointField
:点中心场。GeometricField
:模板类,用于表示与网格实体相关的场。边界条件:
fvPatchField
的派生类)应用。字典系统提供了一种用于整个OpenFOAM的分层键值配置机制。
字典系统的关键要素:
字典类:
dictionary
:用于存储层次化键值对的基类IOdictionary
:为字典添加输入输出功能controlIOdictionary
:专为控制字典设计条目:
entry
:字典条目的基类primitiveEntry
:用于简单值(如数字、字符串等)dictionaryEntry
:用于嵌套字典特殊功能:
#include
、#calc
)foamDictionary
工具进行操作功能对象提供了在模拟过程中执行操作的框架:
functionObject
:定义接口的抽象基类functionObjectList
:管理所有活动功能对象的容器timeControl
:控制功能对象何时执行Time
类在时间步进期间触发OpenFOAM-12为计算流体动力学及其他连续介质力学问题提供了一个全面的框架。其面向对象的架构允许灵活定制与扩展,而核心组件为创建、求解及分析复杂物理模拟奠定了坚实基础。该框架的主要优势包括:
这些特性的结合,使OpenFOAM-12成为适用于标准CFD应用及需要定制求解器与工具的专门模拟的强大工具。
(未完待续)