目录
- 1. applications 目录
- solvers:存放各种求解器。
- mesh:网格生成相关工具。
- 2. src 目录
- 3. tutorials 目录
- 其他主要目录和文件
- 参考
OpenFOAM 源码文件目录的框架如下,OpenFOAM 是一个开源的计算流体力学 (CFD) 软件包,其源码文件结构设计精巧,分为多个主要目录,每个目录都有特定的功能和内容。
OpenFOAM 源码文件目录框架详细解析,关于具体安装请参考上一篇文章:https://blog.csdn.net/weixin_41194129/article/details/139758221
1. applications 目录
功能:包含了所有的应用程序,包括求解器和实用工具。
solvers:存放各种求解器。
incompressible:不可压缩流体求解器。
icoFoam:简单的不可压缩流体求解器。
multiphase:多相流求解器。
interFoam:用于两相流的求解器。
utilities:存放各种实用工具。
具体来看:在 OpenFOAM 中,solvers 目录是存放各种求解器(solvers)的地方。求解器是用于解决不同类型流体力学问题的数值方法和算法的实现。下面详细展开 solvers 目录下的两个子目录和其对应的求解器。
incompressible:不可压缩流体求解器
在 OpenFOAM 中,不可压缩流体求解器专门用于模拟不可压缩流体的运动和流动。这些求解器采用了有限体积方法来求解流体动力学方程,并且通常适用于流体的密度变化较小的情况。
icoFoam:简单的不可压缩流体求解器
icoFoam 是 OpenFOAM 中的一个简单的不可压缩流体求解器,主要用于解决稳态和非稳态的不可压缩流动问题。它基于 Navier-Stokes 方程和连续性方程,并且适用于需要高精度数值模拟的场景。icoFoam 的主要特点包括:
求解的方程:Navier-Stokes 方程和连续性方程。
适用场景:适用于低速、不可压缩流体流动的模拟。
数值算法:采用有限体积方法进行离散化,通常使用 SIMPLE 或 PISO 算法来处理速度压力耦合。
multiphase:多相流求解器
多相流求解器用于模拟同时存在两种或多种流体(相)的复杂流动现象。OpenFOAM 中的 multiphase 目录包含了各种多相流求解器,其中最常见的是用于两相流的求解器。
interFoam:用于两相流的求解器
interFoam 是 OpenFOAM 中用于解决两种流体界面的动力学行为的求解器。它基于 Volume of Fluid (VOF) 方法,能够有效地捕捉和模拟两种不同流体之间的界面和相互作用。interFoam 的主要特点包括:
求解的方程:Navier-Stokes 方程和连续性方程,结合 VOF 方法进行界面跟踪。
适用场景:适用于需要模拟两种或更多种不同流体的界面现象,如泡沫、液滴、气泡等。
数值算法:采用高分辨率数值格式,确保界面的准确捕捉和数值稳定性。
utilities:存放各种实用工具
utilities 目录是 OpenFOAM 中存放各种实用工具的地方,这些工具可以帮助用户进行流体力学模拟前后的数据处理、网格生成、后处理等操作。
mesh:网格生成相关工具
mesh 子目录包含了用于生成和处理网格的工具,这在数值模拟中是非常关键的一步,直接影响数值模拟的精度和效率。
generation:生成工具
generation 目录包含了各种用于生成不同类型网格的工具。在 OpenFOAM 中,最常用的网格生成工具之一是 blockMesh。
blockMesh:网格生成工具
blockMesh 是 OpenFOAM 中的一个重要工具,用于生成结构化网格。它通过定义块(blocks)、边界条件和网格参数来生成结构化的三维网格,适用于简单到复杂的几何形状和流动问题。
postProcessing:后处理工具
postProcessing 子目录包含了各种用于后处理和分析数值模拟结果的工具,其中包括图形化输出、数据采样和结果分析等。
graphics:图形相关的后处理工具
graphics 目录下的工具主要用于生成和处理模拟结果的图形化输出,通常与 ParaView 集成,能够生成动画、流线图、矢量图等形式的结果展示。
paraFoam:ParaView 集成工具
paraFoam 是 OpenFOAM 中与 ParaView 集成的工具,通过 paraFoam 可以将 OpenFOAM 模拟结果导入 ParaView 进行更高级的可视化和后处理分析。
mesh:网格生成相关工具。
generation:包含网格生成器。
blockMesh:用于创建结构化网格的工具。
postProcessing:后处理工具。
graphics:图形相关的后处理工具。
paraFoam:用于与 ParaView 集成的工具。
具体来看:在 OpenFOAM 中,mesh 目录下的工具主要用于处理和生成数值模拟所需的网格,网格质量和结构直接影响了数值模拟的精度和效率。
generation:包含网格生成器
generation 是 mesh 目录下的一个子目录,专门负责包含各种网格生成器工具,其中最常用和重要的工具是 blockMesh。
blockMesh:用于创建结构化网格的工具
blockMesh 是 OpenFOAM 中用于创建结构化网格的基础工具之一,它通过定义块(blocks)、边界条件和网格参数来生成三维结构化网格。以下是 blockMesh 的主要特点和用途:
工作原理:blockMesh 将物理空间划分为多个块(blocks),每个块可以有不同的网格密度和几何形状。
应用场景:适用于各种复杂几何形状的流动问题,能够高效地生成符合几何要求的网格。
特点:生成的网格具有良好的结构化特性,有利于数值计算的稳定性和收敛性。
使用方法:通过 OpenFOAM 中的字典文件(如 blockMeshDict)配置和控制网格的生成参数和几何定义。
postProcessing:后处理工具
在数值模拟中,生成数值结果并进行分析和展示是非常重要的步骤。OpenFOAM 提供了丰富的后处理工具,以便用户可以有效地分析和可视化模拟结果。
graphics:图形相关的后处理工具
graphics 是 postProcessing 目录下的一个子目录,包含了用于生成和处理模拟结果图形化输出的工具。
paraFoam:用于与 ParaView 集成的工具
paraFoam 是 OpenFOAM 中专门用于与 ParaView 集成的后处理工具。ParaView 是一个强大的开源科学数据可视化工具,能够处理大规模数据并生成高质量的三维图形和动画。
功能:paraFoam 可以将 OpenFOAM 模拟结果导出为 ParaView 可识别的格式,以便进行更高级的可视化和后处理分析。
使用方法:用户可以通过命令行或图形界面调用 paraFoam,选择相应的模拟结果数据并在 ParaView 中进行交互式分析和可视化。
优势:ParaView 提供了丰富的后处理功能,包括流线图、矢量场显示、动画生成等,能够帮助用户更直观地理解数值模拟的结果。
2. src 目录
功能:包含 OpenFOAM 的核心库和基础设施代码。
finiteVolume:有限体积方法的实现,是 OpenFOAM 求解器的核心基础。
lagrangian:拉格朗日方法的实现,用于处理颗粒流、液滴流等问题。
thermophysicalModels:热物理模型和热力学属性库的实现。
turbulenceModels:各种湍流模型的实现,包括 RANS、LES 等。
sampling:用于数据采样和处理的工具。
3. tutorials 目录
功能:包含各种示例案例,帮助用户学习和使用 OpenFOAM。
incompressible:不可压缩流体流动的示例案例。
icoFoam:与不可压缩流体求解器相关的案例。
cavity:简单的腔体流动案例。
multiphase:多相流动的示例案例。
interFoam:与两相流求解器相关的案例。
damBreak:溃坝问题的案例。
具体来看:
finiteVolume:有限体积方法的实现
在 OpenFOAM 中,finiteVolume 是一个核心模块,用于实现各种求解器的有限体积方法。有限体积方法是求解流体力学偏微分方程的常用数值方法,它将物理区域离散为有限数量的控制体积,并在每个控制体积上建立质量、动量和能量守恒方程。以下是 finiteVolume 模块的详细介绍:
功能:实现了 Navier-Stokes 方程等流体力学偏微分方程的数值解法,通过有限体积方法进行离散化求解。
核心算法:包括压力-速度耦合算法(如 SIMPLE 和 PISO 算法)、网格重构和解耦算法等,确保数值解的稳定性和收敛性。
应用场景:适用于各种流动问题的模拟,包括不可压缩流体、多相流动、燃烧和传热问题等。
lagrangian:拉格朗日方法的实现
lagrangian 模块是 OpenFOAM 中用于实现拉格朗日方法的部分,主要用于模拟颗粒流、液滴流等问题,这些问题中颗粒或液滴的运动状态由其自身的轨迹决定,而不受周围流体的影响。
功能:提供了适合处理颗粒流、液滴流等粒子追踪问题的数值方法和算法。
核心技术:采用 Eulerian-Lagrangian 耦合方法,将颗粒的运动方程与流体的 Eulerian 方程耦合,实现两者之间的相互作用。
应用场景:适用于颗粒物料输送、颗粒悬浮流动、喷雾、气泡流等多种工业和科学应用场景。
thermophysicalModels:热物理模型和热力学属性库的实现
thermophysicalModels 模块包含了 OpenFOAM 中热物理模型和热力学属性库的实现,这些模型和库用于描述和计算流体的热物理性质和热力学属性。
功能:提供了各种物质(如空气、水、液体金属等)的物理性质数据、热传导系数、比热容、粘度等参数的计算和模型。
核心内容:包括状态方程、热传导模型、物质性质随温度和压力变化的关系等。
应用场景:广泛用于模拟流体的传热、相变、燃烧等热力学过程。
turbulenceModels:各种湍流模型的实现
turbulenceModels 模块包含了 OpenFOAM 中各种湍流模型的实现,湍流是流体动力学中普遍存在的不稳定现象,需要通过湍流模型来描述和模拟。
功能:提供了多种湍流模型,包括 Reynolds 平均 Navier-Stokes 方程(RANS)、大涡模拟(LES)和直接数值模拟(DNS)等。
核心技术:各种湍流模型基于不同的假设和数学形式,适用于不同湍流强度和长度尺度的流动问题。
应用场景:适用于需要准确描述湍流效应的流动问题,如风力发电机叶片、汽车空气动力学、建筑物风场模拟等。
sampling:用于数据采样和处理的工具
在 OpenFOAM 中,sampling 模块提供了一系列工具,用于对数值模拟结果进行数据采样、处理和分析,以便获取流场中各种物理量的详细信息。
功能:包括点采样、面采样、体积采样等方法,用于提取流场中的速度、压力、温度等数据。
应用场景:用于生成流场的数据文件、绘制流场图像、生成统计数据等,为模拟结果的后续分析提供支持。
其他主要目录和文件
bin:包含编译后生成的可执行文件和脚本。
COPYING:版权和许可证文件,通常为 GPL。
doc:包含用户手册、程序员指南和其他文档。
etc:包含配置文件和环境设置脚本,如 bashrc 和控制字典文件。
out.log:编译和运行时的输出日志文件。
platforms:包含编译后生成的平台相关的二进制文件和库文件。
README.md 和 README.org:项目的使用说明和详细说明文件。
test:用于测试 OpenFOAM 功能和性能的测试案例和脚本。
wmake:OpenFOAM 的编译工具,用于编译和链接源代码。
OpenFOAM-10/
├── Allwmake
├── applications/
│ ├── solvers/
│ │ ├── incompressible/
│ │ │ └── icoFoam/
│ │ └── multiphase/
│ │ └── interFoam/
│ └── utilities/
│ ├── mesh/
│ │ └── generation/
│ │ └── blockMesh/
│ └── postProcessing/
│ └── graphics/
│ └── paraFoam/
├── bin/
├── COPYING
├── doc/
├── etc/
│ ├── bashrc
│ └── controlDicts/
├── out.log
├── platforms/
│ └── linux64GccDPInt32Opt/
├── README.md
├── README.org
├── src/
│ ├── finiteVolume/
│ ├── lagrangian/
│ ├── thermophysicalModels/
│ ├── turbulenceModels/
│ └── sampling/
├── test/
├── tutorials/
│ ├── incompressible/
│ │ └── icoFoam/
│ │ └── cavity/
│ └── multiphase/
│ └── interFoam/
│ └── damBreak/
└── wmake
源码截图:
具体来看:
在 OpenFOAM 中,f:bin 目录存放了编译后生成的各种可执行文件和脚本,这些文件是通过编译 OpenFOAM 源代码得到的实际运行程序和工具。以下是对 f:bin 目录的详细展开介绍:
功能:存放了通过 OpenFOAM 的编译工具生成的可执行文件和脚本。这些文件包括各种求解器、网格生成工具、后处理工具以及其他实用程序。
内容示例:例如,icoFoam、blockMesh、paraFoam 等常用的 OpenFOAM 程序都会被放置在 f:bin 目录中。
使用方法:用户可以通过命令行进入 f:bin 目录,直接执行相应的程序来进行流体力学模拟、网格生成、后处理等操作。
COPYING:版权和许可证文件,通常为 GPL
COPYING 文件是 OpenFOAM 中的一个重要文件,用于声明 OpenFOAM 的版权所有者和软件许可证条款,通常是 GNU General Public License(GPL)或类似的开源许可证。
功能:包含了 OpenFOAM 的版权声明和详细的使用许可条款。用户和开发者在使用、分发和修改 OpenFOAM 代码时需要遵守这些条款。
内容:通常包括版权所有者的名称、授权许可的类型(如 GPL 版本号)、免责声明等法律要求的条款。
重要性:COPYING 文件确保了 OpenFOAM 作为开源软件的合法性和可用性,同时规范了用户和开发者对软件的合法使用和再分发。
doc:包含用户手册、程序员指南和其他文档
doc 目录是 OpenFOAM 中存放各种文档的地方,这些文档包括用户手册、程序员指南、技术文档和其他相关的使用说明。
功能:提供了关于 OpenFOAM 的详细文档和使用指南,帮助用户和开发者了解如何安装、配置和使用 OpenFOAM,以及如何开发自定义求解器和工具。
内容示例:包括但不限于安装指南、使用手册、求解器开发指南、网格生成器教程、后处理工具说明等。
使用方法:用户可以通过查阅 doc 目录中的文档,快速掌握 OpenFOAM 的各种功能和操作步骤,提高模拟的效率和精度。
etc:包含配置文件和环境设置脚本,如 bashrc 和控制字典文件
etc 目录存放了 OpenFOAM 中的各种配置文件和环境设置脚本,这些文件对于正确配置和运行 OpenFOAM 至关重要。
功能:包含了用于配置 OpenFOAM 运行环境的各种文件,如 bashrc 脚本、控制字典文件等。
内容示例:
bashrc:用于设置环境变量、路径和其他系统配置,确保 OpenFOAM 程序可以正确运行和链接。
控制字典文件:包含了用于控制 OpenFOAM 模拟过程中各种参数和选项的配置信息。
使用方法:在安装和配置 OpenFOAM 时,用户需要根据自己的操作系统和需求,正确设置和使用 etc 目录下的配置文件和脚本。
platforms:包含编译后生成的平台相关的二进制文件和库文件
platforms 目录存放了编译后生成的平台相关的二进制文件和库文件,这些文件根据不同的操作系统和硬件平台进行了优化和编译。
功能:存放了适用于不同操作系统(如 Linux、Windows)和硬件架构(如 x86、ARM)的 OpenFOAM 可执行文件和库文件。
内容示例:包括编译后的求解器、网格生成工具、后处理程序以及与特定硬件平台相关的库文件。
使用方法:用户在安装 OpenFOAM 后,可以根据自己的操作系统和硬件平台选择合适的 platforms 目录下的文件进行使用和配置。
README.md 和 README.org:项目的使用说明和详细说明文件
README.md 和 README.org 文件是 OpenFOAM 项目的使用说明和详细说明文件,提供了关于项目的概述、安装指南、基本用法和其他相关信息。
功能:作为开发者和用户的入门指南,帮助理解和使用 OpenFOAM 的基本功能和特性。
内容:通常包括项目的背景介绍、安装要求、配置步骤、使用示例、常见问题解答(FAQ)等。
重要性:README 文件是用户和开发者了解和使用 OpenFOAM 的第一手资料,对于新手入门和问题解决具有重要参考价值。
test:用于测试 OpenFOAM 功能和性能的测试案例和脚本
test 目录包含了用于测试 OpenFOAM 功能和性能的测试案例和脚本,这些测试用例能够验证 OpenFOAM 各个功能模块的正确性和性能指标。
功能:提供了自动化测试框架和测试用例,用于评估和验证 OpenFOAM 在不同场景下的稳定性和性能表现。
内容示例:包括单元测试、性能测试、集成测试等,覆盖了求解器、网格生成、后处理和其他关键功能的测试场景。
使用方法:开发者和贡献者可以运行 test 目录下的测试脚本,确保其修改和新增功能不会影响到现有功能的正确性和性能。
wmake:OpenFOAM 的编译工具,用于编译和链接源代码
wmake 是 OpenFOAM 中的一个重要工具,用于编译和链接源代码,生成各种求解器、工具和库文件。
功能:提供了自动化的编译和构建系统,支持多种编译选项和优化设置。
特点:基于 Makefile 的自动化编译系统,能够处理复杂的依赖关系和源代码文件结构。
使用方法:开发者通过运行 wmake 命令,可以根据指定的编译选项和配置
参考
https://blog.csdn.net/weixin_49181094/article/details/107143700
https://marinecfd.xyz/post/openfoam-templated-turbulence-modeling-framework-part-2/
https://developer.moduyun.com/article/577f3c24-7df0-11ee-b225-6c92bf60bba4.html
http://dyfluid.com/cnn.html#id7
https://zhuanlan.zhihu.com/p/455164468
http://dyfluid.com/install.html