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.HcreateTime.HcreateMesh.H 。网络上找到的代码解析常常只有一句注释介绍功能,也许无法消除困惑感。该系列将分别讨论。
前文讨论了 C++ 中的命令行参数,本文将过渡到对 OpenFOAM 中命令行参数的讨论。在此之前,我们先看一下 setRootCase.H 文件。
本文主要讨论
理解 setRootCase.H 头文件
了解 argList 类
开发用户自定义命令行参数
编译运行 commandLine 项目

1. 项目准备

终端输入命令,建立项目
终端输入命令,测试初始求解器
测试初始求解器没有问题,可以进一步开发。此步骤以后不再赘述。
终端输入命令,新建脚本和说明,并给脚本权限
脚本和说明参考前文讨论。除非有特别情况,不再赘述脚本和说明。
终端输入命令,查看文件结构如下
除非有特别情况,不再赘述简单的文件结构。

2. setRootCase.H

我们可以通过终端查找该文件
使用 vscode 可以直接点击终端输出的文件路径打开该文件。
在 vscode 中可以通过 OFextension 直接跳转打开该文件。
为了方便理解,我们查阅一下 OpenFOAM 2.0x 版本的代码,
代码如下
现代版本的代码具体如下
很多求解器中也使用功能增强后的 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
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。
Alipay
Alipay
 
Copyright @ 2026 Aerosand
  • OpenFOAM 开发代码 :GPL v3
 
 
Loading...