24小时热门版块排行榜    

查看: 3944  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

huanghuang36

铜虫 (小有名气)

[求助] UDF 改为并行计算

我的UDF 在单机下能正常使用,但是并行不是需要改一下语句嘛,本人愚钝,照着教程改了改但是一直不对,希望高人能帮忙指点一下,不胜感激啊
如下是我的UDF:主要使用的就是CG_MOTION


#include
#include "udf.h"
#include "math.h"
real r_movefluid;
DEFINE_CG_MOTION(moveface, dt, cg_vel, cg_omega, time, dtime)
{
        Thread *t;
    face_t f;
        real x0,y0,r;
    real v0;
        real v;
    real omega=M_PI;
        real theta=omega*time;
    real x[ND_ND];
        t = DT_THREAD(dt);
    begin_f_loop(f,t)
        {
                F_CENTROID(x,f,t);
                x0=x[0];
                y0=x[1];
                r=sqrt(pow(x0,2)+pow(y0,2));
        }
    end_f_loop(f,t)
        v0=omega*r;
        r_movefluid=r;
   if (time>=0 && time<=M_PI/(180*omega))
           v=0;
   else if (time<=8*M_PI/(180*omega))
           v=12.96*(theta-(M_PI/180))*omega/(7*pow(M_PI,2));
   else if (time<=10*M_PI/(180*omega))
           v=0.072*omega/M_PI;
   else if (time<=29*M_PI/(180*omega))
           v=(0.072*omega/M_PI)-12.96*(theta-M_PI/18)*omega/(19*M_PI*M_PI);
   else if (time<=31*M_PI/(180*omega))
           v=0;

        cg_vel[0]=v*cos(theta)-v0*sin(theta);
        cg_vel[1]=v*sin(theta)+v0*cos(theta);
        cg_vel[2]=0;
        cg_omega[0]=0;
        cg_omega[1]=0;
        cg_omega[2]=omega;
}
DEFINE_CG_MOTION(rotate, dt, cg_vel, cg_omega, time, dtime)
{
        real omega=M_PI;
        cg_omega[2]=omega;
}
DEFINE_CG_MOTION(movefluid, dt, cg_vel, cg_omega, time, dtime)
{
    real v0;
        real v;
    real omega=M_PI;
        real theta=omega*time;
        v0=omega*r_movefluid;
   if (time>=0 && time<=M_PI/(180*omega))
           v=0;
   else if (time<=8*M_PI/(180*omega))
           v=12.96*(theta-(M_PI/180))*omega/(7*pow(M_PI,2));
   else if (time<=10*M_PI/(180*omega))
           v=0.072*omega/M_PI;
   else if (time<=29*M_PI/(180*omega))
           v=(0.072*omega/M_PI)-12.96*(theta-M_PI/18)*omega/(19*M_PI*M_PI);
   else if (time<=31*M_PI/(180*omega))
           v=0;

        cg_vel[0]=v*cos(theta)-v0*sin(theta);
        cg_vel[1]=v*sin(theta)+v0*cos(theta);
        cg_vel[2]=0;
        cg_omega[0]=0;
        cg_omega[1]=0;
        cg_omega[2]=omega;
}

刚注册的,目前只有两个金币,呵呵,不好意思啊~~
回复此楼

» 猜你喜欢

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

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

会飞的猪ss

银虫 (小有名气)

引用回帖:
4楼: Originally posted by sunbird04 at 2012-10-10 18:14:27
在每段程序 最前头加上 #if !RP_HOST   最末尾加上#endif   即可

试了这个办法,我的UDF是一个源项,添加了你所说的语句之后,警告需要一个返回值,但是我明明写了返回值,机器却说需要一个返回值。有人指点说是因为语句的非正常使用导致函数体为空。请问,这个问题怎么解决???
多使点劲,猪也能飞起来。。。
10楼2014-07-23 11:32:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

Mr.Silence

新虫 (初入文坛)


感谢参与,应助指数 +1
xiegangmai: 金币-1, 应助指数-1, 谢谢参与,非应助请勿选择“应助回帖” 2012-10-10 21:19:51
同求并行计算的方法。我也在学习UDF,希望楼主不吝赐教。
2楼2012-10-09 11:17:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huanghuang36

铜虫 (小有名气)

呵呵,目前我也不是很会啊,共同学习
3楼2012-10-10 10:02:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sunbird04

银虫 (小有名气)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢应助 2012-10-10 21:20:01
huanghuang36: 金币+2, ★★★很有帮助, 谢谢你的帮助哦~~ 2012-10-16 09:34:24
在每段程序 最前头加上 #if !RP_HOST   最末尾加上#endif   即可

» 本帖已获得的红花(最新10朵)

4楼2012-10-10 18:14:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 QTy3jDtz1uLt 2026-08-21 9/450 2026-08-23 03:04 by OEbVnUOu01ol
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 DpSrDtM079iu 2026-08-22 3/150 2026-08-23 00:55 by OEbVnUOu01ol
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-22 6/300 2026-08-23 00:52 by OEbVnUOu01ol
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 8/400 2026-08-23 00:28 by OEbVnUOu01ol
[论文投稿] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 2JOx3r2CYEgw 2026-08-22 3/150 2026-08-22 22:03 by OEbVnUOu01ol
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 范进中举一文的中心思想 +3 zjuhero 2026-08-22 4/200 2026-08-22 20:02 by mycsru
[教师之家] 跳槽后在研项目怎么办? +3 简单化xn 2026-08-22 7/350 2026-08-22 19:46 by 简单化xn
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 2JOx3r2CYEgw 2026-08-21 4/200 2026-08-22 16:52 by sunzitan
[基金申请] 人气不行了 +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[基金申请] 今天基金会出结果吗?20260819 +16 kkkl_v 2026-08-19 17/850 2026-08-22 16:12 by 阿布Abu
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 14/700 2026-08-21 23:51 by cratir
[基金申请] 建议基金发布提前给出明确的时间点 +10 kulium 2026-08-21 13/650 2026-08-21 21:58 by alongwaytogo
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 今天系统多次维护,明天很可能放榜! +10 zju2000 2026-08-16 11/550 2026-08-20 20:02 by cl479861084
[基金申请] 今天放榜吗? +14 布布和一二 2026-08-19 15/750 2026-08-19 18:07 by gltch
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见