找回密码
 注册
查看: 9736|回复: 11

[原创]fluent批处理,自动计算多个case文件

[复制链接]
发表于 2008-5-6 10:45:56 | 显示全部楼层 |阅读模式

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

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

x
[watermark]Fluent批量计算
对于工程应用来说,计算精度要求不高,但是计算的case比较多,尤其模型优化工作,你可能有几十个case要算。一个case只需要计算个把钟头,对于周末的大好时光来说,两天时间只能算一个,实在是浪费时间。经过一番研究,找到了解决方法。基本原理是使用fluent的 journal文件,你要写一个journal文件,命名为1.journal
在fluent 的file/write/start journal,选择文件名1.journal后,fluent就还是记录你的操作到1.jouranl中,你操作完成后,file/write/stop journal,用记事本打开看看就知道了。
来一个我写好的journal文件,其作用是读取已有的case and data,计算,保存计算结果。
内容如下:
(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" "lzzmn.cas")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-set-integer-entry "Iterate*Table1*Frame2(Iteration)*Table2(Iteration)*IntegerEntry1(Number of Iterations)" 2000)
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-activate-item "Iterate*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "MenuBar*WriteSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" "lzzmn.cas ")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Warning*OK")
为方便使用,注释集中写在下面:
打开 read case and data对话框;
选择文件“lzzmn.cas”,这个文件改成你的文件;
点击选择文件对话框的确定;
打开iterate 对话框;
设置number of iterations 为2000,在你的case中没有对iterate apply过,这里默认的是1,因此在这个文件中我又设置了一次计算步数;
激活iterate 对话框;
点击iterate,开始运算,这就开始工作啦,直到运算结束(满足你设置的残差要求或者达到了2000步);
打开保存case and data对话框;
选择保存的文件名“lzzmn.cas”,换成你自己的;
点击确定;
由于前后两次使用的文件名一致,会跳出一个对话框警告是否覆盖,点击ok;如果你两次的对话框选择的文件名不一致,就不会警告你要不要覆盖,那么这一行就没有了;至此完成了一个case的读取,计算,保存;把上述过程再重复一次,其中读取、保存的文件换成你的第二个case,那么就进行第二个case的读取计算保存了。你有n个,那么copy n次以上内容,更改读取、保存的文件名字在同一个journal文件中,比如文件名为1.journal。
简单方法:
如果你case都是2维的,或者都是3维的,那就简单了。首先,你把所有的case都设置好,并进行简单的计算,以确保你的case是收敛的。注意在iterate对话框中 number of iterations中输入合理的数值后记得Apply一下,否则这个数值不能记录到case中,那么以后你读入的case文件只计算一步,保存好case and data文件。
打开对应版本的fluent,可以是单机的,可以是联网的;
File/read/journal,选择你journal文件即可。
命令行:
如果你的case会有维数的变化,那么你写一个bat文件即可。
用记事本写如下内容,命名为1.bat, linux可以写shell脚本,对后缀没有要求:
fluent 2d  -g  -i g  -i 11.journal
fluent 3d  -g  -i g  -i 12.journal
fluent 2ddp  -g  -i g  -i 13.journal
fluent 3ddp  -g  -i g  -i 14.journal
上述是打开了四个不同的fluent,2d 2ddp 3d 3ddp,而journal文件11 12 13 14分别对应读取二维 三维的case data文件。
只要你的case 收敛,你的case文件足够多,你就可以让你的电脑周末两天一点也没的休息了(心黑点了吧?)。
[/watermark]
发表于 2008-5-6 11:04:08 | 显示全部楼层

[原创]fluent批处理,自动计算多个case文件

受益了,楼主
发表于 2008-5-6 14:28:41 | 显示全部楼层

[原创]fluent批处理,自动计算多个case文件

楼主写的不错
发表于 2008-5-7 00:35:23 | 显示全部楼层

[原创]fluent批处理,自动计算多个case文件

相当好,把我的也洗出来的
发表于 2008-5-7 00:56:17 | 显示全部楼层

[原创]fluent批处理,自动计算多个case文件

很好,虽是初学者,体验不是太深,但肯定是个好方法!
发表于 2008-5-7 02:48:36 | 显示全部楼层

[原创]fluent批处理,自动计算多个case文件

一直在想fluent怎么自动计算多个case文件,谢谢楼主了。
发表于 2011-3-11 09:19:51 | 显示全部楼层

回复 1# lzzmn 的帖子

很厉害,最近正好要用到这个方法,非常感谢!!!
发表于 2011-3-11 09:48:05 | 显示全部楼层
我想学编程,感觉有用
发表于 2013-2-4 00:37:36 | 显示全部楼层

局限性

这个还是有局限性,因为这是要图像输出的。如果我从本地上传计算文件到linux的计算集群去计算,这个就失效了。我一般使用TUI里面的命令来写journal file,而且根据自己的经验做成一个matlab的程序。我连copy都懒得做了。每次要算的时候,比如一个翼型,10个角度,运行一下matlab程序,可以自动设置为预订的湍流模型,迭代步数,计算格式,求解器类型,湍流模型,以及后处理用的压强,摩阻,升阻力矩系数。过十分钟等到都算好了,在用matlab里面的画图的功能把所有导出的结果都画出来。
发表于 2013-7-17 05:32:17 | 显示全部楼层

回复 9# sliu2011 的帖子

9楼很牛逼啊。能请问一下你是怎么一个思路吗,matlab能直接调用fluent,然后利用journal文件设置计算参数并导出计算结果?再将结果导入matlab里绘图?谢谢谢谢
发表于 2014-4-26 15:02:31 | 显示全部楼层

回复 9# sliu2011 的帖子

能否给一个你你自己使用的程序,我想研究一下,因为按照帖子的办法我的实现不了,我的模型中有interface面,在批处理第二个的算例的时候,出现错误。别人也建议我使用matlab batch。
邮箱:sdailiuyan@163.com。
谢谢!
发表于 2014-4-26 15:08:05 | 显示全部楼层

回复 9# sliu2011 的帖子

请教,楼主在批处理的时候是已经设置过的cas还是mesh文件?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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