24小时热门版块排行榜    

CyRhmU.jpeg
查看: 849  |  回复: 2

luckyhuman1

铜虫 (小有名气)

[求助] 请大伙帮我看看这段UDF,串行没问题,并行就出错了

下面的UDF,我是想把一个出口边界的温度值,增加一个常数,然后给入口边界,这段在串行计算可以计算正确,但是放到并行里面,加边界就出错了
#include "udf.h"
DEFINE_PROFILE(tem_profile,t,i)
{
real T_Total=0.0;
real T_average_indutor_out=0.0;
real current_time=CURRENT_TIME;
real n=0;
real T_WALL;
real T_inductorinlet=0.0;
real T_inlet;
real x[ND_ND];
real m=0.0;

#if !RP_HOST
face_t f;
cell_t c;
Thread *tc;
Thread *t0;
Domain *domain=Get_Domain(1);
#endif

#if !RP_NODE
FILE *fout;
FILE *fout123;
#endif

#if !RP_NODE
fout=fopen("inductor_outlet_aveT.txt","a+";
fout123=fopen("inductor_inlet.txt","a+";
Message("\n  openfile \n";
#endif

#if !RP_HOST
tc=Lookup_Thread(domain,16);
begin_f_loop_int(f,tc)
{
  T_WALL=F_T(f,tc);
  T_Total+=T_WALL;
  n++;
}
end_f_loop_int(f,tc)

# if RP_NODE
T_Total=PRF_GRSUM1(T_Total);
n=PRF_GRSUM1(n);
#endif

#endif

node_to_host_real_2(T_Total,n);

#if !RP_NODE
T_average_indutor_out=T_Total/n;
fprintf(fout," %lg  %lg \n ",current_time,T_average_indutor_out);
fclose(fout);
#endif

#if !RP_HOST
begin_f_loop_int(f,t)
{
   F_PROFILE(f,t,i)=T_average_indutor_out+8;
   T_inductorinlet+=F_T(f,t);
   m++;
}
end_f_loop_int(f,t)

# if RP_NODE
T_Total=PRF_GRSUM1(T_inductorinlet);
m=PRF_GRSUM1(m);
#endif
#endif

node_to_host_real_2(T_inductorinlet,m);

#if !RP_NODE
T_inlet=T_inductorinlet/m;
fprintf(fout123," %lg  %lg \n ",current_time,T_inlet);
fclose(fout123);
#endif
}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luckyhuman1

铜虫 (小有名气)

xiegangmai: , 建议分享解决方法,金币奖励! 2012-05-20 22:46:02
已经解决了,谢谢关注
2楼2012-05-19 16:37:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

missyou8326

金虫 (著名写手)

解决办法是什么,给大家参考一下啊
3楼2012-05-20 21:15:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 luckyhuman1 的主题更新
信息提示
请填处理意见