@daidezhi
2016-05-27T06:23:31.000000Z
字数 2123
阅读 6934
CFD
C++
OpenFOAM
下面是controlDict
文件的一个典型例子,其内容(略去文件头部注释):
//文件说明
FoamFile
{
version 2.0; //版本号
format ascii; //文本格式
class dictionary; //类型为字典文件
location "system"; //所在目录
object controlDict; //对象名
}
application interFoam; //求解器名称
//时间控制
startFrom startTime; //设置计算开始时间为startTime
startTime 0; //定义startTime
stopAt endTime; //设置计算结束时间为endTime
endTime 3; //定义endTime
deltaT 0.005; //设置时间步长
//计算结果输出控制
writeControl adjustableRunTime; //按照计算时间控制输出
writeInterval 0.1; //输出时间间隔,单位秒[s],与writeControl配合使用
purgeWrite 0; //输出是否覆盖先前记录,0为不覆盖,1可用于稳态计算,默认0
writeFormat ascii; //计算结果输出文件格式指定
writePrecision 10; //控制输出有效数字位数,与writeFormat配合使用,默认6
writeCompression uncompressed; //是否压缩
timeFormat general; //时间目录名称指定
timePrecision 6; //时间目录名称有效数字位数,与timeFormat配合使用,默认6
//时间步长自适应控制
adjustTimeStep yes; //是否开启时间步长自适应
maxCo 0.5; //最大库郎数
maxDeltaT 1.0; //最大时间步长
//字典读取控制
runTimeModifiable yes; //每个时间步是否读取所修改的字典文件设定
system
目录下的controlDict
文件用来设置 时间和输入输出控制,包括 时间控制, 计算结果输出控制,时间步长自适应控制, 字典读取控制 和 运行时加载库或者函数控制 五个部分。
时间控制部分关键字startFrom
取值如下表所示:
startFrom | 说明 |
---|---|
firstTime |
所有时间目录中最早的时间步 |
latestTime |
所有时间目录中最近的时间步 |
startTime |
用户指定开始时间,需指定startTime 的值 |
时间控制部分关键字stopAt
取值如下表所示:
stopAt | 说明 |
---|---|
endTime |
用户指定结束时间,需指定endTime 的值 |
writeNow |
当前时间步完成时结束计算并且输出计算结果 |
noWriteNow |
当前时间步完成时结束计算但不输出计算结果 |
nextWrite |
下一个时间步完成时结束计算并且输出计算结果 |
计算结果输出控制部分关键字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 ,其中d 由timePrecision 来控制 |
scientific |
±m.dddddd±xx ,其中d 由timePrecision 来控制 |
general |
使用scientific 格式,默认小数点后有4 位有效位数,也可通过timePrecision 来调节 |
自适应时间步长需要指定自适应开关adjustTimeStep
,最大库朗数maxCo
时间步长最大值maxDeltaT
的数值。
在计算过程当中,一些字典文件可能会被修改,这时需要打开读取开关runTimeModifiable
,以让求解器更新一些参数。
设置运行时需要加载的库或函数如下所示:
libs libUser1.so; //库列表,库文件位于$LD_LIBRARY_PATH
functions probes; //函数列表
感谢您的阅读,欢迎讨论和批评指正。
作者:戴得志