大神揭秘:Fluent自定义函数竟不是指UDF!!!在下领教了!
导语:在CFD实际仿真工程中,边界或区域运动并不是静止或匀速的,尤其是涉及到动网格技术;并且物理场分布往往也是非均匀的,如飞机大气飞行的外界温度变化。因此,我们需要通过自定义函数来定义边界条件和区域条件,从而解决上述问题,实现更符合实际的仿真过程。那么,Fluent的自定义函数方法有哪些呢?关于自定义函数问题又有哪些经验可以借鉴呢?
接下来,一起学习Fluent的自定义函数方法!汲取CFD大神的智慧精华,高效掌握CFD模拟中所使用自定义函数的使用技巧,提高仿真建模的效率和可靠性。立即行动,开启你的CFD成功之旅!
01. 自定义函数的定义与重要性
与编程语言的自定义函数不同,Fluent的自定义函数更侧重于:按照我们的需求来定义边界或区域的运动方式,温度分布和加载实验数据等,从而实现更符合实际工程仿真过程,如叶片旋转由慢到快,进口处风速使用实验所测得的数据等。
实现Fluent自定义函数方法不是只有UDF用户自定义函数这一种方法(需要一定的C语言基础),还有其他两种较为简单的方法(不需要编程基础),即Proflie文件和Expression 表达式。
02. Profile文件
首先是Profile文件,一般称为数据表文件或运动相关的分布文件,文件后缀为.csv或.prof。Profile文件主要用于将实验、第三方软件等其他数据源的物理场分布数据传递给Fluent,作为条件计算,也可以按定义边界和区域域的运动方式(下图为Profile的简单语法介绍)。

下面介绍一下Profile文件在Fluent如何设置:
在Fluent界面上方菜单栏的File-->Profile…-->选择.csv或.prof文件。左侧结构树的Result—>Plots Profile Data进行查看变量数据。注意:若加载失败,则不会出现Profile Data选项。
需要设置的边界或区域,选择“udf/profile”即可应用Profile文件变量数据即可。

注意:Fluent在调用时,一般使用Fluent默认的单位制。在导入和应用Profile文件数据之前,一定要确认单位制信息,避免因为单位制导致设置错误。03. Expression表达式
Expression表达式主要用于简单的自定义函数,如数学计算(四则运算、指数运算、三角函数等)和逻辑运算(IF、AND、OR等逻辑条件)等。Expression还是Fluent内置的功能,兼容性强,直接存储在CAS文件中。容易掌握,使用方式类似Excel函数。下面介绍一下Profile文件在Fluent如何设置:(1)创建Expression表达式
左侧结构树的Setup-->NamedExpression-->右击New建立表达式。在弹出的界面上,输入或自定义函数,并对函数进行命名。
Expression的语法学习难度,跟Excel函数差不多,不需要编程基础。但是,在编写过程中,一定要注意单位的统一,即量纲的统一。
下面以叶片实现sin(2πt)转速为例(其中t为瞬态计算的时间变量),简单介绍一下Expression表达式的编写流程:输入表达式名称speed和输入或自定义函数(Expression表达式的PI代表,*代表乘号),即sin(2*PI*t)。
去除所有变量的量纲:时间变量t的量纲是s(秒),则在t后面加上*1[s^-1],相当于除以s(秒),即sin(2*PI*t*1[s^-1])。
- 末尾加上自定义函数变量的量纲(转速的量纲rad/s):末尾直接加上*1[rad/s],即sin(2*PI*t*1[s^-1])*1[rad/s]。

(3)使用Expression表达式
需要设置的边界或区域,选择“expression”即可应用Expression变量数据即可。
04. UDF用户自定义函数
UDF(User-defined functions)用户自定义函数,使用C语言来编写,需要有一定的C语言基础;但是不必过于深入,只需要了解基本的格式和语法结构即可。它是Fluent封装好的可以传递给求解器的函数,主要由各种宏组成。通俗讲,UDF就是Fluent已经给用户起好了自定义函数的名字了,用户达到什么样的目的,使用相对应的宏就行。在Fluent中,UDF按运行计算类型分为两种,即解释型UDF和编译型UDF;其中编译型UDF适用于大多数仿真工程。下面简单讲讲编译型UDF在Fluent中如何设置和使用,详细语法不多介绍(有需要深入学习UDF的同学,请点击下方链接自行购买学习):(1)配置好Fluent的C语言编译环境,编写C语言文件
注意:第一次配置好C语言环境后,以后就不需要进行环境配置了。(2)在Fluent进行编译UDF
菜单栏的User-Define-->Functions --> Compile-->点击Add选择c文件--点击Build进行编译-->点击Load进行加载。

(3)使用UDF变量数据
需要设置的边界或体积域,选择“udf/profile”即可应用UDF变量数据即可。

05. 自定义函数的一些个人经验
因此,Fluent的3种自定义函数方法,若从难度上看:Profile < Expression< UDF;若从应用范围看:Profile< Expression < UDF。并不说UDF应用范围大,可以适用任何场景,实际仿真工程都用UDF,还要考虑实际仿真过程中时间的成本。对于某些特定的仿真工程,使用UDF来自定义函数并不是明智之举。这里总结一下3种自定义函数方法应用场景:
(1) 加载实验数据进行仿真,优先考虑Profile文件的自定义函数方法。
(2) 简单的自定义函数,如数学计算(四则运算、指数运算、三角函数等)和逻辑运算(IF、AND、OR等逻辑条件)等,优先考虑Expression自定义函数方法。
(3) 除(1)(2)两点外,一般考虑UDF的自定义函数方法。
