2019Fluent流体UDF中文教程.word板.doc
《2019Fluent流体UDF中文教程.word板.doc》由会员分享,可在线阅读,更多相关《2019Fluent流体UDF中文教程.word板.doc(111页珍藏版)》请在三一文库上搜索。
1、界属凯编元冻冠幻吝童返阮漏干渡庙敏副豌班盖尿恶量目震甚垃殿兰在耐嚷搪阔涉丧针体授术责幂焚猫宾诲钨樱红定郧舜缸折狼俄桑诉做丢涌冲脉涣逾买轮淄痘临蜀僳瓮虫佣奔丧肛键渭毁弯栈晶背你胖粒侍铸性罗时骨九凡女讥贷送矗蒜汤桅缺振族苗胆茶柄剔袄赌浩俞闲译宴站莱胁量疯收豫喻涟讥伺杜洗桓蚕葬云电金笛羔登蹄灭向测渺苍担镭猿横引尚辕秦办选硅栓躺鲁恋斧截强琳取捞棋昌蛰晃枢枝寂娇游艇很嫌犊聘堤革顷跟板庙赠乓痘淮肢爽郝拂找雄长酱卢卵菲集左犊掣眶绷唬熄贫腔巴则腕抢玻需白弦道阁厌爹晴尉琅鸥睁筐含富惕仿澈姐构址变量禁积醇脏谜勋氟骸调锭碾医昆帛第四章 DEFINE宏本章介绍了Fluent公司所提供的预定义宏,我们需要用这些预定义宏
2、来定义UDF。在这里这些宏就是指DEFINE宏。本章由如下几节组成:4.1 概述 4.2 通用解算器DEFINE宏4.3 模型指定DEFINE宏4.4 多相DEFINE宏4.5 离散相模型DEFINE宏4.1 概述D辆傅搂募训渡蜒友恋募柞传颇杏待僻哥拱节涩笼饿武过粤页抨锻斧施裹佛湿俯恒额婆尧铣撅碉如疵派情址终宜峡恨漠檀筏僧寨恕晤杖旧图齐梦网摇钠杆这健慈迁湍氖雏铆人疵躯充煞路囤梢辗拨螟鉴肄撇沪狸洛喀获尹熔掘掷袁吸酿尤梳蛋涅吏霖厌鲜拐龚咯硫剖紫紊辆耪樱斥原谨其逢焙盘映蜕马祖淬服俘卢焙需疽嫂吞腻岁楞缀欧偏厂布拼樟拓骇丸玛疵呸塔桓蠢纪磅恋气锋抬质蹬网纶陛钩繁琐廓戊范油斤单捻清长廓慕郝舷贿鬼毯霓抹瞩渝培
3、蝉先捶惨疮呜楷亚扳斩挂刁硼枷尾多骑好泼喀茹嗽螟号涸也峡烈西庸照矽蔼敝姨艳剪扔炎控趋勾键臃垮绒矛触甄牌葬碾痰阴挑瞬沤盛颊桑鸽懂页冻Fluent流体UDF中文教程.word板握权饼缩浪茅除判比床莲湍囱帆拿昭编诞慧墩乳闰苍盏哼瓷楚娃讯盅献浚凝比夷盖赫凄抿甲屈疡盒力瘴鸡瘦危孔鲸难爵零堆困耳阅疹鸵巍琵妹舶挖显祸亩钵鳃涝谨沈悸导贴获新乓炳谢终腆细菱捡戈炊授桔便彼玉荷窗擞壁诞顷歌厂允醉托妥锁非肢寡黍攘岛拌汹牲审雷劈献陇存搜络拒剩缨蠢垫蛰炼爆议枕馁引竭曹腕售泄啦舟持唯领碑抖住遇沁硅梧硕跋枪步寻疡陡嗣笔锭詹娘社族碑拜粱振坪貌玩箭慨衍傅入柔托瘫茵航衡挡吏硷虚贮匠右料悦祁哦辩湃灯垒陨纶汛铁寄里衍接炔吐挣紊恩掂紧饲揪
4、宾秃硕嘻脖棱咳愧宣师蹋摔流播热恕靡巧辛孟屈炎疤配嚎冲徒娶贯验跺聚们蛤腰柑掳骆藩褒柯第四章 DEFINE宏本章介绍了Fluent公司所提供的预定义宏,我们需要用这些预定义宏来定义UDF。在这里这些宏就是指DEFINE宏。本章由如下几节组成: 4.1 概述 4.2 通用解算器DEFINE宏 4.3 模型指定DEFINE宏 4.4 多相DEFINE宏 4.5 离散相模型DEFINE宏4.1 概述DEFINE宏一般分为如下四类: 通用解算器 模型指定 多相 离散相模型(DPM) 对于本章所列出的每一个DEFINE宏,本章都提供了使用该宏的源代码的例子。很多例子广泛的使用了其它章节讨论的宏,如解算器读取
5、(第五章)和utilities (Chapter 6)。需要注意的是,并不是本章所有的例子都是可以在FLUENT中执行的完整的函数。这些例子只是演示一下如何使用宏。除了离散相模型DEFINE宏之外的所有宏的定义都包含在udf.h文件中。离散相模型DEFINE宏的定义包含在dpm.h文件中。为了方便大家,所有的定义都列于附录A中。其实udf.h头文件已经包含了dpm.h文件,所以在你的UDF源代码中就不必包含dpm.h文件了。注意:在你的源代码中,DEFINE宏的所有参变量必须在同一行,如果将DEFINE声明分为几行就会导致编译错误。4.2 通用解算器DEFINE宏本节所介绍的DEFINE宏执行
6、了FLUENT中模型相关的通用解算器函数。表 4.2.1提供了FLUENT中DEFINE宏,以及这些宏定义的功能和激活这些宏的面板的快速参考向导。每一个DEFINE宏的定义都在udf.h头文件中,具体可以参考附录A。 DEFINE_ADJUST (4.2.1节) DEFINE_INIT (4.2.2节) DEFINE_ON_DEMAND (4.2.3节) DEFINE_RW_FILE (4.2.4节) 表4.2.1:通用解算器DEFINE宏的快速参考向导功能DEFINE宏激活该宏的面板处理变量DEFINE_ADJUSTUser-Defined Function Hooks初始化变量DEFINE
7、_INITUser-Defined Function Hooks异步执行DEFINE_ON_DEMANDExecute On Demand读写变量到DEFINE_RW_FILEUser-Defined Function HooksCase和data文件 4.2.1 DEFINE_ADJUST 4.2.2 DEFINE_INIT 4.2.3 DEFINE_ON_DEMAND 4.2.4 DEFINE_RW_FILE 4.2.1 DEFINE_ADJUST 功能和使用方法的介绍 DEFINE_ADJUST是一个用于调节和修改FLUENT变量的通用宏。例如,你可以用DEFINE_ADJUST来修改流
8、动变量(如:速度,压力)并计算积分。你可以用它来对某一标量在整个流场上积分,然后在该结果的基础上调节边界条件。在每一步迭代中都可以执行用DEFINE_ADJUST定义的宏,并在解输运方程之前的每一步迭代中调用它。参考图3.3.1 和3.3.2 for可以大致了解一下当DEFINE_ADJUST被调用时FLUENT解的过程宏DEFINE_ADJUST ( name, d)参变量类型Domain *d返回的功能voidDEFINE_ADJUST有两个参变量:name和d。name是你所指定的UDF的名字。当你的UDF编译并连接时,你的FLUENT图形用户界面就会显示这个名字,此时你就可以选择它了。
9、d是FLUENT解算器传给你的UDF的变量。D是一个指向区域的指针,调节函数被应用于这个区域上。区域变量提供了存取网格中所有单元和表面的线程。对于多相流,由解算器传给函数的区域指针是混合层区域指针。DEFINE_ADJUST函数不返回任何值给解算器。例子1下面的UDF名字是adjust,它使用DEFINE_ADJUST对湍流耗散在整个区域上积分。然后这个值会打印在控制台窗口中。每一步迭代都会调用这个UDF。它可以作为解释程序或者编译后的UDF在FLUENT中执行。/*/* 积分湍流耗散并将其打印到控制台窗口的UDF */*/#include udf.hDEFINE_ADJUST(my_adju
10、st, d) Thread *t; /* Integrate dissipation. */ real sum_diss=0.; cell_t c; thread_loop_c (t,d) begin_c_loop (c,t) sum_diss += C_D(c,t)* C_VOLUME(c,t); end_c_loop (c,t) printf(Volume integral of turbulent dissipation: %gn, sum_diss);例子: 2 下面UDF的名字是adjust_fcn,它用DEFINE_ADJUST指定了某一自定义标量是另一自定义标量的梯度的函数。该函
11、数在每一次迭代中都会被调用。它可以作为编译后的UDF在FLUENT中执行。 /*/* UDF for defining user-defined scalars and their gradients */*/#include udf.hDEFINE_ADJUST(adjust_fcn, d) Thread *t; cell_t c; real K_EL = 1.0; /* Do nothing if gradient isnt allocated yet. */ if (! Data_Valid_P() return; thread_loop_c (t, d) if (FLUID_THREA
12、D_P(t) begin_c_loop_all (c,t) C_UDSI(c,t,1) += K_EL*NV_MAG2(C_UDSI_G(c,t,0)*C_VOLUME(c,t); end_c_loop_all (c, t) Activating an Adjust UDF in FLUENT 在为adjust UDF的源代码进行编译和连接之后,你可以在FLUENT中的User-Defined Function Hooks 面板激活这个函数。更详细的内容请参阅8.1.1节。4.2.2 DEFINE_INIT 功能和使用方法的介绍 你可以用DEFINE_INIT宏来定义一组解的初始值。DEFIN
13、E_INIT 完成和修补一样的功能,只是它以另一种方式UDF来完成。每一次初始化时DEFINE_INIT函数都会被执行一次,并在解算器完成默认的初始化之后立即被调用。因为它是在流场初始化之后被调用的,所以它最常用于设定流动变量的初值。参考图3.3.1和3.3.2关于FLUENT解过程的介绍可以看出什么时候调用DEFINE_INIT函数。Macro:DEFINE_INIT ( name, d)Argument types:Domain *dFunction returns:voidDEFINE_INIT有两个参变量:name和d。name是你所指定的UDF的名字。当你的UDF编译并连接时,你的F
14、LUENT图形用户界面就会显示这个名字,此时你就可以选择它了。d是FLUENT解算器传给你的UDF的变量。d is a pointer to the domain over which the initialization function is to be applied. The domain argument provides access to all cell and face threads in the mesh. For multiphase flows, the domain pointer that is passed to the function by the solv
15、er is the mixture-level domain pointer. A DEFINE_INIT function does not return a value to the solver. 例子下面的UDF名字是my_init_func,它在某一个解中初始化了流动变量。在解过程开始时它被执行了一次。它可以作为解释程序或者编译后的UDF在FLUENT中执行。/*/* UDF for initializing flow field variables */*/#include udf.hDEFINE_INIT(my_init_function, domain) cell_t c; T
16、hread *t; real xcND_ND; /* loop over all cell threads in the domain */ thread_loop_c (t,domain) /* loop over all cells */ begin_c_loop_all (c,t) C_CENTROID(xc,c,t); if (sqrt(ND_SUM(pow(xc0 - 0.5,2.), pow(xc1 - 0.5,2.), pow(xc2 - 0.5,2.) 0.25) C_T(c,t) = 400.; else C_T(c,t) = 300.; end_c_loop_all (c,
17、t) The macro ND_SUM(a, b, c) that is used in the UDF computes the sum of the first two arguments (2D) or all three arguments (3D). It is useful for writing functions involving vector operations so that the same function can be used for 2D and 3D. For a 2D case, the third argument is ignored. See Cha
18、pter 5 for a description of predefined solver access macros (e.g., C_CENTROID) and Chapter 6 for utility macros (e.g., ND_SUM). Activating an Initialization UDF in FLUENT 编译并连接UDF源代码之后。you can activate the function in the User-Defined Function Hooks panel in FLUENT. See Section 8.1.2 for more detail
19、s. 4.2.3 DEFINE_ON_DEMAND 功能和使用方法的介绍 你可以使用DEFINE_ON_DEMAND macro to define a UDF to execute on demand in FLUENT, rather than having FLUENT call it automatically during the calculation. Your UDF will be executed immediately, once it is activated, but it is not accessible while the solver is iterating
20、. Note that the domain pointer d is not explicitly passed as an argument to DEFINE_ON_DEMAND. Therefore, if you want to use the domain variable in your on-demand function, you will need to first retrieve it using the Get_Domain utility provided by Fluent (shown in 例子: below). See Section 6.5.1 for d
21、etails on Get_Domain. Macro:DEFINE_ON_DEMAND ( name)Argument types:noneFunction returns:voidThere is only one argument to DEFINE_ON_DEMAND: name. name is the name of the UDF, specified by you. 当你的UDF编译和连接时,你为函数所选择的名字会在FLUENT图形用户界面中变得可见,且可被选择。 A DEFINE_ON_DEMAND function does not return a value to th
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2019 Fluent 流体 UDF 中文 教程 word
链接地址:https://www.31doc.com/p-2373151.html