本文简单且完整地介绍如何利用ACT定义Fluent仿真计算流程。
案例ACT要实现的功能包括:
-
导入msh文件 -
指定湍流模型 -
指定进出口边界 -
指定迭代次数 -
执行计算
1 计算模型描述
用一个最简单的计算模型进行ACT测试。测试模型如图所示。
尽可能简单的案例。考虑一个长度100 mm,直径20 mm的圆管,入口速度1 m/s,流体介质为液态水(密度1000 kg/m3,动力粘度0.001 Pa.s)。
雷诺数:
采用SST k-omega湍流模型进行计算。计算中采用2D轴对称模型,计算模型如图所示。

2 准备TUI
Fluent ACT开发,其核心功能实现来源于TUI。因此先把TUI命令挑出来,多调试几次,确保运行顺畅。
;打开网格文件Ex.msh
/file/read-case "EX.msh"
;修改空间形式为轴对称
/define/models/axisymmetric? yes
;设置湍流模型为realizable k-epsilon模型
/define/models/viscous/ke-realizable? yes
;改变默认材料air为water,并修改其密度与粘度值
/define/materials/change-create air water yes,1000,,yes,0.001,,,yes
;设置入口速度为2m/s
/define/boundary-conditions/set/velocity-inlet ,,vmag,2 q
;采用混合初始化
/solve/initialize/hyb-initialization
;指定迭代次数为300次并执行计算
/solve/iterate/300
;保存cas及dat文件
/file/write-case-data EX2.cas
3 搭建ACT
现在搭建一个ACT框架,从网格导入到求解计算。界面GUI构造可利用ANSYS提供的APP Builder来完成。
-
启动ANSYS Workbench,点击工具栏按钮ACT Start Page打开ACT Home面板

-
点击按钮Open App Builder打开APP设计程序

-
选中按钮新项目打开项目创建对话框

-
设置项目名称及路径

-
点击按钮添加产品

-
选择产品为Fluent,点击OK按钮关闭对话框

-
点击按钮新建向导创建新的向导

-
指定新的向导名称及标签

-
点击下图所示按钮,添加文件打开对话框控件

-
指定控件属性及属性标签,如下图所示

-
添加浮点数控件Density,指定属性名、标签、默认值及单位

-
添加浮点数控件viscosity,指定属性名、标签、默认值及单位

-
添加浮点数控件velocity,指定属性名、标签、默认值及单位

-
添加整数控件numIteration,指定属性名、标签、默认值及单位

-
构建完毕后如下图所示

-
右侧面板选择回调函数为Update,并输入代码

输入以下代码:
tui = ExtAPI.Application.ScriptByName("TUI")
filename = step.Properties["importFile"].Value
tui.SendCommand("""/file/read-mesh {0} """.format(filename))
tui.SendCommand("""/file/read-case EX.msh""")
tui.SendCommand("""/display/mesh ok""")
tui.SendCommand("""/define/models/axisymmetric? yes""")
tui.SendCommand("""/define/models/viscous/ke-realizable? yes""")
dens = step.Properties["Density"].Value
vis = step.Properties["viscosity"].Value
vel = step.Properties["velocity"].Value
nt = step.Properties["numIteration"].Value
tui.SendCommand("""/define/materials/change-create air water yes,{0},,yes,{1},,,yes""".format(dens,vis))
tui.SendCommand("""/define/boundary-conditions/set/velocity-inlet ,,vmag,{0} q""".format(vel))
tui.SendCommand("""/solve/initialize/hyb-initialization""")
tui.SendCommand("""/solve/iterate/{0}""".format(nt))
-
点击如下图所示工具栏按钮输出为脚本扩展

此时文件夹内结构如图所示。

4 代码
用文本编辑器打开pipeDemo.xml文件,其内容为:
<extension name="pipeDemo">
<imagedirectory>.imagedirectory>
<guid>c8d33dfd-dc23-4b56-ba87-ffe89f3ba132guid>
<script src="IDEGeneratedMain.py" />
<wizard name="mywizard" caption="mywizard" version="1" context="Fluent">
<step name="workflow" version="0" caption="工作流程">
<property control="fileopen" name="importFile" caption="导入文件:" persistent="False" parameterizable="False" />
<property control="float" name="Density" caption="密度:" persistent="False" parameterizable="False" default="1000 [kg m^-3]" unit="Density" />
<property control="float" name="viscosity" caption="粘度:" persistent="False" parameterizable="False" default="0.001 [Pa s]" unit="Dynamic Viscosity" />
<property control="float" name="velocity" caption="入口速度:" persistent="False" parameterizable="False" default="2.0 [m s^-1]" unit="Velocity">
<help>输入入口速度help>
property>
<property control="integer" name="numIteration" caption="迭代次数:" persistent="False" parameterizable="False" default="300">
<help>输入迭代次数help>
property>
<callbacks>
<onupdate>onupdateSteponupdate>
callbacks>
step>
wizard>
extension>
可以看到前面的界面搭建工作实际上是构造了这么一个文件,所有信息都在此文件中。
注意文件中原本有2个回调函数onupdateStep及onresetStep,我这里删掉了onresetStep。在onupdateStep用于实现脚本功能。函数在文件IDEGeneratedMain.py中定义。
在在onupdateStep函数中执行TUI脚本。
def onupdateStep(step):
tui = ExtAPI.Application.ScriptByName("TUI")
filename = step.Properties["importFile"].Value
tui.SendCommand("""/file/read-mesh {0} """.format(filename))
tui.SendCommand("""/file/read-case EX.msh""")
tui.SendCommand("""/display/mesh ok""")
tui.SendCommand("""/define/models/axisymmetric? yes""")
tui.SendCommand("""/define/models/viscous/ke-realizable? yes""")
dens = step.Properties["Density"].Value
vis = step.Properties["viscosity"].Value
vel = step.Properties["velocity"].Value
nt = step.Properties["numIteration"].Value
tui.SendCommand("""/define/materials/change-create air water yes,{0},,yes,{1},,,yes""".format(dens,vis))
tui.SendCommand("""/define/boundary-conditions/set/velocity-inlet ,,vmag,{0} q""".format(vel))
tui.SendCommand("""/solve/initialize/hyb-initialization""")
tui.SendCommand("""/solve/iterate/{0}""".format(nt))
-
如下图所示点击按钮编译ACT

-
对话框中指定输出文件夹,点击构建按钮编译ACT

-
生成扩展名为wbex的ACT

5 测试
-
启动Fluent,注意勾选选项Load ACT选项

-
点击按钮Manage Extensions打开管理面板

-
点击Install按钮并选择前面生成的wbex文件安装ACT

-
如下图所示加载扩展

-
点击按钮Launch Wizards按钮打开扩展运行面板

-
点击扩展mywizard按钮以运行

-
启动后如下图所示,指定msh文件并点击Finish按钮运行脚本

-
此时会锁定ACT,直至ACT运行完成。

相关文件下载链接:
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册