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