当前位置: 首页 > article >正文

Fluent UDF教程——壁面温度设定,实现动态高斯热源的施加,DEFINE_PROFILE宏讲解

一、背景介绍

在使用FLUENT软件进行流体仿真的时候,有时设定的壁面热源并不是恒定温度或是恒定热流密度,而是随着时间变化、随着空间变化、甚至是互相影响随着压力变化。

例如,使用 FLUENT 模拟激光热源扫过一指定平面。首先,激光热源的热流密度不是均匀分布的(可以是类高斯分布、双椭球分布、环形热源分布等);其次,热源扫过平面,加热的区域在空间上是变化的。针对这种情景,我们不能简单的将受热面定义为恒定的热流密度,需要借助 UDF 指定热壁面,以此来模拟热源的扫描加热。下面以一个实际应用的例子为介绍,讲解如何使用DEFINE_PROFILE宏编写 UDF 施加动态热源。

案例介绍:

要模拟激光在基体上,沿着xoz平面的x轴方向扫描加热,以便分析其温度场,示意图如下:

 选用的热源模型为高斯热源模型,其热流密度方程可以表示为:

二、DEFINE_PROFILE宏

2.1   DEFINE_PROFILE宏简介

宏形式:        DEFINE_PROFILE(name, t, i)

                        symbol name: 宏名称,这个定义UDF的名称

                        thread *t: 边界指针,指向所选定的边界

                        int i : 定义的变量索引

        DEFINE_PROFILE宏形式如上所示,一共由三个参数组成,具体的含义如上所诉述。

宏功能:

        1. 定义边界速度、压力、温度、湍动能、质量流量;

        2. 定义组分质量分数;

        3. 壁面热条件(温度、热流、热产生率、换热系数、外部发射率);

        4. 计算区域孔隙度

        5. 计算区域源项;

由上可知,DEFINE_PROFILE 宏可以实现壁面热条件的设定,接下来介绍一下UDF如何编写,以及怎么根据自己的实际要求进行改写。

2.2   移动高斯热源UDF

先上总的 UDF 代码

#include"udf.h"
DEFINE_PROFILE(heat,t,i){real xc[ND_ND];real x,y,z,P,A,R,v,pi;face_t f;pi=3.141592;A=0.2;		//利用率P=1000;		//激光功率R=0.001;	//光斑半径v=0.005;	//扫描速度begin_f_loop(f,t);{real time=RP_Get_Real(“flow-time”);	    //获取仿真时间F_CENTROID(xc,f,t);			            //获取坐标x=xc[0];y=xc[1];z=xc[2];F_PROFILE(f,t,i)=(A*2*P)/(pi*R*R)*exp(-2*(pow(x-v*time,2)+z*z)/(R*R));}end_f_loop(f,t)
}

接下来逐一细致讲解,以便能根据自己的所需的热源模型,进行改写:

1. 整体框架

热源施加的UDF基本结构框架如下,简单的说,我们选定某一个壁面作为热源,在每一轮迭代计算中,FLUENT都会运行UDF中的程序,对所选的壁面上每一个单元逐一赋值。

#include"udf.h"
DEFINE_PROFILE(heat,t,i){/*-----申明变量及赋值---------*//*---------------------------*//*---------------------------*/face_t f;   //定义一个面,将通过循环对这个面上的单元逐一赋值 //逐一循环,对指定壁面上的单元逐一赋值 begin_f_loop(f,t);{F_PROFILE(f,t,i)=  对该单元赋值 ;}end_f_loop(f,t)
}

2. 申明变量

UDF 中声明变量的形式与 C语言相近,可以使用 int、long等格式声明变量的类型,然而我们一般都是使用 real ,real 是FLUENT所特有的一种变量声明,在单精度计算时,变量就为单精度(32位,7位小数位精度),在双精度计算时,变量会自动视为双精度(64位,15位小数位精度)。

比分我们要创建一个变量 v,定义为扫描速度,并设定为6mm/s,我们可以这样子书写:

注:FLUENT的UDF使用的单位为国际单位,即千克、米、秒;即时在FLUENT单位选择为毫米,编写UDF仍需使用国际标准单位。

real v = 0.006;

声明数组也与C语言类似:

real xc[3];
real xc[ND_ND];    // ND_ND为维度,三维模型下 ND_ND值为3;二维模型下 ND_ND值为2

