本文演示利用PyFluent设置使用UDF定义的边界条件。
1、模型描述
测试模型尺寸如下图所示,管道半径5 mm,长度为80 mm。
入口为充分发展流动,平均速度 1 m/s。采用UDF进行入口边界指定,速度分布为:
计算网格如下图所示。
2、准备UDF
编写UDF文件如下所示所示,命名为velUDF.c。
#include "udf.h"
DEFINE_PROFILE(vel, t, i)
{
real x[ND_ND];
real y;
face_t f;
begin_f_loop(f, t)
{
F_CENTROID(x, f, t);
y = x[1];
F_PROFILE(f, t, i) = 2 * (1 - y * y / (0.005 * 0.005));
}
end_f_loop(f, t)
}
3、TUI测试
运行此仿真可以使用下面的TUI命令。
/file/read-case "demo2.msh"
/define/models/axisymmetric? yes
/define/user-defined/compiled-functions compile "libudf" yes y "velUDF.c" "" ""
/define/user-defined/compiled-functions load "libudf"
/define/boundary-conditions/set/velocity-inlet "inlet" () vmag yes yes "udf" "vel::libudf" q
/solve/initialize/hyb-initialization yes
/solve/iterate 100
4、PyFluent程序
改写TUI命令,写成流程程序如下。
import ansys.fluent.core as pyfluent
# 启动Fluent
solver = pyfluent.launch_fluent(precision='double',processor_count=4,mode='solver',version='2d')
# 读取网格文件
solver.tui.file.read_case('demo2.msh')
# 激活轴对称模型
solver.tui.define.models.axisymmetric('yes')
# 编译UDF并加载UDF
solver.tui.define.user_defined.compiled_functions("compile","libudf","yes","y","velUDF.c","","")
# 加载udf
solver.tui.define.user_defined.compiled_functions("load","libudf")
# 指定入口速度,采用UDF进行速度指定
solver.tui.define.boundary_conditions.set.velocity_inlet("inlet",[],"vmag","yes","yes","udf",'"vel::libudf"',"quit")
# 进行初始化
solver.tui.solve.initialize.hyb_initialization("yes")
# 迭代计算100次
solver.tui.solve.iterate(100)
# 保存文件
solver.tui.file.write_case_data('demo')
# 退出Fluent
solver.exit()
5、计算结果
计算结果如下图所示。
用PyFluent做后处理效果不太好,这里直接保存dat文件在Fluent里面查看结果。
6、小结
利用TUI方式能极大地缩短PyFluent学习成本。除了TUI方式外,PyFluent还支持root方式,这个以后有空再说。
(完)