随着Ansys Fluent软件的使用程度的加深,软件的一些基本功能无法满足我们的一些特定需求,对于没有接触过二次开发或者代码学习的工程师来说,UDF的学习至关重要!
UDF概述(1)我们认识了UDF的性质、作用和数据结构;
UDF概述(2)我们介绍了使用的语言和相关的宏;
Ansys Fluent-UDF
熟悉Fortran等其他“过程”语言的用户将熟悉C中使用的大多数工作思路和语法。
每条语句都必须以分号结束;
注释可以插入在 /* 和 */ 之间的任何位置;
所有变量都必须显式声明(unlike in FORTRAN);
复合语句可以通过用大括号括住多个语句来创建: { };
函数定义具有以下格式:

Ansys Fluent-UDF
数据类型:int, float(单精度8位有效数字), double(双精度16位有效数字), char, enum(枚举);

Ansys Fluent: real (实数) (取决于开启软件的时候选择的单精度还是双精度), cxboolean;

Ansys Fluent-UDF
指针是一种特殊的变量,它包含内存中的地址,而不是另一个变量的内容
指针使用 * 符号声明

我们可以按如下方式将指针指向预定义变量的地址:

Output:

Ansys Fluent-UDF
指针和数组密切相关:

没有索引的数组的名称可以用作启动数组的指针:

但是:数组名称不能设置为新值。当它被定义为数组时,它固定为值集:

Ansys Fluent-UDF
Arithmetic Operators 算术运算符:

Ansys Fluent-UDF
if-else statement:

Ansys Fluent-UDF
在Fluent中使用UDF的基本步骤如下:

STEP01:定义问题
我们想对2D弯头施加抛物线入口速度,如图所示,其中x速度指定为:


STEP02:准备C语言代码
DEFINE_PROFILE宏允许定义函数x_velography;
代码存储为inlet_bc文本文件 .c;
所有UDF都以DEFINE_宏开头;
GUI中显示的名称将是x_velovely;
宏begin_f_loop在线程指向的所有面f上循环;
F_CENTROID宏将单元格位置向量分配给pos[ ]:
- pos[0] is the x-coordinate;
- pos[1] is the y-coordinate;
- pos[2] is the z-coordinate;
必须通过#include命令将头文件“udf.h”包含在程序顶部;
F_PROFILE宏使用所需的算术函数将速度分量应用于面F。

STEP03:在 Fluent 中编译(解释)代码

STEP04:通过 Fluent GUI 连接代码
打开要应用UDF的曲面的边界条件面板;
在下拉列表中从常数切换到udf x_velography;
宏名称是UDF代码中DEFINE_PROFILE的第一个参数。

STEP05:运行计算
可以在“运行计算”面板中更改配置文件更新间隔(默认值为1);
此设置控制UDF配置文件的更新频率(迭代或时间步长,如果不稳定)。

STEP06:检验结果
左图显示了通过二维弯头的速度场;
右图显示了入口处的速度矢量。请注意所施加的抛物线速度分布。

本期内容我们学习了UDF的C语言基本知识内容,希望能激起大家对编程自定义的兴趣!请持续期待我们之后的UDF学习内容更新哦!
来源:艾羽科技