- 积分
- 0
- 注册时间
- 2008-7-28
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2010-11-19 16:46:44
|
显示全部楼层
来自 四川成都
同问,期待答案,不知道是不是因为用到了face_f,而在二维的情况下,没有面只有线
udf如下:
DEFINE_CG_MOTION(train,dt,vel,omega,time,dtime)
{
Thread *t; face_t f;
real x[ND_ND],A[ND_ND],minx=25.5,maxx=50.5,forcey[3];
FILE *fp1;
int i;
NV_S(vel, =, 0.0);
NV_S(omega, =, 0.0);
t=DT_THREAD(dt);
for (i=0;i<3;i++)
{ forcey=0; }
vel[0] = 50; vel[1] = 0.0; vel[2] = 0.0;
begin_f_loop(f,t)
{
F_CENTROID(x,f,t);
F_AREA(A,f,t);
if(x[0]<(minx+vel[0]*time))
{ forcey[0]+=F_P(f,t)*A[1]; //升力 }
else if(x[0]>(maxx+vel[0]*time))
{ forcey[2]+=F_P(f,t)*A[1]; }
else
{ forcey[1]+=F_P(f,t)*A[1]; }
}
end_f_loop(f,t)
Message ("forcey1 = %f, forcey2 = %f,forcey3 =%f\n", forcey[0], forcey[1],forcey[2]);
if((fp1=fopen("out1","a"))==NULL)
{Error("can not open\n");}
fprintf(fp1,"%f, %f, %f, %f\n", time, forcey[0], forcey[1],forcey[2]);
fclose(fp1);
} |
|