UDF-C_UDMI【转载】
UDF定义变量的输出
使用宏: C_UDMI( c,
thread, index)
C_UDMI有三个自变量:c, thread, 和index。c 是网格标志符号, thread 是网格线指针, index
是识别数据内存分配的。与索引号0相关的用户定义的内存区域为0, (或udm-0)。
在你用来在内存中存放变量之前,首先你需要在FLUENT的User-Defined Memory面板中分配内存。Define
User-Defined Memory...
!!当在分配内存之前,如果你想用C_UDMI,就会出现错误。
你在图形用户窗口分配的每一个用户定义的内存,都会创建一个新的变量。例如:你要指定两个内存分配区,那么两个变量udm-0和and
udm-1就会在数据储存器中产生。这些名字将会在后台处理面板中显示出来。给一个计算网格点的温度的例子,calc用于计算并打印当前数据场的最小、最大和平均温度,并计算(T-Tmin)/(Tmax-Tmin)存放到用户定义的内存umd0中。
#include "udf.h"
DEFINE_ON_DEMAND(on_demand_calc)
Domain *d;
{
real tavg = 0.;
real tmax = 0.;
real tmin = 0.;
real temp,volume,vol_tot;
Thread *t;
cell_t c;
d = Get_Domain(1);
thread_loop_c(t,d)
{
begin_c_loop(c,t)
{
volume = C_VOLUME(c,t);
temp = C_T(c,t);
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 = %g\n",tmin,tmax,tavg);
begin_c_loop(c,t)
{
temp = C_T(c,t);
C_UDMI(c,t,0) = (temp-tmin)/(tmax-tmin);
}
end_c_loop(c,t)
}
附:
在mem.h文件中的可以为单元格访问用户自定义的标量和存储器的宏