fluent UDF-Ch4
- 格式:doc
- 大小:736.50 KB
- 文档页数:90
如何在FLUENT中激活你的UDF
UDF(User-Defined Function)可以定义为用户自定义的函数,在FLUENT中可以用于模拟各种复杂的流体流动状态。
通常,UDF有一个C或Fortran编写的函数代码,这样就可以用UDF来描述出与物理特性密切相关的各种条件。
UDF在FLUENT当中可以用于向流体添加几何体阻力,调节参数,或者在一些channel中调整速度等。
激活FLUENT中的UDF有几步操作:
1)编写代码:首先,需要使用C或Fortran语言对UDF函数进行编写,根据不同的功能来定义不同的UDF函数,比如用来描述自定义的速度边界,输入静力学条件,改变流线型等。
2)编译代码:编写完代码以后需要将其编译成UDF库,使用
fluent_se.exe或fluent_des.exe编译UDF,在编译的过程中UDF会将编写的代码编译成为一个DLL文件,文件名是udf_func.dll。
3)加载UDF库:当编译完成,就可以在FLUENT中加载UDF库,可以在菜单栏中点击Utilities-User Defined Function-Load/Unload,选择文件udf_func.dll,点击Load,即可将UDF库加载到FLUENT中,UDF也就激活了。
4)定义UDF:加载完UDF库后,可以在UDF Manager界面中看到新添加的UDF,可以选择这些UDF,比如选择速度边界UDF,点击Define按钮,定义UDF,可以在弹出的窗口中输入速度边界UDF函数,或者添加参数等。
经过上述几步,UDF就激活了,可以在FLUENT中使用了。
计算流体力学作业FLUENT 模拟燃烧问题描述:长为2m、直径为的圆筒形燃烧器结构如图1所示,燃烧筒壁上嵌有三块厚为 m,高 m的薄板,以利于甲烷与空气的混合。
燃烧火焰为湍流扩散火焰。
在燃烧器中心有一个直径为 m、长为 m、壁厚为 m的小喷嘴,甲烷以60 m/s的速度从小喷嘴注入燃烧器。
空气从喷嘴周围以 m/s的速度进入燃烧器。
总当量比大约是(甲烷含量超过空气约28%),甲烷气体在燃烧器中高速流动,并与低速流动的空气混合,基于甲烷喷嘴直径的雷诺数约为×103。
假定燃料完全燃烧并转换为:CH4+2O2→CO2+2H2O反应过程是通过化学计量系数、形成焓和控制化学反应率的相应参数来定义的。
利用FLUENT的finite-rate化学反应模型对一个圆筒形燃烧器内的甲烷和空气的混合物的流动和燃烧过程进行研究。
1、建立物理模型,选择材料属性,定义带化学组分混合与反应的湍流流动边界条件2、使用非耦合求解器求解燃烧问题3、对燃烧组分的比热分别为常量和变量的情况进行计算,并比较其结果4、利用分布云图检查反应流的计算结果5、预测热力型和快速型的NO X含量6、使用场函数计算器进行NO含量计算一、利用GAMBIT建立计算模型第1步启动GAMBIT,建立基本结构分析:圆筒燃烧器是一个轴对称的结构,可简化为二维流动,故只要建立轴对称面上的二维结构就可以了,几何结构如图2所示。
(1)建立新文件夹在F盘根目录下建立一个名为combustion的文件夹。
(2)启动GAMBIT(3)创建对称轴①创建两端点。
A(0,0,0),B(2,0,0)②将两端点连成线(4)创建小喷嘴及空气进口边界①创建C、D、E、F、G点②连接AC、CD、DE、DF、FG。
(5)创建燃烧筒壁面、隔板和出口①创建H、I、J、K、L、M、N点(y轴为,z轴为0)。
②将H、I、J、K、L、M、N向Y轴负方向复制,距离为板高度。
③连接GH、HO、OP、PI、IJ、JQ、QR、RK、KL、LS、ST、TM、MN、NB。
FLUENT_UDF官方培训教程
必须原创
FLUENT UDF全称为Fluent User Defined Functions,是ANSYS Fluent有限元分析软件的一种高级应用技术,主要用于定制流体、多相流及热传导模拟中的特殊调整元件。
本文介绍如何使用FLUENT-UDF进行实际模拟的培训教程。
一、FLUENTUDF的概念
FLUENT UDF是一种定制的技术,它可以灵活地增强Fluent本身的模拟能力,并让用户能够自定义函数来调整流体、多相流及热传导模拟中的特殊参数。
FLUENT UDF是一种可以定义特殊参数和条件的技术,它可以让Fluent本身的模拟更加强大。
用户可以根据实际的需求自定义这些特殊参数,从而实现更加全面和精确的模拟。
二、FLUENTUDF的步骤
2.编写UDF函数:
UDF函数可以用C或Fortran语言编写,也可以用Fluent自带的UDFEasy编译器编写。
编写UDF函数的基本步骤是:
(1)编写UDF函数的声明,它在编译器的第一行声明,用于定义函数的相关参数;
(2)编写函数代码,用于计算流体及热传导的相关参数;
(3)编写函数的结束部分,使函数返回正确的值并运行成功。
fluent之UDF⽂件的操作
下⽂转⾃沙场醉客之博客:
可⽤txt⽂件进⾏UDF编程,之后将⽂件改为.c⽂件。
(也可⽤VC编程,保存为.c⽂件)
将程序导⼊到Fluent中利⽤编译功能,具体操作
在 fluent中的Define -> Use-Defined -> Compiled 打开之后,选择source files下⾯的Add...,找到编写好的.c⽂件打开,点击Build,就会⽣成⼀个以liberary name命名的⽂件夹,编译好的资料就放在这个⽂件夹⾥⾯,最后点击load就会将编译好的内容导⼊到Fluent中,这样你在有UDF选项的下拉菜单中就会看到你编好的程序名称。
利⽤UDF编程和C语⾔编程很相似,所以最好知道⼀些C语⾔编程的基础,再掌握⼀些Fluent的UDF固有的⼀些命令,基本上⼀些简单的程序就都没问题了。
第四章DEFINE宏(未完整翻译)本章介绍了Fluent公司所提供的预定义宏,我们需要用这些预定义宏来定义UDF。
在本章中这些宏就是指DEFINE宏。
∙ 4.1 概述∙ 4.2 通用解算器DEFINE宏∙ 4.3 模型指定DEFINE宏∙ 4.4 多相DEFINE宏∙ 4.5 离散相模型DEFINE宏4.1 概述DEFINE宏一般分为如下四类:∙通用解算器∙模型指定∙多相∙离散相模型(DPM)对于本章所列出的每一个DEFINE宏,本章都提供了使用该宏的源代码的例子。
很多例子广泛的使用了其它章节讨论的宏,如解算器读取(第五章)和utilities (Chapter 6)。
需要注意的是,并不是本章所有的例子都是可以在FLUENT中执行的完整的函数。
这些例子只是演示一下如何使用宏。
除了离散相模型DEFINE宏之外的所有宏的定义都包含在udf.h文件中。
离散相模型DEFINE宏的定义包含在dpm.h文件中。
为了方便大家,所有的定义都列于附录A中。
其实udf.h头文件已经包含了dpm.h文件,所以在你的UDF源代码中就不必包含dpm.h文件了。
注意:在你的源代码中,DEFINE宏的所有参变量必须在同一行,如果将DEFINE声明分为几行就会导致编译错误。
4.2 通用解算器DEFINE宏本节所介绍的DEFINE宏执行了FLUENT中模型相关的通用解算器函数。
表4.2.1提供了FLUENT中DEFINE宏,以及这些宏定义的功能和激活这些宏的面板的快速参考向导。
每一个DEFINE宏的定义都在udf.h头文件中,具体可以参考附录A。
∙DEFINE_ADJUST (4.2.1节)∙DEFINE_INIT (4.2.2节)∙DEFINE_ON_DEMAND (4.2.3节)∙DEFINE_RW_FILE (4.2.4节)∙ 4.2.1 DEFINE_ADJUST∙ 4.2.2 DEFINE_INIT∙ 4.2.3 DEFINE_ON_DEMAND∙ 4.2.4 DEFINE_RW_FILE4.2.1 DEFINE_ADJUST功能和使用方法的介绍DEFINE_ADJUST是一个用于调节和修改FLUENT变量的通用宏。
fluent udf 温度梯度Fluent UDF (User Defined Function) 是用于在ANSYS Fluent软件中自定义计算和模拟的方法。
温度梯度是描述温度变化率的数值,通常表示为温度随空间位置的导数。
可以使用Fluent UDF来计算温度梯度。
编写Fluent UDF以计算温度梯度需要以下步骤:1. 在ANSYS Fluent中创建一个新的用户定义内存(DEFINE)函数。
这可以通过选择“Define”>“User-defined”>“Functions”来完成。
2. 在用户定义函数编辑器中编写UDF代码来计算温度梯度。
代码应包括定义和初始化变量、读取相应的物理场参数(如温度)、计算温度梯度并将其发送回流场。
3. 在Fluent中加载和编译UDF代码。
这可以通过选择“Define”>“User-defined”>“Compiled”>“Load”来完成。
确保编译和加载过程中没有错误。
4. 在Fluent设置中应用UDF,在“Boundary Conditions”或“Cell Zones”等相应位置中选择使用刚刚编译的UDF进行温度梯度计算。
这可以通过选择“Define”>“Boundary Conditions”或“Define”>“Cell Zones”来完成。
5. 运行模拟,并在需要的位置和时刻监视温度梯度的值。
这可以通过在Fluent中选择相应的监视器(如表格或曲线)来实现。
需要注意的是,编写Fluent UDF需要一定的编程知识和理解,因此建议在使用之前熟悉Fluent UDF编程的基本概念和使用方法。
5.2 单元格宏流体变量宏名称(参数)参数类型返回值C_T(c,t) cell t c, Thread *t 温度C_T_G(c,t) cell t c, Thread *t 温度梯度矢量C_T_G(c,t)[i] cell t c, Thread *t, int i 温度梯度矢量的分量C_T_RG(c,t) cell t c, Thread *t 改造后的温度梯度矢量C_T_RG(c,t)[i] cell t c, Thread *t, int i 改造后的温度梯度矢量的分量C_T_M1(c,t) cell t c, Thread *t 温度的前一次步长C_T_M2(c,t) cell t c, Thread *t 温度的前二次步长C_P(c,t) cell t c, Thread *t 压力C_DP(c,t) cell t c, Thread *t 压力梯度矢量C_DP(c,t)[i] cell t c, Thread *t, int i 压力梯度矢量的分量C_U(c,t) cell t c, Thread *t u 方向的速度C _V(c,t) cell t c, Thread *t v方向的速度C_W(c,t) cell t c, Thread *t w方向的速度C_H(c,t) cell t c, Thread *t 焓C_YI(c,t,i) cell t c, Thread *t, int i 物质质量分数C_K(c,t) cell t c, Thread *t 湍流运动能C_D(c,t) cell t c, Thread *t 湍流运动能的分散速率C_O(c,t) cell t c, Thread *t 确定的分散速率读写导数的宏名称(参数)参数类型返回值C DUDX(c,t) cell t c, Thread *t velocity derivativeC DUDY(c,t) cell t c, Thread *t velocity derivativeC DUDZ(c,t) cell t c, Thread *t velocity derivativeC DVDX(c,t) cell t c, Thread *t velocity derivativeC DVDY(c,t) cell t c, Thread *t velocity derivativeC DVDZ(c,t) cell t c, Thread *t velocity derivativeC DWDX(c,t) cell t c, Thread *t velocity derivativeC DWDY(c,t) cell t c, Thread *t velocity derivativeC DWDZ(c,t) cell t c, Thread *t velocity derivative存取材料性质的宏名称(参数)参数类型返回值C_FMEAN(c,t) cell t c, Thread *t 第一次混合分数的平均值C_FMEAN2(c,t) cell t c, Thread *t 第一次混合分数的平均值C_FVAR(c,t) cell t c, Thread *t 第一次混合分数变量C_FVAR2(c,t) cell t c, Thread *t 第二次混合分数变量C_PREMIXC(c,t) cell t c, Thread *t 反应过程变量C_LAM FLAME SPEED(c,t) cell t c, Thread *t 层流焰速度C_CRITICAL STRAIN cell t c, Thread *t 临界应变速度RATE(c,t)C_ POLLUT(c,t,i) cell t c, Thread *t, int i 第i个污染物质的质量分数C_R(c,t) cell t c, Thread *t 密度C_MU L(c,t) cell t c, Thread *t 层流速度C_MU T(c,t) cell t c, Thread *t 湍流速度C_MU EFF(c,t) cell t c, Thread *t 有效粘度C_K_L(c,t) cell t c, Thread *t 热传导系数C_K_T(c,t) cell t c, Thread *t 湍流热传导系数C_K_ EFF(c,t) cell t c, Thread *t 有效热传导系数C_CP(c,t) cell t c, Thread *t 确定的热量C_RGAS(c,t) cell t c, Thread *t 气体常数层流物质的扩散率C_DIFF L(c,t,i,j) cell t c, Thread *t, int i,int jC_DIFF EFF(c,t,i) cell t c, Thread *t, int i 物质的有效扩散率C_ABS COEFF(c,t) cell t c, Thread *t 吸附系数C_SCAT COEFF(c,t) cell t c, Thread *t 扩散系数C_NUT(c,t) cell t c, Thread *t 湍流速度forSpalart-Allmaras为单元格读写用户定义的标量和存储器的宏名称(参数)参数类型返回值C _UDSI(c,t,i) cell t c, Thread *t, int i 用户定义的标量(单元格)C_UDSI M(c,t,i) cell t c, Thread *t, int i 前一次步长下用户定义的标量(单元格)C_UDSI_DIFF(c,t,i) cell t c, Thread *t, int i 用户定义的标量的分散率(单元格)C_UDMI(c,t,i) cell t c, Thread *t, int i 用户定义的存储器(单元格)给雷诺兹压力模型读写变量的宏名字(参数)参数类型返回值C RUU(c,t) cell t c, Thread *t uu 雷诺兹压力C RVV(c,t) cell t c, Thread *t vv 雷诺兹压力C RWW(c,t) cell t c, Thread *t ww 雷诺兹压力C RUV(c,t) cell t c, Thread *t uv雷诺兹压力sC RVW(c,t) cell t c, Thread *t vw 雷诺兹压力C RUW(c,t) cell t c, Thread *t uw 雷诺兹压力5.3表面宏mem.h中的流体变量读写的宏名称(参数)参数类型返回值F_R(f,t) face t f, Thread *t, 密度F_P(f,t) face t f, Thread *t, 压力F_U(f,t) face t f, Thread *t, u方向的速度F_V(f,t) face t f, Thread *t, v 方向的速度F_W(f,t) face t f, Thread *t, w方向的速度F_T(f,t) face t f, Thread *t, 温度F_H(f,t) face t f, Thread *t, 焓F_K(f t) face t f, Thread *t, 湍流运动能F_D(f,t) face t f, Thread *t, 湍流运动能的分散速率F_YI(f,t,i) face t f, Thread *t, int i 物质的质量分数F_FLUX(f,t) face t f, Thread *t 通过边界表面的质量流速用于给表面读写用户定义的标量和存储器的宏名称(参数)参数类型返回值F_UDSI(f,t,i) face t f, Thread *t, int i 用户确定的标量(表面)F_UDMI(f,t,i) face t f, Thread *t, int i 用户定义的存储器(表面)混合面变量宏其余的表面变量宏在表5.3.3中列出名称(参数)参数类型返回值F_C0(f,t) face t f, Thread *tF_C0_THREAD(f,t) face t f, Thread *tF_C1(f,t) face t f, Thread *tF_C1_ THREAD(f,t) face t f, Thread *t5.4几何宏5.4.1节点和面的数量在表5.4.1中列出的宏C_NNODES和C_NFACES返回相应的节点和面的整数值。
在使用Fluent软件进行模拟计算时,经常会遇到需要自定义用户子程序(User Defined Function,简称UDF)的情况。
UDF是Fluent中用户自己编写的函数,用于描述流场中的边界条件、源项等物理过程。
为了正确地使用UDF并进行模拟计算,我们需要了解如何编写和编译UDF。
本教程将向大家介绍如何使用ANSYS Fluent进行UDF的编译,并提供一些常见问题的解决方法。
一、准备工作在进行UDF编译之前,我们需要进行一些准备工作。
1. 确保已安装ANSYS Fluent软件,并且能够正常运行;2. 确保已安装C/C++编译器,常见的编译器有Microsoft Visual Studio、GCC等;3. 编写好UDF的源代码文件,可以使用任何文本编辑器编写,但建议使用支持C/C++语法高亮的编辑器,以便于排查语法错误。
二、设置Fluent编译环境在进行UDF编译之前,我们需要设置Fluent的编译环境,以确保编译器可以正确地识别Fluent的API。
1. 打开命令行终端(Windows系统为cmd,Linux/Unix系统为Terminal);2. 运行以下命令设置Fluent的编译环境:对于Windows系统:```bashcd C:\Program Files\ANSYS Inc\v200\fluentfluent 3d -i```对于Linux/Unix系统:```bashcd /usr/ansys_inc/v200/fluent./fluent 3d -t xxx -g -i```其中,xxx是你的图形界面类型,可以根据你实际的图形界面类型进行替换,一般为Gl 或 X11。
运行上述命令后,Fluent将会启动,并且设置了编译环境。
在Fluent 的命令行界面中,我们可以进行UDF的编译和加载。
三、编译UDF在设置了Fluent的编译环境后,我们可以开始编译UDF了。
1. 将编写好的UDF源代码文件(后缀名通常为.c或.cpp)放置在Fluent的工作目录中;2. 在Fluent的命令行界面中,输入以下命令进行编译:```bash/define/user-definedpiled-functions load my_udf-name/define/user-definedpiled-functionspile my_udf-name/define/user-definedpiled-functions write my_udf-name/exit```其中,my_udf-name是你的UDF源代码文件的文件名(不包括后缀名),例如my_udf。
第四章DEFINE宏本章介绍了Fluent公司所提供的预定义宏,我们需要用这些预定义宏来定义UDF。
在本章中这些宏就是指DEFINE宏。
本章由如下几节组成:∙ 4.1 概述∙ 4.2 通用解算器DEFINE宏∙ 4.3 模型指定DEFINE宏∙ 4.4 多相DEFINE宏∙ 4.5 离散相模型DEFINE宏4.1 概述DEFINE宏一般分为如下四类:∙通用解算器∙模型指定∙多相∙离散相模型(DPM)对于本章所列出的每一个DEFINE宏,本章都提供了使用该宏的源代码的例子。
很多例子广泛的使用了其它章节讨论的宏,如解算器读取(第五章)和utilities (Chapter 6)。
需要注意的是,并不是本章所有的例子都是可以在FLUENT中执行的完整的函数。
这些例子只是演示一下如何使用宏。
除了离散相模型DEFINE宏之外的所有宏的定义都包含在udf.h文件中。
离散相模型DEFINE宏的定义包含在dpm.h文件中。
为了方便大家,所有的定义都列于附录A中。
其实udf.h头文件已经包含了dpm.h文件,所以在你的UDF源代码中就不必包含dpm.h文件了。
注意:在你的源代码中,DEFINE宏的所有参变量必须在同一行,如果将DEFINE声明分为几行就会导致编译错误。
4.2 通用解算器DEFINE宏本节所介绍的DEFINE宏执行了FLUENT中模型相关的通用解算器函数。
表4.2.1提供了FLUENT中DEFINE宏,以及这些宏定义的功能和激活这些宏的面板的快速参考向导。
每一个DEFINE宏的定义都在udf.h头文件中,具体可以参考附录A。
∙DEFINE_ADJUST (4.2.1节)∙DEFINE_INIT (4.2.2节)∙DEFINE_ON_DEMAND (4.2.3节)∙DEFINE_RW_FILE (4.2.4节)∙ 4.2.1 DEFINE_ADJUST∙ 4.2.2 DEFINE_INIT∙ 4.2.3 DEFINE_ON_DEMAND∙ 4.2.4 DEFINE_RW_FILE4.2.1 DEFINE_ADJUST功能和使用方法的介绍DEFINE_ADJUST是一个用于调节和修改FLUENT变量的通用宏。
例如,你可以用DEFINE_ADJUST来修改流动变量(如:速度,压力)并计算积分。
你可以用它来对某一标量在整个流场上积分,然后在该结果的基础上调节边界条件。
在每一步迭代中都可以执行用DEFINE_ADJUST定义的宏,并在解输运方程之前的每一步迭代中调用它。
参考图3.3.1 和3.3.2 for可以大致了解一下当DEFINE_ADJUST被调用时FLUENT解的过程DEFINE_ADJUST有两个参变量:name和d。
name是你所指定的UDF的名字。
当你的UDF编译并连接时,你的FLUENT图形用户界面就会显示这个名字,此时你就可以选择它了。
d是FLUENT解算器传给你的UDF的变量。
D是一个指向区域的指针,调节函数被应用于这个区域上。
区域变量提供了存取网格中所有单元和表面的线程。
对于多相流,由解算器传给函数的区域指针是混合层区域指针。
DEFINE_ADJUST函数不返回任何值给解算器。
例子1下面的UDF名字是adjust,它使用DEFINE_ADJUST对湍流耗散在整个区域上积分。
然后这个值会打印在控制台窗口中。
每一步迭代都会调用这个UDF。
它可以作为解释程序或者编译后的UDF在FLUENT中执行。
/*******************************************************************/ /* 积分湍流耗散并将其打印到控制台窗口的UDF */ /********************************************************************/ #include "udf.h"DEFINE_ADJUST(my_adjust, d){Thread *t;/* Integrate dissipation. */real sum_diss=0.;cell_t c;thread_loop_c (t,d){begin_c_loop (c,t)sum_diss += C_D(c,t)*C_VOLUME(c,t);end_c_loop (c,t)}printf("Volume integral of turbulent dissipation: %g\n", sum_diss);}例子:2下面UDF的名字是adjust_fcn,它用DEFINE_ADJUST指定了某一自定义标量是另一自定义标量的梯度的函数。
该函数在每一次迭代中都会被调用。
它可以作为编译后的UDF在FLUENT中执行。
/********************************************************************/ /* UDF for defining user-defined scalars and their gradients *//********************************************************************/#include "udf.h"DEFINE_ADJUST(adjust_fcn, d){Thread *t;cell_t c;real K_EL = 1.0;/* Do nothing if gradient isn't allocated yet. */if (! Data_Valid_P())return;thread_loop_c (t, d){if (FLUID_THREAD_P(t)){begin_c_loop_all (c,t){C_UDSI(c,t,1) += K_EL*NV_MAG2(C_UDSI_G(c,t,0))*C_VOLUME(c,t);}end_c_loop_all (c, t)}}}Activating an Adjust UDF in FLUENT在为adjust UDF的源代码进行编译和连接之后,你可以在FLUENT中的User-Defined Function Hooks面板激活这个函数。
更详细的内容请参阅8.1.1节。
4.2.2 DEFINE_INIT功能和使用方法的介绍你可以用DEFINE_INIT宏来定义一组解的初始值。
DEFINE_INIT 完成和修补一样的功能,只是它以另一种方式——UDF来完成。
每一次初始化时DEFINE_INIT函数都会被执行一次,并在解算器完成默认的初始化之后立即被调用。
因为它是在流场初始化之后被调用的,所以它最常用于设定流动变量的初值。
参考图3.3.1和3.3.2关于FLUENT解过程的介绍可以看出什么时候调用DEFINE_INIT函数。
DEFINE_INIT有两个参变量:name和d。
name是你所指定的UDF的名字。
当你的UDF编译并连接时,你的FLUENT图形用户界面就会显示这个名字,此时你就可以选择它了。
d是FLUENT解算器传给你的UDF的变量。
d is a pointer to the domain over which the initialization function is to be applied. The domain argument provides access to all cell and face threads in the mesh. For multiphase flows, the domain pointer that is passed to the function by the solver is the mixture-level domain pointer. A DEFINE_INIT function does not return a value to the solver.例子下面的UDF名字是my_init_func,它在某一个解中初始化了流动变量。
在解过程开始时它被执行了一次。
它可以作为解释程序或者编译后的UDF在FLUENT中执行。
/*******************************************************************/ /* UDF for initializing flow field variables *//******************************************************************** ***/#include "udf.h"DEFINE_INIT(my_init_function, domain){cell_t c;Thread *t;real xc[ND_ND];/* loop over all cell threads in the domain */thread_loop_c (t,domain){/* loop over all cells */begin_c_loop_all (c,t){C_CENTROID(xc,c,t);if (sqrt(ND_SUM(pow(xc[0] - 0.5,2.),pow(xc[1] - 0.5,2.),pow(xc[2] - 0.5,2.))) < 0.25)C_T(c,t) = 400.;elseC_T(c,t) = 300.;}end_c_loop_all (c,t)}}The macro ND_SUM(a, b, c) that is used in the UDF computes the sum of the first two arguments (2D) or all three arguments (3D). It is useful for writing functions involving vector operations so that the same function can be used for 2D and 3D. For a 2D case, the third argument is ignored. See Chapter 5 for a description of predefined solver access macros (e.g., C_CENTROID) and Chapter 6 for utility macros (e.g., ND_SUM).Activating an Initialization UDF in FLUENT编译并连接UDF源代码之后。