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)

}


本文标签: 内存 用户 定义 计算 数据