ofsp2026 13_commandLine
Created time
Mar 28, 2026 08:24 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 13_commandLine
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:14 AM
Important
访问 https://aerosand.cc 以获取最近更新。
0. 前言
新同学很难不注意到求解器总是有几个固定的头文件,包括
setRootCase.H ,createTime.H 和 createMesh.H 。网络上找到的代码解析常常只有一句注释介绍功能,也许无法消除困惑感。该系列将分别讨论。前文讨论了 C++ 中的命令行参数,本文将过渡到对 OpenFOAM 中命令行参数的讨论。在此之前,我们先看一下
setRootCase.H 文件。本文主要讨论
理解 setRootCase.H 头文件
了解 argList 类
开发用户自定义命令行参数
编译运行 commandLine 项目
1. 项目准备
终端输入命令,建立项目
终端输入命令,测试初始求解器
测试初始求解器没有问题,可以进一步开发。此步骤以后不再赘述。
终端输入命令,新建脚本和说明,并给脚本权限
脚本和说明参考前文讨论。除非有特别情况,不再赘述脚本和说明。
终端输入命令,查看文件结构如下
除非有特别情况,不再赘述简单的文件结构。
2. setRootCase.H
我们可以通过终端查找该文件
使用 vscode 可以直接点击终端输出的文件路径打开该文件。
在 vscode 中可以通过 OFextension 直接跳转打开该文件。
为了方便理解,我们查阅一下 OpenFOAM 2.0x 版本的代码,
Github 仓库文件链接如下 https://github.com/OpenFOAM/OpenFOAM-2.0.x/blob/master/src/OpenFOAM/include/setRootCase.H
代码如下
现代版本的代码具体如下
很多求解器中也使用功能增强后的
setRootCaseLists.H ,其代码如下该头文件既保持了基础功能的简洁性,又为需要使用这些高级功能的求解器(如后处理工具)提供了灵活的扩展能力。
比如,可以在终端中使用求解器和添加的命令行选项,如下
可以看到终端给出了所有的调试/优化开关。
读者可以自行探索阅读代码中提供的命令行选项。
3. argList类
类
Foam::argList是 OpenFOAM 中的基础类,具有很多的成员数据和成员方法。我们大概挑几处代码作为切入点简单了解一下 argList 类。我们可以通过终端查找该文件
打开该类的声明
argList.H,内容如下关于成员函数
checkRootCase()的实现,需要去看同目录下的类的定义,即 argList.C 文件,摘取部分内容如下讨论到此,读者应该了解并明白
setRootCase.H到底是检查什么目录了。Tip
对于现阶段来说,读者不宜深挖代码。只要做到心里有数,可以理解且不陌生排斥即可。
更深入的代码讨论参见
ofsc(openfoam sharing coding) 系列。4. 帮助信息
我们可以使用命令行参数实现一些功能。
在主函数上修改
终端输入命令,编译并查看帮助信息
终端输出如下
可以看到其中有自定义的帮助信息
5. 强制参数
强制参数在项目运行时必须输入,否则会有错误提醒。
在主函数上修改
重新编译此项目。
终端输入命令,运行该项目
终端输出如下
可以想到,当我们拿到这些命令行参数,可以用来参与到项目的计算中。
6. 应用选项
应用选项在项目运行时可写可不写。
在主函数上修改
重新编译此项目。
为该项目提供自定义字典。不使用代码中设置的字典默认路径,创建字典
/debug_case/constant/myDic自定义字典如下
终端输入命令,运行该项目
终端输出如下
7. 其他命令行
求解器头文件中还常见
postProcess.H 。该头文件主要用于在求解器或实用程序中集成后处理功能。它的核心作用是允许用户在模拟运行期间或之后,计算并输出额外的派生场(如涡量、流函数、梯度等),而无需单独运行后处理工具。例如,可以在计算结束后,终端输入命令如下
这样可基于已保存的时间步计算涡量场,无需修改代码。
另外也可以在
controlDict 中增加 functions 模块,如这样可以使得求解器在每个写入时间步都会计算并输出涡量场。
另外,求解器头文件还常见
addCheckCaseOptions.H ,代码如下该头文件向求解器添加额外的标准命令行选项,主要用于检查算例设置的完整性而无需完整运行模拟。
例如,终端输入命令
这些命令使用户能够快速发现设置错误,避免在完整运行到中途才发现问题。
8. 小结
本文一步一步讨论了 OpenFOAM 中命令行参数可能有的功能。虽然本文项目只是简单演示,相信读者可以在此讨论基础之上,理解 OpenFOAM 中的命令行参数,并为以后的自开发提供一些想法。
本文主要讨论
理解 setRootCase.H 头文件
了解 argList 类
开发用户自定义命令行参数
编译运行 commandLine 项目
支持我们
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。

Copyright @ 2026 Aerosand
- 课程(文本、图片等):CC BY-NC-SA 4.0
- OpenFOAM 开发代码 :GPL v3
- 其他代码:MIT License
Loading...