FLUENT流体模拟-UDF-讲解.ppt
《FLUENT流体模拟-UDF-讲解.ppt》由会员分享,可在线阅读,更多相关《FLUENT流体模拟-UDF-讲解.ppt(33页珍藏版)》请在三一办公上搜索。
1、计算流体力学软件Fluent培训UDF基础,概要,FLUENT UDF简介FLUENT 数据结构和宏两个例子UDF 支持,简介,什么是UDF?UDF 是用户自己用C语言写的一个函数,可以和FLUENT动态链接 标准C 函数三角函数,指数,控制块,Do循环,文件读入/输出等预定义宏允许获得流场变量,材料属性,单元几何信息及其他为什么使用 UDFs?标准的界面不能编程模拟所有需求:定制边界条件,源项,反应速率,材料属性等定制物理模型用户提供的模型方程调整函数执行和需求函数初始化,可以使用UDF的位置,UDF 数据结构(1),在UDF中,体域和面域通过Thread数据类型获得Thread 是 FLU
2、ENT 定义的数据类型为了在thread(zone)中获得数据,我们需要提供正确的指针,并使用循环宏获得thread中的每个成员(cell or face),Fluid(cell thread or zone),Boundary(face thread or zone),Domain,Cell,UDF 数据结构(2),cell_t 声明了识别单元的整型数据类型face_t声明了识别面的整型数据类型,TypeVariableMeaning of the declarationDomain*d;d is a pointer to domain threadThread*t;t is a point
3、er to thread cell_t c;c is cell thread variableface_t f;f is a face thread variableNode*node;node is a pointer to a node.,UDF中的循环宏,几个经常用到的循环宏为:对域d中所有单元thread循环:thread_loop_c(ct,d)对域d中所有面thread循环:thread_loop_f(ft,d)对thread t中所有单元循环:begin_c_loop(c,t)end_c_loop(c,t)对面thread中所有面循环begin_f_loop(f,f_thread
4、)end_f_loop(f,f_thread),d:a domain pointer ct,t:a cell thread pointerft,f_thread:a face thread pointerc:a cell thread variablef:a face thread variable,例子 抛物线分布的速度入口,在二维弯管入口施加抛物线分布的速度x 方向的速度定义为需要通过宏获得入口的中心点,通过另外一个宏赋予速度条件,第1步 准备源代码,DEFINE_PROFILE 宏允许定义x_velocity函数所有的UDFs 以 DEFINE_ 宏开始x_velocity 将在 GUI
5、中出现thread 和 nv DEFINE_PROFILE 宏的参数,分别用来识别域和变量begin_f_loop宏通过thread指针,对所有的面f循环 F_CENTROID宏赋单元位置向量给 x F_PROFILE 宏在面 f上施加速度分量代码以文本文件保存inlet_bc.c,#include udf.hDEFINE_PROFILE(x_velocity,thread,nv)float x3;/*an array for the coordinates*/float y;face_t f;/*f is a face thread index*/begin_f_loop(f,thread)
6、F_CENTROID(x,f,thread);y=x1;F_PROFILE(f,thread,nv)=20.*(1.-y*y/(.0745*.0745);end_f_loop(f,thread),Header file“udf.h”must be included at the topof the program by the#include command,第 2 步 解释或编译 UDF,编译UDF把 UDF 源码加入到源文件列表中点击 Build进行编译和链接如果没有错误,点击Load读入库文件如需要,也可以卸载库文件/define/user-defined/functions/manag
7、e,解释UDF把 UDF 源码加入到源文件列表中点击 InterpretFLUENT 窗口会出现语言如果没有错误,点击 Close,Define,User-Defined,Functions,Compiled,Define,User-Defined,Functions,Interpreted,解释 vs.编译,用户函数可以在运行时读入并解释,也可以编译形成共享库文件并和FLUENT链接解释 vs.编译解释解释器是占用内存的一个大型程序通过逐行即时执行代码优势 不需要第三方编译器劣势 解释过程慢,且占用内存编译UDF 代码一次转换为机器语言运行效率高.创建共享库,和其他求解器链接克服解释器的缺陷
8、只有在没安装C编译器时使用解释方式,第3 步 在 FLUENT GUI中hook UDF,打开边界条件面板,选择你要施加UDF的边界把 Constant 改为 udf x_velocity宏的名字为 DEFINE_PROFILE 中第一个参数,第4步 运行,可以在运行窗口中改变速度分布的更新间隔(默认为1)这个设置控制了流场多久(迭代或时间步)更新一次运行 calculation,结果,左图为速度矢量图右图为入口的速度矢量图,注意速度分布是抛物线型的,其他 UDF Hooks,除了边界条件、源项、材料属性外,UDF 还可用于初始化每次初始化执行一次求解调整每次迭代执行一次壁面热流量以传热系数方
9、式定义流体侧的扩散和辐射热流量应用于所有壁面用户定义表面反应或体积反应Case/data 文件的读写读入顺序必须和写出顺序一致Execute-on-Demand 功能不参与求解迭代,Define,User-Defined,Function Hooks,例 2 定制初始化,在球内设定初始温度600 K 球中心点位于(0.5,0.5,0.5),半径为 0.25,其余区域为300 K域指针通过变量传递到UDFthread_loop_c 宏用来获得所有单元threads(zones),begin_c_loop 宏获得每个单元thread中的单元,#include udf.h“DEFINE_INIT(m
10、y_init_function,domain)cell_t c;Thread*ct;real xcND_ND;thread_loop_c(ct,domain)begin_c_loop(c,ct)C_CENTROID(xc,c,ct);if(sqrt(ND_SUM(pow(xc0-0.5,2.),pow(xc1-0.5,2.),pow(xc2-0.5,2.)0.25)C_T(c,ct)=600.;else C_T(c,ct)=300.;end_c_loop(c,ct),DEFINE 宏,DEFINE 宏的例子,DEFINE_ADJUST(name,domain);general purpose
11、UDF called every iterationDEFINE_INIT(name,domain);UDF used to initialize field variablesDEFINE_ON_DEMAND(name);an execute-on-demand functionDEFINE_RW_FILE(name,fp);customize reads/writes to case/data filesDEFINE_PROFILE(name,thread,index);boundary profilesDEFINE_SOURCE(name,cell,thread,dS,index);eq
12、uation source termsDEFINE_HEAT_FLUX(name,face,thread,c0,t0,cid,cir);heat fluxDEFINE_PROPERTY(name,cell,thread);material propertiesDEFINE_DIFFUSIVITY(name,cell,thread,index);UDS and species diffusivitiesDEFINE_UDS_FLUX(name,face,thread,index);defines UDS flux termsDEFINE_UDS_UNSTEADY(name,cell,thread
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FLUENT 流体 模拟 UDF 讲解
链接地址:https://www.31ppt.com/p-5431182.html