ofsp2024-02 主函数参数列表类初步

ofsp2024-02 主函数参数列表类初步
Created time
Jul 10, 2025 11:01 AM
type
status
date
slug
summary
tags
category
icon
password
Last edited time
Jul 10, 2025 11:45 AM
😀
前言: Preface:
 
参考:
感谢原作者们的无私引路和宝贵工作。
前置: OpenFOAM开发编程基础01 输入输出 | 𝓐𝓮𝓻𝓸𝓼𝓪𝓷𝓭 (aerosand.cn)
OpenFOAM 初学者很难不注意到求解器总是有几个固定的头文件,包括 setRootCase.HcreateTime.HcreateMesh.H 。网络上找到的代码解析常常只有一句注释介绍功能,也许无法消除困惑感。
本文同样从 C++ 开始,简单介绍主函数参数,在此基础上讨论 setRootCase.H 头文件。
建立本文的项目文件夹并进入

C++ 实现

主函数参数

我们在初学 C++ 的时候,主函数的参数列表一般留空,即有如下形式
当进一步深入 C++ 开发时,了解到主函数的更一般写法为
  • argcargument count 的缩写,保存程序运行时传递给主函数的参数个数
  • argvargument vector 的缩写,保存程序运行时传递给主函数的具体参数的字符型指针,每个指针都指向一个具体的参数。
    • argv[0] 指向程序运行时的全路径名称
    • argv[1] 指向程序运行时命令行中执行程序名后第一个字符串
    • argv[2] 指向程序运行时命令行中执行程序名后第二个字符串
    • 其他以此类推

项目实现

新建项目 02_arg/02_01_args/
主源码 src/main.cpp 如下所示
终端直接编译运行
运行结果如下
如果运行时增加参数,例如
运行结果如下
基于主函数参数列表的了解,下面讨论 OpenFOAM 中的主函数参数等内容。

OpenFOAM 实现

应用准备

文件结构如下
以后非特别情况不再赘述文件结构。

脚本和说明

新建脚本
脚本内容和说明文档略。

setRootCase.H

先看一下主源码中的头文件 setRootCase.H
代码具体为
代码讨论
  • 该 H 文件检查了该应用的参数是否正确
  • 构造参数列表的对象 args (所以此 H 文件需要放在所有的参数代码等后面)
  • 如果参数列表检查不通过,则报错退出
argList 类是一个非常基础的类,具有很多的成员数据和成员方法。我们大概挑几处代码作为切入点简单了解一下 argList 类。
打开 argList.H ,内容如下
方法的实现较为复杂,对于现阶段来说,基础类没有必要去深入讨论代码的实现部分,目前只需要做到心里有数、看到不那么陌生即可。
在上一篇文章的讨论中,也可以深入看一下 OpenFOAM 的 IOdictionary 类,终端使用命 find $FOAM_SRC -iname IOdictionary.H,可以找到对应的构造函数原型。也可以查找到 IOobject.H 中的构造函数原型。

主源码

帮助信息

编译后查看帮助信息
终端输出
可以看到我们自定义的帮助信息。

应用参数

应用参数(arguments)在执行应用命令时是强制需要的,下一节的应用选项(option)是可选的。
给主源码增加应用参数如下
终端运行是必须要提供相应类型的参数
编译后运行
结果为

应用选项

应用选项在运行时可写可不写。
主源码如下
编译运行应用
运行结果为
如果运行应用如下
运行结果为
应用选项 -dict 也有默认值,可以尝试省略并运行应用。
通过使用不同的应用选项,看到各行源代码的效果。

小结

从 C++ 基础出发, 简单讨论了主函数运行时的帮助、参数和选项。虽然上面的开发都是仅停留在表面做做样子,但目的也是使读者对 OpenFOAM 中运行应用的命令行方法有了一些了解,以后也可以在此基础上深入。更深入的开发见后续讨论。
本文基本搞明白了 OpenFOAM 求解器中必备的 setRootCase.H 到底是什么,那么 createTime.H 头文件到底是什么呢?
 
 
 
💡
欢迎留言讨论,反馈建议和意见,赞助打赏。 Feel free to leave comments, feedback, suggestions, opinions, and donations.
Alipay
Alipay
 
 
上一篇
ofsp2024-03 时间类初步
下一篇
ofsp2024-01 输入输出
Loading...