yjpeng119 发表于 2012-10-9 10:03:02

单机UDF改为并行

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


#include <stdio.h>
#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;
        t = DT_THREAD(dt);
    begin_f_loop(f,t)
        {
                F_CENTROID(x,f,t);
                x0=x;
                y0=x;
                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=v*cos(theta)-v0*sin(theta);
        cg_vel=v*sin(theta)+v0*cos(theta);
        cg_vel=0;
        cg_omega=0;
        cg_omega=0;
        cg_omega=omega;
}
DEFINE_CG_MOTION(rotate, dt, cg_vel, cg_omega, time, dtime)
{
        real omega=M_PI;
        cg_omega=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=v*cos(theta)-v0*sin(theta);
        cg_vel=v*sin(theta)+v0*cos(theta);
        cg_vel=0;
        cg_omega=0;
        cg_omega=0;
        cg_omega=omega;
}
页: [1]
查看完整版本: 单机UDF改为并行