ofsp2026 06_tensor
Created time
Mar 28, 2026 05:17 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 06_tensor
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:12 AM
Important
访问 https://aerosand.cc 以获取最近更新。
0. 前言
上一篇基于 Vector 类讨论了一些代码细节,本文讨论 Tensor 类。
本文主要讨论
讨论 Tensor 类的部分代码实现
理解多类复杂库的编译和链接
编译运行 tensor 项目
1. Tensor 类
终端输入命令,本地查找
终端输入命令,打开该类的文件夹
该类的文件结构如下
查看
Tensor/Tensor.H,可以看到该类的实现细节。这里不再逐条阅读。我们还可以通过 API 或者终端查找阅读相关的类
dimensionedTensor
tensorField
Warning
暂不深究代码细节,大概了解成员函数的用法即可。
2. OFextension 插件
十分推荐在 vscode 中安装社区插件
OFextension。2.1. 配置插件
- 点击 vscode 左下角小齿轮,打开
settings
- 搜索栏搜索
ofextension
- 在
Ofextension: OFpath中设置正确的 OpenFOAM 路径
- 使用 vscode 打开用户的开发应用,使用
F1输入ofInit初始化配置
2.2. 插件使用
在项目开发中,例如本文应用,在主源码中输入相关对象,vscode 会自动弹出可选的方法(成员函数)。
而且可以在主源码中选中头文件、类等,右键使用
Go to Definition ,Go to Declaration 等,直接跳转查看源代码。非常推荐此插件,十分方便。注意避免在 OpenFOAM 源文件夹下初始化。
Warning
注意有时候跳转的源代码并不是正确指向,要注意分辨。
3. 项目构建
终端输入命令,建立本文项目
继续使用终端命令或者使用 vscode 界面创建其他文件,最终文件结构如下
注意,开发库的文件结构与前文稍有不同。我们在前文已经可以注意到 OpenFOAM 库下一般有多个子库/类。用户的开发库里同样可能也会由好几个类构成,开发库拥有自己的 Make 文件,用于管理多个类,比如这里 Aerosand 库有
class1 , class2 和 class3 三个类。4. 开发库
4.1. class1
对于第一个类,我们依然使用之前的代码。
代码
class1.H 为代码
class1.C 为4.2. class2
对于第二个类,我们尝试通过继承来创建一个新类。
代码
class2.H 为代码
class2.C 为Tip
注意声明和定义中使用的 scalar 和 vector 都属于 Foam 命名空间,所以需要使用该命名空间。
4.3. class3
对于第三个类,我们写一些简单的内容。
代码
class3.H 为代码
class3.C 为4.4. 库 Make
库
Make/files 为本开发库没有其他依赖,库
Make/options 置空即可。4.5. 库编译
终端输入命令,进行库的编译
5. 主项目
5.1. 主源码
代码
ofsp_06_tensor.C 为5.2. 项目 Make
项目
Make/files 为项目
Make/options 为同样的,
$FOAM_SRC/OpenFOAM 库已经自动依赖,其中类的使用均无需用户再次链接。6. 编译运行
终端输入命令,编译运行该项目
运行结果如下
7. 小结
本文完成讨论
讨论 Tensor 类的部分代码实现
理解多类复杂库的编译和链接
编译运行 tensor 项目
支持我们
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。

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