ofsp2026 04_basicClass

Created time
Mar 28, 2026 05:14 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 04_basicClass
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:12 AM
📌
Important
访问 https://aerosand.cc 以获取最近更新。

0. 前言

前面我们已经了解了 C++ 原生实现、make 实现以及 OpenFOAM 的 wmake 实现。在正式进入到 OpenFOAM 实现之前,我们有必要稍微了解一点 OpenFOAM 中常见的类,以方便使用。
我们可以通过官方 API https://api.openfoam.com/2506/ 进行查询。
📌
Tip
改变上面网址的末尾版本号,可以打开对应版本的 API。
本文主要讨论
查阅 OpenFOAM API
认识一些常见的基础类

1. Switch

可以通过 API 网站直接搜索 Switch 关键词找到 Switch Class Reference 页面,该页面提供了 Switch 类的相关内容,包括对应的 Source files 即 Switch.HSwitch.C
也可以通过终端查找打开阅读源码。
终端输入命令,查找源码位置
终端输出对应版本下的查找结果
基于上一篇的讨论,我们复制正确的路径,可以通过 vscode 本地阅读源码
Tip
终端里的复制粘贴请使用 ctrl + shift + c/v
无论如何,Switch.H 部分代码如下(点击代码块名称可以跳转源码)
根据描述 Description 可以知道 Switch 是对 bool 类型的封装,起到和 bool 类型类似的判断功能。
更深入的代码定义,我们暂不深究。

2. label

同样可以在网上或是本地找到 label 类的源码。
根据源码描述,label 类型为 int32_t 或 int64_t,具体取决于预处理器宏 WM_LABEL_SIZE 的定义。
简单可以理解 label 实际上是对 int 类型的封装。

3. scalar

根据源码描述,scalar 类型可以理解为浮点类型的封装,根据不同使用方式等同于 float 或者 double。

4. vector

可见,vector 类型是由 scalar 构成的向量。该类也定义了向量的数学运算方法。
📌
Note
由其他数据类型构成的向量是什么呢?

5. tensor

可见,tensor 类型是由 scalar 构成的张量。该类也定义了张量的数学运算方法。
📌
Note
由其他数据类型构成的张量是什么呢?

6. dimensionedScalar/Vector/Tensor

以 dimensionedScalar 为例,API 页面 https://api.openfoam.com/2506/dimensionedScalar_8H_source.html
可见,这些是具有 OpenFOAM 单位系统的包含对应计算方法的标量、向量、张量。

7. scalar/vector/tensorField

以 scalarField 为例,API 页面 https://api.openfoam.com/2506/scalarField_8H.html
它们本质上就是 scalar/vector/tensor 类型的包含了对应计算方法的列表值,也就是“场”的数值存储。

8. dimensionSet

该类规定了基础类型的单位系统,可以在代数计算中进行严格的单位检查。
通过 API 页面可以看到该类直接或者间接包含的文件。可以在源码定义中提供了很多实用的单位组合。
这个预设单位组合会经常出现在以后的编程实践中。

9. tmp

该类是 OpenFOAM 实现的、常见用于自动管理临时对象生命周期的智能指针模板类。主要目的是优化性能,避免不必要的大型数据(比如巨大数据量的物理场)拷贝。

10. IOobject

简单来说,该类提供了所有需要在磁盘(作为文件)和内存(作为对象)之间进行读写操作的对象的完整描述和接口。
在 CFD 模拟中,有成千上万的变量(场、边界条件、模型参数等)需要从字典文件中读取,或者将计算结果写入磁盘。该类通过将所有这些杂事封装到一个统一的类中来解决输入输出问题。
以后我们将在实践中不断使用该类。

11. 小结

📌
Warning
暂时不用深究这些类定义的编程实现细节,这些细节并不是本系列的重点。过度深挖细节会给初学者带来巨大的困扰,打乱学习进度。
本文完成讨论
查阅 OpenFOAM API
认识一些常见的基础类
 

支持我们

📌
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。
Alipay
Alipay
 
Copyright @ 2026 Aerosand
  • OpenFOAM 开发代码 :GPL v3
 
 
Loading...