|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
程序的目的是根据监测点的压力调节入口的质量流量,维持监测点的压力近似恒定,单核计算时程序可以用,一旦并行就出错,自己试着按帮助里的方法改一直没通(比如加#if !HOST #endif之类),恳请各位指点,先谢过了!
DEFINE_ADJUST(get_p_monitor,d)
{
Thread *t;
cell_t c;
real xc[ND_ND];/*网格质心坐标*/
thread_loop_c(t,d)
{
begin_c_loop(c,t)
{
C_CENTROID(xc,c,t);
if (sqrt(ND_SUM(pow(xc[0] + 2.,2.),
pow(xc[1] -1.3,2.),
pow(xc[2]-0.,2.)))<0.01
pressure=C_P(c,t);/*点(-2,1.3,0)为监测点,当网格质心与监测点的距离小于0.01时,认为该网格的压力就是监测点的压力*/
}
end_c_loop(c,t)
}
printf("\n pressure=%g\n",pressure);
}
DEFINE_PROFILE(mass_inlet_as_p,t,i)
{
face_t f;
real mass=0.5;
if(pressure<=480000.)
mass=mass+0.01;
else if(pressure>480000.&&.pressure<520000.)/*根据监测点的压力调节入口质量流量*/
mass=mass;
else
mass=mass-0.01;
begin_f_loop(f,t)
{
F_PROFILE(f,t,i)=mass;
}
end_f_loop(f,t)
printf("\n pressure=%g\n",pressure);
}
如果一并行,每计算一步会出现四个压力值(我用四核并行),其中一个为真实值,另三个是0,然后到下面用压力判断质量流量时用的一直是那个0的压力,所以就流量一直升高。
[ 本帖最后由 ltpreason 于 2013-11-5 17:55 编辑 ] |
|