用户自定义函数 FLUENT 入门培训.ppt

上传人:牧羊曲112 文档编号:5797596 上传时间:2023-08-21 格式:PPT 页数:23 大小:566KB
返回 下载 相关 举报
用户自定义函数 FLUENT 入门培训.ppt_第1页
第1页 / 共23页
用户自定义函数 FLUENT 入门培训.ppt_第2页
第2页 / 共23页
用户自定义函数 FLUENT 入门培训.ppt_第3页
第3页 / 共23页
用户自定义函数 FLUENT 入门培训.ppt_第4页
第4页 / 共23页
用户自定义函数 FLUENT 入门培训.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《用户自定义函数 FLUENT 入门培训.ppt》由会员分享,可在线阅读,更多相关《用户自定义函数 FLUENT 入门培训.ppt(23页珍藏版)》请在三一办公上搜索。

1、用户自定义函数,FLUENT 入门培训,简 介,什么是用户自定义函数(UDF)?用户自定义函数,或UDF,是用户自编的程序,它可以动态的连接到Fluent求解器上来提高求解器性能。标准C语言的库函数Trigonometric,exponential,control blocks,do-loops,file i/o等。预定义宏通过这些预定义宏,可以获得Fluent求解器得到的数据。为什么要使用UDF?标准界面及功能并不能满足每个用户的需要。定制边界条件,定义材料属性,定义表面和体积反应率,定义FLUENT输运方程中的源项,用户自定义标量输运方程(UDS)中的源项扩散率函数等等。在每次迭代的基础上

2、调节计算值(需要时)UDF的异步执行方案的初始化。,用户介入FLUENT求解器,User-Defined Properties,User-Defined BCs,Segregated,PBCS,Exit Loop,Repeat,Check Convergence,Update Properties,Solve Turbulence Equation(s),Solve Species,Solve Energy,Initialize,Begin Loop,DBCS,Solve Other Transport Equations as required,Solver?,Solve Mass,Mome

3、ntum,Energy,Species,User-defined ADJUST,UDF基础,单元和单元面被组合为一些区域(zones),这些区域规定了计算域(例如,边界条件、源项)在 UDF中,域(zones)用线(threads)来联系。循环宏(looping macro)对线上的所有单元进行操作。例如:用面循环宏访问面域 3(zone 3)(入口)上的563个面。每个面的位置都通过对空间上的设置来计算表示在用户操作界面中,可以自动调用UDF中定义的求解器变量所有的求解器变量,都使用SI单位。,运行UDF,在FLUENT中运行UDF基础步骤如下:创建包涵UDF源代码的文件打开fluent,读

4、入case/data文件解释或者编译UDF在FLUENT中激活UDF在计算平台(Iterate panel)中设置UDF的更新频率开始计算,例题抛物线入流速度条件,二维弯管中,我们来定义一个抛物线入流速度条件x 方向上的速度用下面公式定义,第一步 准备源代码,函数inlet_x_velocity 通过 DEFINE_PROFILE宏来定义所有UDF中的宏都使用DEFINE_ 开头。inlet_x_velocity 将会在用户操作界面中选择定义。在DEFINE_PROFILE中,通过thread和nv分别对域和变量定义。宏 begin_f_loop 能循环指向线上所有的面 fF_CENTROID

5、 宏表示单元x方向的向量F_PROFILE 宏代表面 f 上的速度分量,#include udf.h“DEFINE_PROFILE(inlet_x_velocity,thread,nv)float x3;/*Position vector*/float y;face_t f;begin_f_loop(f,thread)F_CENTROID(x,f,thread);y=x1;F_PROFILE(f,thread,nv)=20.*(1.-y*y/(.0745*.0745);end_f_loop(f,thread),第三步 解释或编译UDF,解释 UDF把UDF源代码文件输入 Source File

6、 Name列表中。点击 Interpret。FLUENT控制面板中将会显示汇编语言代码。,编译 UDF把UDF源代码文件输入 Source Files 列表中。点击 Build,创建UDF库函数。点击 Load,读取UDF库函数。如果需要还能清除(unload)库函数,Define,User-Defined,Functions,Interpreted,Define,User-Defined,Functions,Compiled,Define,User-Defined,Functions,Manage,比较解释和编译的 UDF,既可以运行时通过读入和解释来调用函数,也可以通过使用FLUENT中的

