24小时热门版块排行榜    

查看: 360  |  回复: 2

sghudng

铜虫 (小有名气)

[交流] 【求助】哪位大侠懂并行UDF的麻烦您进来帮个忙,谢谢! 已有1人参与

实在是搞不懂写UDF的时候怎么分配计算,自己照着帮助里的例子套了一天,编译都出错,可是我的非稳态问题如果不并行计算,实在是太慢了,求求各位大哥了……
程序如下:
#include "udf.h"
DEFINE_PROFILE(velocity,t,i)
{
    Domain *domain=Get_Domain(1);
    Thread *thread_s,*mix_thread;
    double flux,flux_tot,velocity;
    face_t f;
        flux_tot=0.0;
    mix_thread=Lookup_Thread(domain,5);
    thread_s=THREAD_SUB_THREAD(mix_thread,1);
    begin_f_loop(f,mix_thread)
    {
        flux=F_FLUX(f,thread_s);
        flux_tot+=flux;
    }
    end_f_loop(f,mix_thread)
        velocity=2*flux_tot/22.319;
    begin_f_loop(f,t)
    {
        F_PROFILE(f,t,i)=fabs(velocity);
    }
    end_f_loop(f,t)            
}
回复此楼

» 猜你喜欢

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

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

sghudng

铜虫 (小有名气)

我也知道没人愿意完全帮人写程序,还是把自己照着帮助套着写的贴上来,希望大哥们指点一下其中的错误之处,希望有人能回贴……
#include "udf.h"
DEFINE_PROFILE(velocity,t,i)
{
#if !RP_HOST
        Domain *domain=Get_Domain(1);
    Thread *thread_s,*mix_thread;
    face_t f;
#else
        real velocity,flux,flux_tot=0.0;
#endif
#if !RP_HOST
    mix_thread=Lookup_Thread(domain,5);
    thread_s=THREAD_SUB_THREAD(mix_thread,1);

#if RP_NODE
    begin_f_loop(f,mix_thread)
        if PRINCIPAL_FACE_P(f,mix_thread)
    {
        flux=F_FLUX(f,thread_s);
        flux_tot+=flux;
    }
    end_f_loop(f,mix_thread)
                flux_tot=PRF_GRSUM1(flux_tot);
        velocity=2*flux_tot/22.319;
#endif
#endif
#if RP_NODE
    begin_f_loop(f,t)
    if PRINCIPAL_FACE_P(f,t)
    {
        F_PROFILE(f,t,i)=velocity;
    }
    end_f_loop(f,t)            
#endif
}
2楼2010-07-20 10:32:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sghudng

铜虫 (小有名气)

不并行算的时候,程序完全没问题,开并行以后,能导进去,但是程序设置的入口条件不起作用……真没人会吗?
3楼2010-07-20 17:06:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sghudng 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见