- 积分
- 0
- 注册时间
- 2010-4-30
- 仿真币
-
- 最后登录
- 1970-1-1
|
我做的模拟是 脉冲激光焊接模拟!具体就是在小于T0时间内加载激光,在大于T0小于T的时间内不做用激光,大于T后进行下一个循环。如图1,2所示。我尝试用DEFINE_PROFILE宏 写了一个程序但是一直不能实现此功能,我的思路是用t=RP_Get_Real("flow-time");然后k=t-(i-1)*T其中i为当前周期数 T为周期 然后用k于T0比较 若k<T0则加载光源若T>K>T0则 不加载激光 若k>=T则i++但是一直没有实现这一功能 初始化的时候就出现了问题,一直循环跳不出循环!udf程序如下:#include "udf.h"
DEFINE_PROFILE(temperature_profile, thread, position)
{
real m[ND_ND];
real x,x1;
real y,y1;
face_t f;
real x0,y0,R;
real v=0.00167;
real T=0.03;
real T0=0.006;
int i=1;
real k;
real r=0.0003;
real J=1.5;
real t=RP_Get_Real("flow-time");
do
{
k=t-(i-1)*T;
if(k<=T0)
{
begin_f_loop(f,thread)
{
F_CENTROID(m,f,thread);
x=m[0];
y=m[1];
x0=v*t;
y0=0;
R=sqrt(x-x0)*(x-x0)+(y-y0)*(y-y0);
if(R<=r)
F_PROFILE(f,thread,position)=3*1.5*0.8/(3.14159*T0*r*r)*exp(-3*R*R/r*r);
else
F_PROFILE(f, thread, position)=0;
}
end_f_loop(f, thread)
printf("1");
printf("%f",t);
}
else if(T>k>T0)
{
printf("2");
printf("%f",t);
}
else
{
i++;
printf("3");
printf("%f",t);
}
}while(i<=10);
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|