1
UDF 中文教程
2
目 录
第一章. 介绍................................................................................................................................4
1.1 什么是 UDF?.....................................................................................................................4
1.2 为什么要使用 UDF?.........................................................................................................4
1.3 UDF 的局限.........................................................................................................................5
1.4 Fluent5 到 Fluent6UDF 的变化 ..................................................................................5
1.5 UDF 基础 .........................................................................................................................6
1.6 解释和编译 UDF 的比较 ..................................................................................................8
1.7 一个 step-by-stepUDF 例子...............................................................................................9
第二章.UDF 的 C 语言基础 ..........................................................................................................16
2.1 引言 ...................................................................................................................................16
2.2 注释你的 C 代码...............................................................................................................17
2.3FLUENT 的 C 数据类型 ..................................................................................................17
2.4 常数 ...................................................................................................................................17
2.5 变量 ...................................................................................................................................17
2.6 自定义数据类型 ...............................................................................................................20
2.7 强制转换 ...........................................................................................................................20
2.8 函数 ...................................................................................................................................20
2.9 数组 ..................................................................................................................................20
2.10 指针 .................................................................................................................................21
2.11 控制语句 ........................................................................................................................22
2.12 常用的 C 运算符.............................................................................................................24
2.13 C 库函数..........................................................................................................................24
2.14 用#define 实现宏置换 ...................................................................................................26
2.15 用#include 实现文件包含 .............................................................................................27
2.16 与 FORTRAN 的比较..................................................................................................27
UDF 第 3 章 写 UDF ....................................................................................................................27
3.1 概述(Introduction)......................................................................................................28
3.2 写解释式 UDF 的限制 .....................................................................................................28
3.3 FLUENT 求解过程中 UDF 的先后顺序........................................................................29
3.4 FLUENT 网格拓扑 .........................................................................................................31
3.5 FLUENT 数据类型 ..........................................................................................................32
3.6 使用 DEFINE Macros 定义你的 UDF ..........................................................................33
3.7 在你的 UDF 源文件中包含 udf.h 文件 ..........................................................................34
3.8 在你的函数中定义变量 ...................................................................................................34
3.9 函数体(Functin Body) ................................................................................................35
3.10 UDF 任务(UDF Tasks) ..........................................................................................35
3.11 为多相流应用写 UDF ....................................................................................................41
3.12 在并行下使用你的 UDF ................................................................................................50
第四章 DEFINE 宏 .......................................................................................................................51
4.1 概述 ..................................................................................................................................51
4.2 通用解算器 DEFINE 宏 .................................................................................................52
4.3 模型指定 DEFINE 宏 .....................................................................................................61
3
4.4 Multiphase DEFINE Macros ........................................................................................105
4.5 DPM DEFINE Macros.....................................................................................................112
第五章 使用宏存取 FLUENT 解算器变量...................................................................................140
5.1 介绍.................................................................................................................................141
5.2 单元格宏 .........................................................................................................................142
5.3 表面宏 .............................................................................................................................145
5.4 几何宏 .............................................................................................................................146
5.5 节点宏.............................................................................................................................149
5.6 多相宏..............................................................................................................................149
5.7 DPM 宏..............................................................................................................................150
5.8 Nox 宏...............................................................................................................................150
6. Utilities (工具) ....................................................................................................................151
6.1 简要 ................................................................................................................................152
6.2 一般目的的循环宏 ........................................................................................................152
6.3 多相组分查询宏 ............................................................................................................156
6.4 设置面变量 ....................................................................................................................160
6.5 访问没有赋值的自变量 ................................................................................................161
6.6 访问邻近网格和线的变量 ............................................................................................169
6.7 用户为网格定义内存 ...................................................................................................170
6.8 矢量工具 .......................................................................................................................171
6.9 与非定常数值模拟有关的宏 .......................................................................................174
6.10 其它各种工具宏 ..........................................................................................................175
第七章 UDF 的编译与链接 ........................................................................................................178
7.1 介绍 .............................................................................................................................178
7.2 UDF 解释 ........................................................................................................................180
7.3 编译 UDF ........................................................................................................................184
第八章 在 FLUENT 中激活你的 UDF .................................................................................197
8.1 激活通用求解器 UDF .................................................................................................197
8.2 激活模型明确 UDF .....................................................................................................199
8.3 激活多相 UDF ..........................................................................................................206
8.4 激活 DPM UDF ...........................................................................................................209
第九章 自定义标量及用法..........................................................................................................214
9.1 介绍 ................................................................................................................................214
9.2 理论 ................................................................................................................................214
9.3 UDS 的定义,求解,后处理 ........................................................................................216
4
第一章. 介绍
本章简要地介绍了用户自定义函数(UDF)及其在 Fluent 中的用法。在 1.1 到 1.6 节中我
们会介绍一下什么是 UDF;如何使用 UDF,以及为什么要使用 UDF,在 1.7 中将一步步的
演示一个 UDF 例子。
1.1 什么是 UDF?
1.2 为什么要使用 UDF?
1.3 UDF 的局限
1.4 Fluent5 到 Fluent6 UDF 的变化
1.5 UDF 基础
1.6 解释和编译 UDF 的比较
1.7 一个 step-by-stepUDF 例子
1.1 什么是 UDF?
用户自定义函数,或 UDF,是用户自编的程序,它可以动态的连接到 Fluent 求解器上
来提高求解器性能。用户自定义函数用 C 语言编写。使用 DEFINE 宏来定义。UDF 中可使
用标准 C 语言的库函数,也可使用 Fluent Inc.提供的预定义宏,通过这些预定义宏,可以获
得 Fluent 求解器得到的数据。
UDF 使用时可以被当作解释函数或编译函数。解释函数在运行时读入并解释。而编译
UDF 则在编译时被嵌入共享库中并与 Fluent 连接。解释 UDF 用起来简单,但是有源代码和
速度方面的限制不足。编译 UDF 执行起来较快,也没有源代码限制,但设置和使用较为麻
烦。
1.2 为什么要使用 UDF?
一般说来,任何一种软件都不可能满足每一个人的要求,FLUENT 也一样,其标准界
面及功能并不能满足每个用户的需要。UDF 正是为解决这种问题而来,使用它我们可以编
写 FLUENT 代码来满足不同用户的特殊需要。当然,FLUENT 的 UDF 并不是什么问题都可
以解决的,在下面的章节中我们就会具体介绍一下 FLUENT UDF 的具体功能。现在先简要
介绍一下 UDF 的一些功能:
定制边界条件,定义材料属性,定义表面和体积反应率,定义 FLUENT 输运方程
5
中的源项,用户自定义标量输运方程(UDS)中的源项扩散率函数等等。
在每次迭代的基础上调节计算值
方案的初始化
(需要时)UDF 的异步执行
后处理功能的改善
FLUENT 模型的改进(例如离散项模型,多项混合物模型,离散发射辐射模型)
由上可以看出 FLUENT UDF 并不涉及到各种算法的改善,这不能不说是一个遗憾。当
然为了源代码的保密我们还是可以理解这样的做法的。其实,如果这些代码能够部分开放,
哪怕就一点点,我想 FLUENT 会像 LINUX 一样发展更为迅速,使用更为广泛。遗憾的是,
从目前来看,这只是一种幻想。什么时候中国人可以出自己的精品?
1.3 UDF 的局限
尽管 UDF 在 FLUENT 中有着广泛的用途,但是并非所有的情况都可以使用 UDF。UDF
并不能访问所有的变量和 FLUENT 模型。例如,它不能调节比热值;调节该值需要使用求
解器的其它功能。如果您不知道是否可以用 UDF 解决某个特定的问题,您可以求助您的技
术支持。
1.4 Fluent5 到 Fluent6UDF 的变化
如果你有 FLUENT5 的 UDF 编程经验,请注意在 FLUENT6 种的下列变化:
� FLUENT6 中加入 了大量的 通用多相 模 型。When one of these general multiphase
models is enabled, storage must be set aside for the mixture as well as the individual
phases. This functionality is manifested in the code through the use of additional thread
and domain data structures. Consequently, some predefined macros have been added that
allow access to data contained within mixture-level and phase-level domain and thread
structures. See Section 3.11 for details on writing UDF for multiphase applications.
If you have a FLUENT 5 UDF with an external domain declaration that you want to use
in FLUENT 6, then the extern statement must be replaced by a call to the Get_Domain
utility and assignment to a Domain pointer as shown below. The Fluent-provided utility,
Get_Domain(1), returns the pointer to the mixture-level domain. See Section 6.5.1 for
more details on Get_Domain.
Example
extern Domain *domain;
评论9