ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:32.57KB ,
资源ID:25325867      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25325867.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(UDF总结.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

UDF总结.docx

1、UDF总结UDF使用技巧1、查找相应的函数的时候,可以现在word里面找到相应的函数名字,然后依次去中文帮助文档、英文帮助文档和网页帮助文档,看看详细解释并找找是否有相应的例子。2、打个比方来说,thread就是公路,连接的cell和face,cell和face就相当于公路上汽车停靠的站点,cell_t这个面向的是单元,而face_t面向的是边或者面(二维或三维)在fluent循环过程中,一般是用thread作线程检索,而cell或者face作检索过程中位置(相当于指示位置的参数)参数的指示3、对于UDF来说,积分就是做加法,把通过面上每个网格的质量流量相加4、cell和face的区别,什么时

2、候用cell,什么时候用face?5、1. begin, end_c_loop macro is used for looping over all the cells in particular thread for serial processing. 2. For parallel processing, the cells inside a partition can be categorized as interior and exterior cells. 3. The macros begin, end_c_loop_int; begin, end_c_loop_ext and

3、begin, end_c_loop_all are used for looping over interior, exterior and all the cells (in a partition) respectively. 4. In parallel simulations, both begin, end_c_loop and begin, end_c_loop_all macros will do the same job. 5. For faces the looping macro in parallel are begin, end_f_loop_int; begin, e

4、nd_f_loop_ext and begin, end_f_loop for looping over interior, boundary and all faces respectively. For all practical purpose, the user need not separate the interior and boundary faces of a partition. Hence, begin, end_f_loop_int and begin, end_f_loop_ext macros are rarely used. 实际问题1、DEFINE_UDS_UN

5、STEADY中的apu包括的函数是不是不包括当前时刻的变量,而su包含前一时刻的变量,所以用了C_STORAGE_R存储前一时刻的变量。2、等于零是因为计算源项的时候温度还没有更新,所以两个温度值是相等的。这个时候其实是需要两个UDM,分别保存上一步和再上一步的温度。而且可以考虑全部在源项里完成,不用Adjust宏:source=(C_UDMI(c,t,1)-C_UDMI(c,t,0)/TIME_STEP;C_UDMI(c,t,0)=C_UDMI(c,t,1);C_UDMI(c,t,1)=C_T(c,t);return source;当然,在刚开始计算的时候要注意下UDM的初始问题,防止出错。

6、从第三个时间步开始,就是正常的了。这个方法挺好的,只要一开始的用DEFINE_INIT,对C_UDMI(c,t,0)=0.;C_UDMI(c,t,1)=0.;一、数据类型cell_t c 单元格标识符face_t f 面标识符Thread *t 指向线程的指针Thread *pt 象限矩阵线程的指针Node *node 指向节点的指针Domain *d 指向定义域的指针二、node宏函数NODE_X(node)节点在x方向上的坐标(real)NODE_Y(node)节点在y方向上的坐标(real)NODE_Z(node)节点在z方向上的坐标(real)F_NNODES(f,t)面上节点的数目(

7、int)三、cell宏函数 1、C_CENTROID(x,c,t)real xND_ND单元格的重心坐标x注意:这句话直接使用,结果会输出到求解器中,需要使用的时候,调用x;其中,x0代表x方向坐标,x1代表y方向坐标,x2代表z方向坐标。2、C_VOLUME(c,t)单元格的体积(real)C_NNODES(c,t)单元格的节点的数目(int)C_NFACES(c,t)单元格的面的数目(int)3、C_FACE(c,t,i)返回给定单元cell_t c和Thread *t的面face_t f;注意:索引号 i可以被传递给c_face_loop。C_FACE_THREAD(c,t,i)返回面f

8、ace_t f(由C_FACE返回)的Thread *t;注意:索引号i可以被传递给c_face_loop。4、C_R(c,t)返回线程t的单元c上的密度C_P(c,t)压力C_U(c,t)速度分量uC_V(c,t)速度分量vC_W(c,t)速度分量wC_T(c,t)温度C_H(c,t)焓C_K(c,t)湍流动能kC_NUT(c,t)Spalart-Allmaras模型中的湍流密度C_D(c,t)湍流动能耗散率(和像,看小木虫)C_O(c,t)比耗散率wC_YI(c,t,i)组分质量分数5、C_R_G(c,t)返回线程t的单元c上的密度梯度C_P_G (c,t)压力梯度C_U_G (c,t)速

9、度分量u梯度C_V_G (c,t)速度分量v梯度C_W_G (c,t)速度分量w梯度C_T_G (c,t)温度梯度C_H_G (c,t)焓梯度C_K_G (c,t)湍流动能k梯度C_NUT_G (c,t)Spalart-Allmaras模型中的湍流密度梯度C_D_G (c,t)湍流动能耗散率梯度(和像,看小木虫)C_O_G (c,t)比耗散率w梯度C_YI_G (c,t,i)组分质量分数梯度注意:C_T_G(c,t)0:温度梯度x方向的分量;1:y方向;2:z方向 C_R_G(c,t)只能用于密度基求解器,C_P_G (c,t)只能用于压力基求解器C_YI_G (c,t,i)只能用于密度基求解

10、器,用于压力基求解器要设置,一切设置好后,输入rpsetvar species/save-gradients?#t 只有当已经求解出包含这个变量的方程时才能得到梯度变量,需要如下设置solve/set/expert回车然后两个yes。输入q可以返回上级目录6、C_R_RG(c,t)返回线程t的单元c上的密度改造梯度C_P_RG(c,t)压力改造梯度C_U_RG(c,t)速度分量u改造梯度C_V_RG(c,t)速度分量v改造梯度C_W_RG(c,t)速度分量w改造梯度C_T_RG(c,t)温度改造梯度C_H_RG(c,t)焓改造梯度C_K_RG(c,t)湍流动能k改造梯度C_NUT_RG(c,t

11、)Spalart-Allmaras模型中的湍流密度改造梯度C_D_RG(c,t)湍流动能耗散率改造梯度(和像,看小木虫)C_O_RG(c,t)比耗散率w改造梯度C_YI_RG(c,t,i)组分质量分数改造梯度注意:C_T_RG(c,t)0:温度梯度x方向的分量;1:y方向;2:z方向 C_R_RG(c,t)只用于密度基求解器,C_P_RG (c,t)只用于压力基求解器C_YI_RG (c,t,i)只能用于密度基求解器 只有当已经求解出包含这个变量的方程时才能得到梯度变量,需要如下设置solve/set/expert回车然后两个yes。输入q可以返回上级目录7、C_R_M1(c,t)返回上一个时

12、刻(t-t)的密度C_P_M1(c,t)返回上一个时刻(t-t)的压力C_U_M1(c,t)返回上一个时刻(t-t)的速度分量uC_V_M1(c,t)返回上一个时刻(t-t)的速度分量vC_W_M1(c,t)返回上一个时刻(t-t)的速度分量wC_T_M1(c,t)返回上一个时刻(t-t)的温度C_YI_M1(c,t,i)返回上一个时刻(t-t)的组分质量分数注意:data fromC_T_M1is availableonlyif user-defined scalars are defined. 详细可以看宏DEFINE_UDS_UNSTEADY(name,c,t,i,apu,su)。 8、

13、C_R_M2(c,t)返回上两个时刻(t-2t)的密度C_P_M2(c,t)返回上两个时刻(t-2t)的压力C_U_M2(c,t)返回上两个时刻(t-2t)的速度分量uC_V_M2(c,t)返回上两个时刻(t-2t)的速度分量vC_W_M2(c,t)返回上两个时刻(t-2t)的速度分量wC_T_M2(c,t)返回上两个时刻(t-2t)的温度C_YI_M2(c,t,i)返回上两个时刻(t-2t)的组分质量分数注意:data fromC_T_M2is availableonlyif user-defined scalars are defined. 9、C_MU_L(c,t)层流粘度C_MU_T(

14、c,t)湍流粘度C_MU_EFF(c,t)有效粘度C_K_L(c,t)导热系数C_K_T(c,t,prt)湍流热导率C_K_EFF(c,t,prt)有效热导率C_DIFF_L(c,t,i,j)层流组分扩散率C_DIFF_EFF(c,t,i)有效组分扩散率注意:prt是湍流普朗特常数。10、C_CP(c,t)比热容C_RGAS(c,t)气体常数/相对分子质量C_NUT(c,t)Spalart-Allmaras湍流粘度11、C_FMEAN(c,t)primary mean mixture fractionC_FMEAN2(c,t)secondary mean mixture fractionC_F

15、VAR(c,t)primary mixture fraction varianceC_FVAR2(c,t)secondary mixture fraction varianceC_PREMIXC(c,t)reaction progress variableC_LAM_FLAME_SPEED(c,t)层流火焰速度C_SCAT_COEFF(c,t)散射系数C_ABS_COEFF(c,t)吸收系数C_CRITICAL_STRAIN_RATE(c,t)临界应变率C_LIQF(c,t)cell中的液体分数C_POLLUT(c,t,i)污染物的质量分数注意:C_LIQFis available only

16、in fluid cells and only if solidification is turned ONC_POLLUT(c,t,i):0-Mass Fraction of NO;1-Mass Fraction of HCN;2-Mass Fraction of NH3;3-Mass Fraction of N2O;4-Soot Mass Fraction;5-Normalized Radical Nuclei Concentration in particles(颗粒浓度)*10(-15次方)/kg,具体公式需要看fluent中的介绍。12、C_RUU(c,t)uu雷诺应力C_RVV(c

17、,t)vv雷诺应力C_RWW(c,t)ww雷诺应力C_RUV(c,t)uv雷诺应力C_RVW(c,t)vw雷诺应力C_RUW(c,t)uw雷诺应力13、C_VOF(c,t)volume fraction for the phase corresponding to phase threadt注意:多相流VOF模型,只适用于压力基求解器四、Face 宏函数(只能用于压力基求解器)1、F_CENTROID(x,f,t)real xND_ND面的重心坐标x注意:这句话直接使用,结果会输出到求解器中,需要使用的时候,调用x;其中,x0代表x方向坐标,x1代表y方向坐标,x2代表z方向坐标。2、F_AR

18、EA(A,f,t)real AND_ND返回A向量(面的法向量)3、F_U(f,t)速度分量uF_V(f,t)速度分量vF_W(f,t)速度分量wF_T(f,t)温度F_H(f,t)焓F_K(f t)湍流动能kF_D(f,t)湍流动能耗散率(和像,看小木虫)F_YI(f,t,i)组分质量分数4、F_P(f,t)压力F_FLUX(f,t)返回通过一个面的质量流速注意:如果流动方向是离开domain的话,F_FLUX的结果为正值,否则为负值。 the sign of the flux that is computed by the solver is opposite to that which

19、is reported in theFLUENT user-interface (e.g.,ReportsFluxes.).五、Connectivity 宏函数一个面两边的cell可能不是属于同一个thread下的,如果这个面在domain的外表面上,则只存在C0,如果这个面在domain内部,则存在C0和C1。1、Adjacent Cell Index (相邻cell的索引)F_C0(f,t)返回一个面相邻的C0 (cell_t c)F_C1(f,t)返回一个面相邻的C1 (cell_t c)注意:一个domain外表面相邻的只有C0,没有C1;内部面相邻的有C0和C12、Adjacent

20、Cell ThreadTHREAD_T0(t)返回一个面相邻的C0对应的threadTHREAD_T1(t)返回一个面相邻的C1对应的thread3、INTERIOR_FACE_GEOMETRY(需要增加#include “sg.h”)INTERIOR_FACE_GEOMETRY(f,t,A,ds,es,A_by_es,dr0,dr1);/这样可以单独使用。注意:使用之前需定义下面的变量:(用法和C_CENTROID(x,c,t)类似,调用该函数后相应的值会存放在求解器中,需要哪个值自己再调用)real AND_ND;the area normal vector面的法向量real ds;dis

21、tance between the cell centroidsreal esND_ND;the unit normal vector in the direction from cell c0 to c1real A_by_es;the valuereal dr0ND_ND;vector that connects the centroid of cellc0to the face centroidreal dr1ND_ND;the vector that connects the centroid of cellc1to the face centroid4、BOUNDARY_FACE_G

22、EOMETRY(需要增加#include “sg.h”)BOUNDARY_FACE_GEOMETRY(f,t,A,ds,es,A_by_es,dr0); /这样可以单独使用。注意:使用之前需定义下面的变量:(用法和C_CENTROID(x,c,t)类似,调用该函数后相应的值会存放在求解器中,需要哪个值自己再调用)real AND_ND;the area normal vector面的法向量real ds;distance between the cell centroid and the face centroidreal esND_ND;unit normal vector in the d

23、irection from centroid of cell c0 to face centroidreal A_by_es;the valuereal dr0ND_ND; vector that connects the centroid of cellc0to the face centroid5、BOUNDARY_FACE_THREAD_P(t)如果t是边界面上的thread,则返回TRUE注意:具体可以看帮助文件,有相关例题。6、BOUNDARY_SECONDARY_GRADIENT_SOURCE(需要增加#include “sg.h”)BOUNDARY_SECONDARY_GRADI

24、ENT_SOURCE(source,n,dphi,dx,A_by_es,k)注意:使用它之前一般会使用BOUNDARY_FACE_GEOMETRY 其他注意事项看看中英文帮助文档六、Special 宏函数1、Thread Pointer for Zone ID (Lookup_Thread)/可以用于边界条件的设置如果你想对某个边界区域进行操作,你可以使用Lookup_Thread找到你需要的区域对应的指针t,然后进行相应操作。使用方法如下:int zone_ID = 2; / ID是边界区域的编号,可以右击网格就可以查到Thread *t = Lookup_Thread(domain,zon

25、e_ID);注意:多相流情况下使用会有点麻烦,具体看看帮助2、Zone ID (THREAD_ID)使用方法如下:int zone_ID = THREAD_ID(t);可以得到t对应的zone的ID整数值。3、Domain Pointer (Get_Domain)Get_Domain(domain_id); 注意:domain_id是整数,对于混合相是1,对于某一个相,可以查看define-phases找到相应的ID。Get_Domain(domain_id)经常用在宏DEFINE_ON_DEMAND中,DEFINE_ON_DEMAND这个宏一般用于初始化或迭代后数据进行处理(取平均,最大值,

26、最小值等),不能使用在迭代过程当中。例:DEFINE_ON_DEMAND(my_udf) Domain *mixture_domain; mixture_domain = Get_Domain(1);4、Set Boundary Condition Value (F_PROFILE)F_PROFILE(f,t,i)=.;注意:F_PROFILE是对面进行操作,一般用于边界条件的设定,改变边界条件上各种参数(压力,速度,组分参数)的值。i不需要提前定义或赋值,一般配合DEFINE_PROFILE(pressure_profile,t,i)使用,而这里已经定义了i。具体可以参照DEFINE_PRO

27、FILE提供的例子。5、THREAD_SHADOW(t)if (!NULLP(ts = THREAD_SHADOW(t) /* Do things here using the shadow wall thread (ts) */ t是薄壁的一部分,对t进行操作如果边界不是薄壁的一部分,THREAD_SHADOW(t)返回NULLNULLP()括号里面的如果没有分配内存返回TRUE七、Time-Sampled Data(C_STORAGE_R)时间取样数据。八、Model-Specific Macros用于特定模型的宏1、DPM宏2、NOx宏3、SOx宏4、动网格宏DT_THREAD(dt)D

28、ynamic_Thread *dtpointer to face threadDT_CG(dt)Dynamic_Thread *dtcenter of gravity vectorDT_VEL_CG(dt)Dynamic_Thread *dtcg velocity vectorDT_OMEGA_CG(t)Dynamic_Thread *dtangular velocity vectorDT_THETA(dt)Dynamic_Thread *dtorientation of body-fixed axis vectorDYNAMESH_CURRENT_TIMEN/Acurrent dynamic

29、 mesh timeTIME_TO_ABSOLUTE_CRANK_ANGLE(time)real timeabsolute value of the crank angle九、User-Defined Scalar (UDS) Transport Equation Macros用户自定义标量输运方程宏在使用和本节UDS有关的宏的之前,必须先去fluent面板中进行设置标量的个数。DefineUser-DefinedScalars1、Set_User_Scalar_Name当你在fluent面板中设置了UDS个数后,系统会给分配的变量相应的名字,例如,分配了2个标量,则两个标量的名字为User Scalar 0和User Scalar 1。但你可以使用下面的函数对名字进行修改,i代表对第几个标量进行修改,name是字符串格式,可用”表示。Set_User_Scalar_Name(int i,char *name);注意:上述修改只能修改一次,要改一下改完;最好使用EXECUTE_ON_LOADING宏2、F_UDSI F_UDSI(f,t,i)i为标量的序号返回使用用户自

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1