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 结果 不同时刻温度场分布: |
|