ANSYS Fluent 二次开发指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.7 UDF使用流程

这里以一个简单的初始化案例来描述UDF的源代码编写、编译及加载过程。通过此案例可以熟悉UDF的整个使用流程。

1.7.1 Fluent中的Patch

Fluent中提供了全局初始化以及局部Patch功能。对于整体区域的全局初始化可以采用starndard及hybrid方法进行初始化,指定各种物理量的初始分布。而对于计算域中的局部区域初始化,则可以通过Patch功能来实现。

在使用Patch方法时,首先需要对要进行Patch的区域进行标记。鼠标右键选择树性节点Solution > Cell Registers,点击弹出菜单项NewRegion...可弹出区域定义对话框(图1-4)。

图1-4 创建区域

可以在弹出的对话框中设置几何条件来标记(Mark)区域,如图1-5所示。

图1-5 区域定义对话框

此对话框中可定义的形状类型在2D模型中只有三种:Quad、Circle或Cylinder。在3D模型中对应的是Hex、Sphere以及Cylinder。对于更复杂的形状则无能为力,此时可以借助UDF来解决问题。

1.7.2 案例描述

如图1-6所示的矩形区域为计算区域,其初始温度为300K,计算模型尺寸如图所示。

图1-6 几何模型

图中椭圆部分为要进行初始化处理的区域,其初始温度为500K。生成计算网格如图1-7所示。

注 意

在创建几何模型时,确保几何左下角为坐标原点,否则需要更改UDF程序中的椭圆中心坐标。

图1-7 计算网格

1.7.3 编写UDF源文件

对于这种椭圆形区域的初始化,只能采用UDF来实现。利用DEFINE_INIT宏来实现这种区域的标记工作。

本案例中椭圆方程为:

因此可在文本编辑器中编写UDF代码如下:

#include ”udf.h”
DEFINE_INIT(domainInit,d)
{
    cell_t c;
    Thread *t;
    real xc[ND_ND];
    real x;
    real y;
    thread_loop_c(t,d)
    {
        begin_c_loop_all(c,t)
        {
            C_CENTROID(xc,c,t);
            x = xc[0];
            y = xc[1];
            
            if(pow((x-0.05),2)/(0.03*0.03)+
                pow(y-0.03,2)/pow(0.015,2)<1)
            {
                C_T(c,t) = 500;
     &ensp;      }
            else
            {
                C_T(c,t)=300;
            }
        }
        end_c_loop_all(c,t)
    }
}

1.7.4 解释UDF

利用鼠标右键选择模型树节点User Defined Functions,点击弹出菜单项Interpreted…(图1-8),Fluent软件会弹出UDF解释对话框。

图1-8 编译UDF下拉菜单

在弹出的对话框中,利用Browse…按钮添加UDF源文件,点击Interpret按钮进行解释,见图1-9,待解释完毕后可关闭对话框。

图1-9 编译UDF

本案例也可以采用编译的方式运行。

1.7.5 Hook UDF

UDF编译完成后,需要将UDF加载到Fluent中。这部分工作可以通过相应的GUI来实现。 DEFINE_INIT宏需要在User Defined标签页下的Funcition Hooks…中进行加载,如图1-10所示。

图1-10 加载UDF

选择此按钮后打开UDF加载对话框,如图1-11所示。选择Initialization后方的Edit…按钮,打开对话框。在对话框中选择要加载的UDF宏,操作顺序如图1-12所示。

图1-11 UDF加载对话框

图1-12 UDF选择

1.7.6 查看结果

在查看初始化结果之前,需要开启相应的模型。由于本案例初始化的是温度变量,所以必须首先开启能量方程,如图1-13所示。之后进行初始化,如图1-14所示。初始化完毕后可以查看温度云图分布,见图1-15。

图1-13 开启能量方程

图1-14 初始化计算

图1-15 温度云图分布

可以看到椭圆形区域初始温度设置为500K。 按同样的道理,可以初始化任何形状的区域,只要这些区域可以用数学函数来表达。