3. 参数访问

能量密度的方程与位置、时间相关,以下介绍获得一些参见参数的方法:

RP_Get_Real(“flow-time”);        //获取当前时间
F_CENTROID(xc,f,t);              //获得当前单元中心的坐标,将值存放在数组xc中
F_U(f,t);                        //获得u方向上的速度
F_V(f,t);                        //获得v方向上的速度
F_W(f,t);                        //获得w方向上的速度
F_T(f,t);                        //获得当前面上的温度
F_H(f,t);                        //获得当前面上的焓

2.3   编写热源UDF例程

假设受热面位于xoy平面,在不同情况下,热源UDF编写如下:

1. 中间圆形区域为均匀热源

#include"udf.h"
DEFINE_PROFILE(heat,t,i){real q = 500000;    //定义热流密度real r = 0.01;      //定义圆形区域半径real xc[ND_ND];     //定义一个数组,存放坐标信息 face_t f; begin_f_loop(f,t);{F_CENTROID(xc,f,t);			     //获取坐标x=xc[0];y=xc[1];if(x*x+y*y < r*r)F_PROFILE(f,t,i) = q;elseF_PROFILE(f,t,i) = 0;}end_f_loop(f,t)
}

2. 高斯热源静止不动

#include"udf.h"
DEFINE_PROFILE(heat,t,i){real xc[ND_ND];real x,y,P,A,R,v,pi;face_t f;pi=3.141592;A=0.2;		    //利用率P=1000;		    //激光功率R=0.001;	    //光斑半径v=0.005;	    //扫描速度x_0 = 0.01;     //热源中心坐标y_0 = 0.05;     //热源中心坐标begin_f_loop(f,t);{real time=RP_Get_Real(“flow-time”);	    //获取仿真时间F_CENTROID(xc,f,t);			            //获取坐标x=xc[0];y=xc[1];F_PROFILE(f,t,i)=(A*2*P)/(pi*R*R)*exp(-2*(pow(x-x_0,2)+pow(y-y_0,2))/(R*R));}end_f_loop(f,t)
}

参考文献:

[1] 罗佳勤,朱刚贤,李加强,谢光耀,王丽芳,石世宏.激光熔覆熔池温度场及流场数值模拟研究进展[J/OL].表面技术:1-19[2022-10-09].http://kns.cnki.net/kcms/detail/50.1083.TG.20220420.1935.012.html

[2] 胡坤. ANSYS Fluent二次开发指南[M]. 化学工业出版社

http://www.lryc.cn/news/2413340.html

相关文章:

  • nagios 配置详解
  • FireFox2和FireFox3共存解决方案(附完整图解)
  • 内网DNS服务选型和Bind9安装配置
  • 电视直播录播系统,多路电视直播录播解决方案
  • Android——直播推流SDK
  • 华为鸿蒙2.0系统官网在哪?鸿蒙2.0系统申请入口及适配机型图文介绍
  • (转)用inner join 联结access多个表的用法
  • linux更换域名全站301,网站换域名必看,全站301重定向代码分享
  • 2014台州学院ACM集训队寒假练习赛2
  • AF_INET和PF_INET的细微不同
  • github emoji 表情列表
  • QQFM 中转站(囧转站)OOXX V1.1 by wy811007 (附SkinH_Net的使用) 程序失效 更新1.3版 未发布
  • C语言学习(小白)
  • 中华吸血鬼分析
  • Android入门-新手如何成功创建一个Android小应用(1)
  • 电商系统架构设计浅析
  • 【HTML5期末大作业】犬夜叉动漫网站设计--动漫网站设计
  • 思科路由器忘记密码怎么办?
  • 《放下就是快乐》之体会一
  • NetworkLocation for WES7
  • 国内最大的两个网盘(rayfile和纳米盘)神秘资源下载搜索技巧
  • google发布IE插件Chrome Frame(google浏览器框架)正式版
  • 科创50大盘指数怎么买?
  • 计算机键盘练习,电脑键盘指法练习
  • MyEclipse简单配置教程及配置Tomcat
  • Python 有什么作用?
  • 10款神级安卓App,99%的人都不知道!
  • 解决linux下curl扩展的方法
  • 2015年维多利亚的秘密新晋十位天使
  • 仿京东商城html网页源码