加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2017-10-17 21:05:37)
标签:

转载

分类: OpenFOAM
在本站博文“使用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压缩
writeCompression uncompressed;

//时间文件夹格式,可为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:即使改变了参数文件的值,也不会反映到当前运行的程序
runTimeModifiable yes;

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

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

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

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有