[关闭]
@daidezhi 2016-05-26T22:23:31.000000Z 字数 2123 阅读 6073

OpenFOAM中 controlDict 字典文件解析

CFD C++ OpenFOAM


1. 实例

下面是controlDict 文件的一个典型例子,其内容(略去文件头部注释):

  1. //文件说明
  2. FoamFile
  3. {
  4. version 2.0; //版本号
  5. format ascii; //文本格式
  6. class dictionary; //类型为字典文件
  7. location "system"; //所在目录
  8. object controlDict; //对象名
  9. }
  10. application interFoam; //求解器名称
  11. //时间控制
  12. startFrom startTime; //设置计算开始时间为startTime
  13. startTime 0; //定义startTime
  14. stopAt endTime; //设置计算结束时间为endTime
  15. endTime 3; //定义endTime
  16. deltaT 0.005; //设置时间步长
  17. //计算结果输出控制
  18. writeControl adjustableRunTime; //按照计算时间控制输出
  19. writeInterval 0.1; //输出时间间隔,单位秒[s],与writeControl配合使用
  20. purgeWrite 0; //输出是否覆盖先前记录,0为不覆盖,1可用于稳态计算,默认0
  21. writeFormat ascii; //计算结果输出文件格式指定
  22. writePrecision 10; //控制输出有效数字位数,与writeFormat配合使用,默认6
  23. writeCompression uncompressed; //是否压缩
  24. timeFormat general; //时间目录名称指定
  25. timePrecision 6; //时间目录名称有效数字位数,与timeFormat配合使用,默认6
  26. //时间步长自适应控制
  27. adjustTimeStep yes; //是否开启时间步长自适应
  28. maxCo 0.5; //最大库郎数
  29. maxDeltaT 1.0; //最大时间步长
  30. //字典读取控制
  31. runTimeModifiable yes; //每个时间步是否读取所修改的字典文件设定

2. controlDict 文件分析

system目录下的controlDict文件用来设置 时间和输入输出控制,包括 时间控制计算结果输出控制时间步长自适应控制字典读取控制运行时加载库或者函数控制 五个部分。


3. 时间控制

时间控制部分关键字startFrom取值如下表所示:

startFrom 说明
firstTime 所有时间目录中最早的时间步
latestTime 所有时间目录中最近的时间步
startTime 用户指定开始时间,需指定startTime的值

时间控制部分关键字stopAt取值如下表所示:

stopAt 说明
endTime 用户指定结束时间,需指定endTime的值
writeNow 当前时间步完成时结束计算并且输出计算结果
noWriteNow 当前时间步完成时结束计算但不输出计算结果
nextWrite 下一个时间步完成时结束计算并且输出计算结果

4. 计算结果输出控制

计算结果输出控制部分关键字writeControl取值如下表所示:

writeControl 说明
timeStep 按照时间步输出,间隔由关键字writeInterval指定
runTime 按照计算时间输出,间隔由关键字writeInterval指定
adjustableRunTime 时间自适应下按照计算时间输出,间隔由关键字writeInterval指定
cpuTime 按照CPU时间输出,间隔由关键字writeInterval指定
clockTime 按照挂钟时间(真实时间)输出,间隔由关键字writeInterval指定

计算结果输出控制部分关键字writeFormat取值如下表所示:

writeFormat 说明
ascii 文本格式,由writePrecision控制有效数字位数
binary 二进制格式,直接将内存内容写入文件,能够减小文件存储空间,提高读写效率

计算结果输出控制部分关键字writeCompression取值如下表所示:

writeCompression 说明
uncompressed 不压缩
compressed gzip 压缩格式

计算结果输出控制部分关键字timeFormat取值如下表所示:

timeFormat 说明
fixed ±m.dddddd,其中dtimePrecision来控制
scientific ±m.dddddd±xx,其中dtimePrecision来控制
general 使用scientific格式,默认小数点后有4位有效位数,也可通过timePrecision来调节

5. 时间步长自适应控制

自适应时间步长需要指定自适应开关adjustTimeStep,最大库朗数maxCo时间步长最大值maxDeltaT的数值。


6. 字典读取控制

在计算过程当中,一些字典文件可能会被修改,这时需要打开读取开关runTimeModifiable,以让求解器更新一些参数。


7. 运行时加载库或者函数控制

设置运行时需要加载的库或函数如下所示:

  1. libs libUser1.so; //库列表,库文件位于$LD_LIBRARY_PATH
  2. functions probes; //函数列表

感谢您的阅读,欢迎讨论和批评指正。

作者:戴得志

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注