|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
假设有一加热器(2维),其中一点A坐标(0.01,0.005)在加热器内。
加热器初始功率P:1000000000W/m3, 点A的温度随加热器加热而变化.
我想利用UDF实现的是:
当A点的温度大于T0时,加热器功率每个时间步减少1000000W/m3;
当A点的温度小于T0时,加热器功率每个时间步增加1000000W/m3;
浏览了前人的一些帖子,udf程序大概如下:
DEFINE_SOURCE(heat_source,cell,thread,dS,eqn)
{
cell_t c;
Thread *t;
CX_Cell_Id cx_cell;
real NV_VEC(pt);
real c_centroid[ND_ND];
real temp;
real tempp;
real source;
real source0=1000000000.0;
real flow_time=RP_Get_Real("flow-time");
NV_D(pt,=,0.01,0.005,0.0);
CX_Start_ND_Point_Search();
cx_cell=*CX_Find_Cell_With_Point(pt);
CX_End_ND_Point_Search();
c=RP_CELL(&cx_cell);
t=RP_THREAD(&cx_cell);
C_CENTROID(c_centroid,c,t);
temp=C_T(c,t);
if(flow_time<1.0)
{
tempp=420;
}
else
tempp=450;
source=source0;
if(temp<tempp)
{
source=source+1000000.0;
}
else
{
source=source-1000000.0;
}
source0=source;
return source;
}
第一个时间步迭代source利用初始的功率source0,
以后的每个时间步迭代source利用上次时间步的source。
现在的问题是,上一个时间步的source不知道怎样传递给当前时间步,期望高手帮忙解决一下。
谢谢!
[ 本帖最后由 mawencheng 于 2010-6-15 15:50 编辑 ] |
|