UDF总结
- 格式:docx
- 大小:66.80 KB
- 文档页数:26
UDF使用技巧
1、查找相应的函数的时候,可以现在word里面找到相应的函数名字,然后依次去中文帮助文档、英文帮助文档和网页帮助文档,看看详细解释并找找是否有相应的例子。
2、打个比方来说,thread就是公路,连接的cell和face,cell和face就相当于公路上汽车停靠的站点,
cell_t这个面向的是单元,而face_t面向的是边或者面(二维或三维)
在fluent循环过程中,一般是用thread作线程检索,而cell或者face作检索过程中位置(相当于指示位置的参数)参数的指示
3、对于UDF来说,积分就是做加法,把通过面上每个网格的质量流量相加
4、cell和face的区别,什么时候用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 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,
end_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_UNSTEADY中的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的初始问题,防止出错。
从第三个时间步开始,就是正常的了。 这个方法挺好的,只要一开始的用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) 面上节点的数目(int)
三、cell宏函数
1、
C_CENTROID(x,c,t) real x[ND_ND] 单元格的重心坐标x[]
注意:这句话直接使用,结果会输出到求解器中,需要使用的时候,调用x[];其中,x[0]代表x方向坐标,x[1]代表y方向坐标,x[2]代表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) 返回面face_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) 速度分量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_NUT(c,t) Spalart-Allmaras模型中的湍流密度
C_D(c,t) 湍流动能耗散率(和ε像,看小木虫)
C_O(c,t) 比耗散率w
C_YI(c,t,i) 组分质量分数
5、
C_R_G(c,t) 返回线程t的单元c上的密度梯度
C_P_G (c,t) 压力梯度
C_U_G (c,t) 速度分量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)只能用于密度基求解器,用于压力基求解器要设置,一切设置好后,输入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) 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) 返回上一个时刻(t-Δt)的密度
C_P_M1(c,t) 返回上一个时刻(t-Δt)的压力
C_U_M1(c,t) 返回上一个时刻(t-Δt)的速度分量u
C_V_M1(c,t) 返回上一个时刻(t-Δt)的速度分量v
C_W_M1(c,t) 返回上一个时刻(t-Δt)的速度分量w
C_T_M1(c,t) 返回上一个时刻(t-Δt)的温度
C_YI_M1(c,t,i) 返回上一个时刻(t-Δt)的组分质量分数
注意:①data from C_T_M1 is available only if user-defined scalars are defined.
②详细可以看宏DEFINE_UDS_UNSTEADY( name,c,t,i,apu,su)。
8、
C_R_M2(c,t) 返回上两个时刻(t-2Δt)的密度
C_P_M2(c,t) 返回上两个时刻(t-2Δt)的压力
C_U_M2(c,t) 返回上两个时刻(t-2Δt)的速度分量u
C_V_M2(c,t) 返回上两个时刻(t-2Δt)的速度分量v
C_W_M2(c,t) 返回上两个时刻(t-2Δt)的速度分量w
C_T_M2(c,t) 返回上两个时刻(t-2Δt)的温度
C_YI_M2(c,t,i) 返回上两个时刻(t-2Δt)的组分质量分数
注意:①data from C_T_M2 is available only if user-defined scalars are defined.
9、
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,prt) 湍流热导率
C_K_EFF(c,t,prt) 有效热导率
C_DIFF_L(c,t,i,j) 层流组分扩散率
C_DIFF_EFF(c,t,i) 有效组分扩散率
注意:prt是湍流普朗特常数。