7、编译器把函数编译到一个公共的函数库。比较解释和编译代码解释解释的程序只是保存在电脑内存中。按“一个接一个”的基本顺序运行代码。优势 不需要第三方编译器。劣势 运行慢,占内存。编译(详细内容请参阅FLUENT用户手册中的介绍)UDF 代码被一次性编译成机器语言(目标文件).高效地运行 UDFs。创建能被求解器链接的函数库。具备很多解释没有的功能,例如并行算法(mixed mode arithmetic)、结构申明(structure references)等。,第四步 激活 UDF,选择要使用UDF的窗口,例子中,我们打开边界条件设置窗口。点击X-Velocity 右边的下拉菜单,把Consta

8、nt 换成UDF函数。,第五步和第六步 运行计算,在Iterate对话框中,可以改变UDF Profile Update Interval 的值(默认值为 1).这个值用来控制UDF更新速度(如果是非定常,还可以是计算步数和计算步长)。运行计算。,例中的数值解,右图显示的是二维弯管中的速度场。下图显示的是入口的速度矢量,注意使用的抛物线函数。,宏,宏是FLUENT定义的函数。UDF通过DEFINE_ 宏定义函数。变量宏可以调用域上变量和单元信息。工具宏具有循环功能,线指示器,向量和数值函数。宏都被定义在头文件中(header file)udf.h 的头文件必须包涵在源代码中。#include“

9、udf.h”头文件必须在有效的工作路径中。一般保存在 Fluent.Inc/src/路径下UDF用户手册中列出了所有经常使用的宏。,Help,More Documentation,DEFINE 宏,任何UDF都必须以DEFINE_ 宏开始:18 个通用解算器宏和 13 个离散相模型宏和多项宏(未列出):,DEFINE_ADJUST(name,domain);通用目标 UDF,每个计算步都被调用DEFINE_INIT(name,domain);初始化计算域变量DEFINE_ON_DEMAND(name);定义“根据需要运行”的函数DEFINE_RW_FILE(name,fp);用户读写case/

10、data文件DEFINE_PROFILE(name,thread,index);defines boundary profiles定义边界条件DEFINE_SOURCE(name,cell,thread,dS,index);defines source terms定义源项DEFINE_HEAT_FLUX(name,face,thread,c0,t0,cid,cir);defines heat flux定义热流通量DEFINE_PROPERTY(name,cell,thread);defines material properties定义材料属性DEFINE_DIFFUSIVITY(name,c

11、ell,thread,index);定义UDS和特殊的差分格式DEFINE_UDS_FLUX(name,face,thread,index);定义UDS通量项DEFINE_UDS_UNSTEADY(name,cell,thread,index,apu,su);定义UDS衰减项DEFINE_SR_RATE(name,face,thread,r,mw,yi,rr);定义面反应系数DEFINE_VR_RATE(name,cell,thread,r,mw,yi,rr,rr_t);定义vol反应系数DEFINE_SCAT_PHASE_FUNC(name,cell,face);defines scatte

12、ring phase function for DOM定义DOM中相散射函数DEFINE_DELTAT(name,domain);定义非定常问题中的时间步长变量DEFINE_TURBULENT_VISCOSITY(name,cell,thread);定义湍流粘性计算方式DEFINE_TURB_PREMIX_SOURCE(name,cell,thread,turbflamespeed,source);定义湍动火焰速度DEFINE_NOX_RATE(name,cell,thread,nox);定义NOx中的产生和消失系数,线和循环工具宏,cell_t c;定义 c 为单元线(cell thread

13、)face_t f;定义 f 为面线(face thread)Thread*t;t定义 t 为线指针Domain*d;d定义 d 为所有线指针thread_loop_c(t,d)循环访问域d中单元线t上的所有单元thread_loop_f(t,d)循环访问域d中面线t上的所有面begin_c_loop(c,ct)end_c_loop(c,ct)循环访问单元线ct上的所有c单元begin_f_loop(f,ft)end_f_loop(f,ft)循环访问面线ft上的所有f面c_face_loop(c,t,n)循环访问线t上的所有面单元cThread*tf=Lookup_Thread(domain,

14、ID);返回域名为ID的线指针ID=THREAD_ID(tf);返回线指针tf指向的域名(ID),cell_t,face_t,Thread,Domain 是 FLUENT UDF 数据结构的一部分,几何和时间宏,C_NNODES(c,t);返回节点/单元C_NFACES(c,t);返回面/单元F_NNODES(f,t);返回节点/面C_CENTROID(x,c,t);返回单元质心坐标于数组x中F_CENTROID(x,f,t);返回表面中心坐标于数组x中F_AREA(A,f,t);返回面向量于数组 A中C_VOLUME(c,t);返回单元体积 C_VOLUME_2D(c,t);返回二维单元体积

