|
|

楼主 |
发表于 2011-3-29 11:10:28
|
显示全部楼层
我自己写的并行版本是这样的,但是运行出现浮点错误
# include "udf.h"
DEFINE_ADJUST(min_pressure, domain)
{
real z=0.0;
real x1,y1,z1;
real ii=0;
real qq=0;
real pmin=0.0;
real temp=1.3;
x1=1;
y1=2;
z1=3;
Thread *t;
#if !RP_HOST
cell_t c;
real x[ND_ND];
#endif
#if !RP_NODE
Message("computing the minimum pressure...\n");
#endif
#if !RP_HOST
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
C_CENTROID(x,c,t);
z=x[2];
if(fabs(z+0.3)<0.01)
{
ii=ii+1;
temp = C_P(c,t);
if(pmin>temp)
{
pmin=temp;
x1=x[0];
y1=x[1];
z1=x[2];
}
}
qq=qq+1;
}
end_c_loop (c,t)
}
# if RP_NODE
pmin=PRF_GRLOW1(pmin);
ii = PRF_GRSUM1(ii);
qq = PRF_GRSUM1(qq);
# endif /* RP_NODE */
node_to_host_real_6(pmin,x1,y1,z1,ii,qq); /* Does nothing in SERIAL */
#endif /* !RP_HOST */
#if !RP_NODE /* SERIAL or HOST */
Message("the minimum pressure is: %6.6g,the face position is [%6.6g,%6.6g,%6.6g] .\nyes:%g\ntotal:%g\n", pmin,x1,y1,z1,ii,qq);
#endif /* !RP_NODE */
} |
|