吾生有涯 学海无涯
析模有界 知识无界

Fluent UDF|EX01 边界定义

本案例演示利用UDF宏DEFINE_PROFILE定义与坐标相关的边界条件。本案例极其基础,主要目的为熟悉Fluent UDF的编写、编译及加载过程。

1 模型描述

计算模型如下图所示。

二维计算模型,入口速度0.01 m/s,温度300 K,出口为压力出口。顶部壁面温度分布与x坐标相关,其函数关系为:

模型与问题都不复杂,这里的需要解决的是利用UDF定义温度的分布。

注:

Fluent提供了三种方法用于处理这种具有函数分布规律的边界条件:Profile文件、UDF以及表达式。Profile文件非常适合于处理有限数量的离散数据,其采用插值方式将离散数据点处理为函数分布;表达式功能是比较新的功能,可以在Fluent中直接将边界条件表示为连续的函数关系;UDF更为灵活,其不仅可以处理离散的数据,还可以直接表达连续的函数关系。

2 准备UDF

UDF文件通常为c文件或cpp文件。可以采用任何文本编辑器编写UDF代码,推荐使用VS Code与sublime txt。目前Fluent 2020R2版本已经内置了编译器,因此UDF编译不再需要额外安装Visual Studio软件。

DEFINE_PROFILE宏主要用于指定边界条件,该UDF宏的详细描述位于UDF手册的2.3.28节。该UDF形式为:

DEFINE_PROFILE (name, t, i)

其中,name为宏名,需要用户提供;t与i均为求解器传递参数,一般情况下不需要修改。若对此宏的写法不熟悉的话,建议在UDF手册中案例代码的基础上进行修改。

本案例涉及的UDF如下所示。

#include "udf.h"DEFINE_PROFILE(temp_wall_profile, t,i){    real x[ND_ND];    face_t f;    begin_f_loop(f,t)    {        F_CENTROID(x,f,t);        F_PROFILE(f,t,i) = -3200*x[0]*x[0]+1600*x[0]+300;    }    end_f_loop(f,t)}

对于上面的代码:

  1. 所有的UDF代码都必须包含udf.h头文件,建议将包含该头文件的语句#include "udf.h"放在源代码的第一行
  2. 第二行中的temp_wall_profile为宏名,可以为任何名称,但需要满足c语言的函数名命名规范
  3. ND_ND为UDF内置宏常数,在二维模型中ND_ND的值为2,在三维模型中该值为3。x[ND_ND]为一个数组
  4. begin_f_loop…end_f_loop为循环宏,其在边界面上进行循环,注意宏标识符中的f标识的是面,同理还有begin_c_loop宏标识在网格单元上进行循环
  5. F_CENTROID宏用于获取网格面中心点坐标,这里传入x数组作为参数,返回的坐标值会存入到x数组中。注意x[0]得到的是x坐标,x[1]得到的是y坐标,若为三维模型,x[2]将得到z坐标
  6. F_PROFILE宏将值返回给Fluent求解器,这里定义了一个函数表达式

将上面的代码写到一个文本文件中,保存为文件temp_wall.c

本案例中的UDF可以使用编译或解释的方式运行。一般情况下编译UDF运行效率更高,但编译依赖于Fluent版本;解释型UDF不依赖于版本,但运行效率更低,通常建议调用频率高或计算开销大的代码采用编译方式运行。

3 Fluent设置

  • 启动Fluent。若为2020R2之前的Fluent版本,进入Environment选项卡,激活选项Steup Compilation Environment for UDF并指定udf.bat文件路径。确保在udf.bat文件中指定了Visual Studio的安装路径

注:

若使用Fluent 2020R2版本,则无需使用udf.bat指定编译环境。

3.1 读取网格

  • 利用菜单File → Read → Mesh…读取网格文件channel.msh

3.2 编译UDF文件

  • 右键选择节点User Defined Functions,点击菜单项**Compiled…**打开文件编译对话框
  • 如下图所示顺序编译UDF文件
    • 点击Add…按钮打开文件对话框添加UDF源文件temp_wall.c
    • 勾选选项Use Built-in Compiler
    • 点击按钮Build编译代码
    • 代码编译完毕后点击按钮Load加载UDF宏

注:

选项Use Built-In Compiler为2020R2版本新增功能。

UDF加载成功后TUI控制台窗口如下图所示。

  • 若想要修改UDF代码重新编译,需要右键选择节点User Defined Functions,点击菜单项**Manage…**打开设置对话框
  • 如下图所示选中UDF列表项,点击按钮Unload卸载UDF,并重复之前的步骤重新编译UDF

3.3 其他设置

  • 激活能量方程

注:

案例UDF指定是温度边界,因此需要激活能量方程。

  • 采用层流计算。这里根据案例的实际情况选择
  • 指定入口速度0.01 m/s
  • 合并计算区域(这一步不是必须的)
  • 合并壁面边界(这一步非必须)
  • 指定壁面边界条件
    • 指定边界类型为Temperature
    • 指定边界条件为udf temp_wall_profile::libudf
  • 指定迭代计算参数
  • 温度分布如下图所示
  • 查看顶部壁面的温度分布
  • 温度分布如下图所示,可以看到与UDF所描述的函数是相符的

相关模型文件下载。

本篇文章来源于微信公众号: CFD之道

赞(5) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《Fluent UDF|EX01 边界定义》
文章链接:https://www.topcfd.cn/11716/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册