- 积分
- 0
- 注册时间
- 2011-10-13
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 熊霸天 于 2012-7-9 09:54 编辑
仿照论坛上前辈的热源程序写了一个热源,目的是为了实现如下图所示的“多道焊热源的平移与延时启动”
如上图所示,我希望在堆焊完第一条后,根据对应的时间步,平移热源到第二个堆焊条,然后在使热源移动。
下面是我的热源程序,我的思路是通过判定JSTEP来使热源移动,但是不知道怎么回事,走完第一条焊条后第二条焊条的热源上不去。好像没有引用成功。
SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
1 TEMP,PRESS,SNAME)
c
INCLUDE 'ABA_PARAM.INC'
DIMENSION COORDS(3),FLUX(2),TIME(2)
CHARACTER*80 SNAME
IF(JSTEP.eq.1)THEN
CALL DFLUX1(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
1 TEMP,PRESS,SNAME )
ELSE IF(JSTEP.eq.3)THEN
CALL DFLUX2(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
2 TEMP,PRESS,SNAME )
END IF
RETURN
END
SUBROUTINE DFLUX1(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
1 TEMP,PRESS,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
DIMENSION COORDS(3),FLUX(2),TIME(2)
CHARACTER*80 SNAME
q=800
v=0.005
d=v*TIME(2)
x=COORDS(1)
y=COORDS(2)
z=COORDS(3)
x0=0
y0=0
z0=0.0025
a=0.0028
b=0.0034
c=0.0032
PI=3.1415
heat=6*sqrt(3.0)*q/(a*b*c*PI*sqrt(PI))
shape=exp(-3*(x-x0)**2/c**2-3*(y-y0-d)**2/a**2-3*(z-z0)**2/b**2)
C JLTYP=1,表示为体热源
JLTYP=1
FLUX(1)=heat*shape
RETURN
END
SUBROUTINE DFLUX2(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
1 TEMP,PRESS,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
DIMENSION COORDS(3),FLUX(2),TIME(2)
CHARACTER*80 SNAME
q=800
v=0.005
d=v*TIME(2)
x=COORDS(1)
y=COORDS(2)
z=COORDS(3)
x0=0.025
y0=0
z0=0.0025
a=0.0028
b=0.0034
c=0.0032
PI=3.1415
heat=6*sqrt(3.0)*q/(a*b*c*PI*sqrt(PI))
shape=exp(-3*(x-x0)**2/c**2-3*(y-y0-d)**2/a**2-3*(z-z0)**2/b**2)
C JLTYP=1,表示为体热源
JLTYP=1
FLUX(1)=heat*shape
RETURN
END
我想请问一下,在abaqus里面不能实现这样的多焊道热源的设定吗?还是我的这个热源程序编写错误?
请高手和前辈指正,谢谢
PS:才接触for语言,很多都不懂,我坚信是能实现的,只是我的写法有问题。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
评分
-
1
查看全部评分
-
|