15、(轴对称模型)real flow_time();返回实际时间int time_step;返回计算步数RP_Get_Real(“physical-time-step”);返回计算步长,单元变量宏,C_R(c,t);密度C_P(c,t);压力C_U(c,t);U方向速度C_V(c,t);V方向速度C_W(c,t);W方向速度C_T(c,t);温度C_H(c,t);焓C_K(c,t);湍流运动能(k)C_D(c,t);湍流运动能的分散速率()C_O(c,t);确定的分散速率()C_YI(c,t,i);物质质量分数C_UDSI(c,t,i);用户定义的标量C_UDMI(c,t,i);用户定义的存储器C

16、_DUDX(c,t);速度导数C_DUDY(c,t);速度导数C_DUDZ(c,t);速度导数,C_DVDX(c,t);速度导数C_DVDY(c,t);速度导数C_DVDZ(c,t);速度导数C_DWDX(c,t);速度导数C_DWDY(c,t);速度导数C_DWDZ(c,t);速度导数C_MU_L(c,t);层流粘度C_MU_T(c,t);湍流粘度C_MU_EFF(c,t);有效粘度C_K_L(c,t);层流热传导系数C_K_T(c,t);湍流热传导系数C_K_EFF(c,t);有效热传导系数C_CP(c,t);确定的热量C_RGAS(c,t);气体常数C_DIFF_L(c,t);层流物质扩

17、散率C_DIFF_EFF(c,t,i);物质有效扩散率,面变量宏,当使用偏析求解器和显示格式,并且在外界边界条件下,面变量才能发挥功能。F_R(f,t);密度F_P(f,t);压力F_U(f,t);U方向上的速度F_V(f,t);V方向上的速度F_W(f,t);W方向上的速度F_T(f,t);温度F_H(f,t);焓F_K(f,t);湍流运动能F_D(f,t);湍流运动能的分散速率F_O(f,t);确定的湍流运动能分散速率 F_YI(f,t,i);确定的物质质量分数F_UDSI(f,t,i);用户定义的标量F_UDMI(f,t,i);用户定义的存储器F_FLUX(f,t);通过边界面 f的质量

18、流速,其它的UDF声明,UDF除了能定义边界值、源项和材料属性,还能进行如下操作:初始化每次初始化时执行求解条件每步计算时执行通过壁面的热量通过设置热量传递系数,定义靠近流体这边壁面的热量扩散和辐射设置所有的壁面用户自定义的面和体积变化读入写入/读出写出case和data文件读写的顺序必须一样根据需要执行的功能不参与求解器的迭代,用户内存管理,用户能管理的内存多达500个内存变量可以定义UDF的形式是:C_UDMI(cell,thread,index);F_UDMI(face,thread,index);可以进行后处理管理信息都存储在data文件中,Define,User-Defined,Me

19、mory,用户定义的标量,FLUENT 可以处理多达50个用户定义的标量输运方程用户定义的变量数量设置需要使用用户定义的输运方程的域流量方程,FDEFINE_UDS_FLUX(name,face,thread,index)DEFINE_UDS_UNSTEADY(name,cell,thread,index,apu,su)如果需要还可以通过定义不同的用户标量来实现复杂的流量和输运方程例如可以定义流体域中的电磁场。,Define,User-Defined,Scalars,用户定义的标量,同样必须的,用户得定义:源项,扩散率,如果申明需要,还要定义UDF中每个用户标量的扩散率每个用户标量的边界条件确定的流量和值定义为常数或者使用UDF,UDF 技术支持,因为UDF十分复杂,ANSYS并不能保证用户自定义函数解的精确性和稳定性。我们仅能提供如何把UDF和FLEUNT解算器联系起来的指导。另外一些UDF的使用过程,包括概念函数的设计,执行(使用C语言),编译和调试C源代码,执行UDF,和函数方案的确定,将会保留UDF作者的权利。对于复杂工程还有相应的接口。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号