admin 管理员组文章数量: 887053
2024年1月18日发(作者:hardwareid)
UDF定义变量的输出
使用宏: C_UDMI( c, thread, index)
自变量类型:cell_t c
Thread *thread
int index
函数返回值:void
C_UDMI有三个自变量:c, thread, 和index。c 是网格标志符号, thread 是网格线指针, index 是识别数据内存分配的。与索引号0相关的用户定义的内存区域为0, (或udm-0)。
在你用来在内存中存放变量之前,首先你需要在FLUENT的User-Defined Memory面板中分配内存。Define
!!当在分配内存之前,如果你想用C_UDMI,就会出现错误。
你在图形用户窗口分配的每一个用户定义的内存,都会创建一个新的变量。例如:你要指定两个内存分配区,那么两个变量udm-0和and udm-1就会在数据储存器中产生。这些名字将会在后台处理面板中显示出来。给一个计算网格点的温度的例子,calc用于计算并打印当前数据场的最小、最大和平均温度,并计算(T-Tmin)/(Tmax-Tmin)存放到用户定义的内存umd0中。
/**********************************************************************/
/* UDF to calculate temperature field function and store in */
/* user-defined memory. Also print min, max, avg temperatures. */
/**********************************************************************/
#include "udf.h"
DEFINE_ON_DEMAND(on_demand_calc)
Domain *d; /* declare domain pointer since it is not passed a */
/* argument to DEFINE macro */
{
real tavg = 0.;
real tmax = 0.;
real tmin = 0.;
real temp,volume,vol_tot;
Thread *t;
cell_t c;
d = Get_Domain(1); /* Get the domain using Fluent utility */
/* Loop over all cell threads in the domain */
thread_loop_c(t,d)
{
/* Compute max, min, volume-averaged temperature */
/* Loop over all cells */
begin_c_loop(c,t)
{
volume = C_VOLUME(c,t); /* get cell volume */
temp = C_T(c,t); /* get cell temperature */
if (temp < tmin || tmin == 0.) tmin = temp;
if (temp > tmax || tmax == 0.) tmax = temp;
vol_tot += volume;
tavg += temp*volume;
}
end_c_loop(c,t)
tavg /= vol_tot;
printf("n Tmin = %g Tmax = %g Tavg = %gn",tmin,tmax,tavg);
/* Compute temperature function and store in user-defined memory*/
/*(location index 0) */
begin_c_loop(c,t)
{
temp = C_T(c,t);
C_UDMI(c,t,0) = (temp-tmin)/(tmax-tmin);
}
end_c_loop(c,t)
}
版权声明:本文标题:c_udmi 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705565567h490196.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论