|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我的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[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;
} |
|