我们在使用计算流体力学软件研究一个课题的时候,经常会计算很多不同的工况(例如,不同的流动马赫数或雷诺数、某个局部几何尺寸的不同取值,等等)。当工况的数量很多的时候,人工操作会令人非常厌烦,而且还容易出错。这时候,可以利用软件所提供的批处理功能来实现自动化。
举个例子,我们计算三维圆球绕流,算了6种不同的流动雷诺数(图1)。我们想把这6种工况的子午面速度分布导出成Tecplot数据文件,然后在Tecplot中绘图。
图1 6种不同工况的计算结果文件
最直接的办法是依次打开每一个case和data文件,在每一个case中建立一个surface(用来表示子午面),然后对每一个case导出子午面的数据。这里为了举例只算了6种工况,但是如果实际的工况数量很多,这样做会非常麻烦。
有没有更自动化的办法呢?答案是有的。我们可以编写一个小程序(图2),生成一个FLUENT的命令文件。(注:用百分号“%”标记的注释可以省去。)
clear fid=fopen('j1.jou','wt'); % 打开FLUENT的命令文件 listing=dir('d:\a\'); % 列出文件夹中的所有文件 for i=1:length(listing) % 依次检查每一个文件 if ~isempty(strfind(listing(i).name,'.cas')) % 如果文件名中含有".cas" fprintf(fid,'file r-c-d "d:\\a\\%s"\n',listing(i).name); % 让FLUENT读取这个文件 % 让FLUENT建立一个surface来表示子午面 fprintf(fid,'surface iso-surf x-coordinate surface1 () () (0)\n'); [pathstr, name, ext] = fileparts(listing(i).name); % 将文件名中的扩展名去掉 % 让 FLUENT输出子午面的速度场 fprintf(fid,'file export tecplot "d:\\a\\%s_tec.dat" (surface1) velocity-magnitude q\n',name); end end fclose(fid); % 关闭FLUENT的命令文件
图2 用MATLAB语言编写一个小程序
程序运行后生成的FLUENT命令文件如图3所示。可以看出,在这个文件里面已经写入了对6种工况的计算结果依次进行处理的命令。关于FLUENT文本命令系统,读者可以参阅FLUENT的User’s Guide中的“Text User Interface(TUI)”这一章。对于在图形界面(菜单栏、导航窗格)中的每个功能,文本命令系统中都有相应的命令。
图3 程序运行后生成的FLUENT命令文件
最后,我们运行FLUENT,在菜单栏选择[File]->[Read]->[Journal…],选取刚才生成的命令文件,然后FLUENT就会自动地依次处理6种工况的结果了(图4)。
图4 在FLUENT中执行命令文件的结果
当我们再次打开文件夹的时候,里面已经对每种工况都生成了Tecplot数据文件(图5)。
图5 生成的Tecplot数据文件
图6和图7分别给出了雷诺数为100和300的结果。可以看出Re=100的时候,尾迹中的速度分布是对称的;而Re=300的时候,则变成不对称的。这是层流流动失稳的结果。实际上,根据[1]的计算结果,存在两个临界雷诺数,第一临界雷诺数约为212,第二临界雷诺数为270~285。当流动雷诺数小于第一临界值的时候,圆球绕流的尾迹是轴对称的;当雷诺数增大到位于第一临界值和第二临界值之间的时候,流动发生失稳,尾迹变为非轴对称的,但是仍然是定常流动;当雷诺数增大到大于第二临界值的时候,流动再次发生失稳,出现非定常的涡脱落现象。
图6 Re=100时的速度分布
图7 Re=300时的速度分布
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删