11_dictionary
Important
访问 https://aerosand.cn 以获取最近更新。
0. 前言
前面的讨论让我们了解了 OpenFOAM 写入写出和字典的本质。下面,我们看一看 OpenFOAM 为我们提供的写入写出方法。
OpenFOAM 的应用一般需要从 case 中读取字典,向 case 中输出计算结果等等。
OpenFOAM 是怎么实现从文件夹读取和写入的呢?OpenFOAM 的读取和写入更加高级,按关键词进行索引查找的方法直接封装在了相关的类中,直接使用方法即可。我们暂时不用深究到实现的代码层面。
本文主要讨论
- 了解 OpenFOAM 的不同数据格式的写入写出
- 了解 OpenFOAM 字典类提供的方法
- 编译运行 dictionary 项目
1. 项目准备
终端输入命令,建立本文项目
ofsp
foamNewApp ofsp_11_dictionary
code ofsp_11_dictionary终端输入命令,为项目准备测试算例
cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity debug_case终端输入命令,测试初始求解器
wmake
ofsp_11_dictionary -case debug_case终端输出如下,
Create time
ExecutionTime = 0 s ClockTime = 0 s
End上面的输出信息即说明初始求解器没有问题,可以在此基础上进行开发。
2. 说明文件
作为一个较为完整的 OpenFOAM 项目,我们为其提供说明文件
## About
这是一个用来理解OpenFOAM字典的项目。
## Bio
- Aerosand @ Aerosand
## Caution
需要使用 OpenFOAM v2406 及更新版本。
## Deploy
准备好环境和所有的文件。
在根目录下执行终端命令
清理并重新编译应用
1. wclean
2. wmake
清理并重新计算测试算例
1. ./caseclean
2. ./caserun
## Event
@ 202509010
- 增加清理脚本 3. 脚本文件
脚本和之前讨论的项目类似,修改脚本内的求解器名称即可。
脚本 caserun 主要是负责应用编译成功后,调试算例的运行,暂时写入如下内容
| |
脚本 caseclean 主要是负责清理应用到到编译前状态,如果应用要修改,那么测试算例也要还原到运行前的状态,所以暂时写入如下内容
| |
终端输入命令,给脚本权限
chmod +x caserun caseclean4. 文件结构
文件结构如下
.
├── caseclean
├── caserun
├── debug_case
│ ├── 0
│ │ ├── p
│ │ └── U
│ ├── constant
│ │ └── transportProperties
│ └── system
│ ├── blockMeshDict
│ ├── controlDict
│ ├── decomposeParDict
│ ├── fvSchemes
│ ├── fvSolution
│ └── PDRblockMeshDict
├── Make
│ ├── files
│ └── options
├── ofsp_11_dictionary.C
└── README.md5. 主源码
主源码 ofsp_11_dictionary.C 内容如下
| |
6. 提供字典
提供字典文件 debug_case/constant/customProperties,该字典没有读取写入操作,所以只需要写上正确的文件头,内容留空处理。
| |
字典文件 debug_case/constant/myProperties ,内容如下
| |
7. 编译运行
终端输入命令,编译运行
wclean
wmake
./caseclean
./caserun终端输出内容如下
Create time
Create mesh for time = 0
Reading myProperties
application: icoFoam
writeFormat: ascii
deltaT: 0.01
alpha: alpha [0 0 0 0 0 0 0] 0.2
beta: beta [0 0 0 0 0 0 0] 0.5
purgeWrite: 1
point: 3(0 1 2)
source:
2
(
U1 (0 0 0)
U2 (1 0 0)
)
myVec: (0 0 1)
ExecutionTime = 0 s ClockTime = 0 s
End另外算例文件夹下有了一个新建文件夹 debug_case/processing/,路径下的 myOutPut.dat 内容如下
| |
8. 小结
本项目讨论了 OpenFOAM 设计的文件流写入写出方法,以后在实践中会不断地使用字典以及字典相关的方法。
本文完成讨论
- 了解 OpenFOAM 的不同数据格式的写入写出
- 了解 OpenFOAM 字典类提供的方法
- 编译运行 dictionary 项目
支持我们
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论、转发和赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。
