1 概述
Abaqus的二次开发一般用Python,而Abaqus中应用到的子程序(包括材料和载荷等)用Fortran编写。Abaqus的子程序接口比较多,在模拟焊接时对热源的描述只能采用子程序的方式进行加载。
2 热源
焊接时的热源其实是比较复杂的,但是为了便于计算,比较常用的做法是将热源采用高斯函数的形式进行描述。其形式如下,分别是直角坐标系下和极坐标系下。
这个方程的坐标值是基于热源中心的坐标,热源形式如图1所示:
图1 热源分布
3 建模
(1)Part
建立一个矩形平板如图2。
图2 Part
(2)Property
定义材料属性,热导率(Conductuvity),密度(Density),弹性模量(Elastic),膨胀系数(Expansion)、塑性参数(Plastic)、比热容(SpecificHeat)。
图3 Property
(3)Assembly
建立组件。
(4)Step
焊接模拟如果只求温度场,那么就建立Heat Transfer载荷步,如果需要热应力,那么就需要建立耦合分析步,Couple temp-displacement 。定义两个载荷步分别是焊接过程和冷却过程,同时打开大变形。
图4 Step
根据需要设置Fieldoutput输出场数据和历史输出数据HistoryOutput.
(5)Interaction
平板的所有表面与外界存在对流传热,需要定义对流传热属性,对流传热系数Film condition,定义的时候还需要指定外界的温度。
图5 Interaction
(6)Load
焊接热源属于体热源,需要定义Body heat flux,热源只作用于第一个载荷步,体热源的作用对象是所有的体,不单单是焊接那一部分。定义热源时选择用户自定义(User-defined),由子程序加载。
图 6 Heat flux
然后施加约束。
再然后通过Predefined Field Manager管理器定义初始温度。
图7 Predefined Field
(7)Mesh
单元类型同样根据载荷步选择,热结构耦合单元对应的Coupled Temperature-Displacement类型。
图8 Mesh(Element Type-CoupledTemperature-Displacement)
(8)Job
创建Job,并且指定需要加载的用户子程序。
图9 Job(subroutine)
(9)Submit
生成Input File,求解运算。
4 用户子程序
热源采用Fortran编写,主要格式如下:
SUBROUTINEDFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
1 TEMP,PRESS,SNAME)
INCLUDE'ABA_PARAM.INC'
parameter(one=1.d0,three=3.d0)
DIMENSION COORDS(3),FLUX(2),TIME(2)
CHARACTER*80 SNAME
FLUX(1)=0
a=6*0.5*90*10*1.732
pi=3.14159
v=0.002
b=COORDS(1)-v*TIME(1)
d1=exp(-3*((COORDS(1)-v*TIME(1))**2/(0.0025)**2+(COORDS(2))**2
$ /(0.004)**2+(COORDS(3))**2/(0.0025)**2))
d2=exp(-3*((COORDS(1)-v*TIME(1))**2/(0.0075)**2+(COORDS(2))**2
$ /(0.004)**2+(COORDS(3))**2/(0.0025)**2))
中间为过程
中间为过程
中间为过程
RETURN
end subroutine DFLUX
!JSTEP,JINC为当前传到用户子程序的STEP和INCREMENT值;
!TIME(1)、TIME(2)为当前STEP TIME 和INCREMENTTIME的值;
!NOEL,NPT为积分点所在单元的编号和积分点的编号;
!CORRDS为当前积分点的坐标;
!除FLUX外其他都是Abaqus传到用户子程序中的
通过速度、时间和坐标等即可编写具体的热源移动程序。
5 结果
不同时刻温度场分布:
联系客服