找回密码
 注册
查看: 3665|回复: 0

[转载]深入解析OpenFOAM时间控制参数字典文件controlDict

[复制链接]
发表于 2009-5-8 04:37:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在本站博文“使用OpenFOAM的基本流程”已经对controlDict中的一些基本参数字典关键字进行了简单的讨论。鉴于controlDict的在OpenFOAM计算的重要性,本文对参数字典文件进行详细探讨。现在以动态步长的icoFoam中算例为例进行说明。至于如何让程序能够自动调节步长,参看本站博文“如何使得OpenFOAM的solver自动调节时间步长”。

FoamFile
{
   version    2.0;
   format     ascii;
   class      dictionary;
   object     controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * //
//计算该算例的应用程序名字。
application    icoFoam

//控制当前计算的开始时间。可为以下三个值
(1)firstTime:时间文件夹中时间最早的时间开始
(2)startTime:从startTime指定的时间开始计算
(3)latestTime:从时间文件夹中,时间最晚的时间开始计算。
startFrom      startTime;

//当startFrom后指定的为startTime的时候,startTime为指定的计算时间。
startTime      14;

//控制程序什么时候停止计算。可以为以下4个值
(1)endTime:当时间到达endTime指定的时间停止计算。
(2)writeNow:计算一步,并输出结果,停止计算。
(3)noWriteNow:计算一步,不输出结果,停止计算。
(4)nextWrite:当到达指定的输出时间(由writeControl控制),输出结果并停止计算。
stopAt         endTime;

//当指定停止时间为endTime时,指定的结束时间。
endTime         30;

//计算的时间步长
deltaT         0.001;

//输出控制,可以5个值
(1)timeStep:每writeInterval个时间步长写一次。
(2)runTime:每writeInterval秒物理时间写一次
(3)adjustableRunTime:每writeInterval秒物理时间写一次,但是对于可调节步长的话,会自动调节最后一次的时间步长,以便准确时间输出。
(4)cpuTime:每writeInteral秒cpu时间写一次。
(5)clockTime:每writeInterval秒实际时间写一次。
writeControl   runTime;

//和上面的writeControl的值联合使用。意义随该值变化。
writeInterval  0.2;

//写过程是否覆盖,如果0则不覆盖,大于0为覆盖,比如:2,case文件家中只有输出文件  比如6 和7,//当算到8时候,会覆盖6,9会覆盖8,以此类推
purgeWrite     0;

//写文件的格式,值可谓2个
(1)ascii:按照ascii格式输出,以便我们可以直接看结果
(2)binary:按照二进制格式输出,以便节省空间
writeFormat    ascii;

//输出数据精度
writePrecision 6;

//是否对输出文件进行压缩,可谓2个值
(1)uncompressed:不压缩
(2)compressed:运用gzip压缩
writeCompressionuncompressed;

//时间文件夹格式,可为3个值
(1)fixed:m.dddddd,其中“d”的个数由timePrecision控制
(2)scientific:m.ddddde±xx,“d”的个数有timePrecision控制
(3)general:如果指数小于-4或者大于等于timePrecision指定的值,则采用scientific方法,其他采用普通小数形式
timeFormat     general;

//和timeFormat联合使用,具体意义参看timeFormat的说明。
timePrecision  6;

//在运行的时候是否允许改变参数。可为2值
(1)yes:允许,参数值改变立即反映的当前运行程序
(2)no:即使改变了参数文件的值,也不会反映到当前运行的程序
runTimeModifiableyes;

//是否允许自动调节步长(只适应于那种可自动调节步长的solver),不能自动调节步长的程序,yes也没有用,如何使程序可以自动调节步长,参看本站博文“如何使得OpenFOAM的solver自动调节时间步长
(1)yes:允许,程序会根据maxCo自动调节步长。
(2)no:不允许,程序采用由deltaT指定的定步长
adjustTimeStepno;

//最大允许的Courant数,如果程序的Courant大于指定值,则自动缩小时间不成,调节因子1.2
maxCo         0.5;

//最大允许的时间步长。
maxDeltaT     1;

转自OpenFOAM研究:http://blog.sina.com.cn/openfoamresearch

[ 本帖最后由 su_junwei 于 2009-5-8 04:39 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表