目录概述utracload子程序接口介绍算例介绍计算结果全部程序及讲解概述 讲解了abaqus提供的用于定义复杂面荷载的子程序utracload,这个子程序可以用于定义随时间、位置、积分点变化的面荷载、线荷载。最终以一个悬臂梁受力为例讲解具体的使用方法,帖子末尾给出了具体的程序。utracload子程序接口介绍 子程序的接口可以在官方文档找到,下面是具体的接口 SUBROUTINE UTRACLOAD(ALPHA,T_USER,KSTEP,KINC,TIME,NOEL,NPT, 1 COORDS,DIRCOS,JLTYP,SNAME)C INCLUDE 'ABA_PARAM.INC'C DIMENSION T_USER(3), TIME(2), COORDS(3), DIRCOS(3,3) CHARACTER*80 SNAME user coding to define ALPHA and T_USER RETURN END 下面逐一介绍这个子程序的参数 ALPHA是需要我们计算的数值,不包括符号,这个数值会传给abaqus主程序。 T_USER是一个定义荷载方向的向量,有三个数值分别代表x、y和z。 KSTEP和KINC分别是当前分析步数和增量步数。 TIME(1)TIME(2)分别是当前分析步时间和分析总时间。 NOEL是用户自定义单元编号,这个参数需要和另一个子程序uel联合使用。 NPT是积分点数。 COORDS是荷载积分点的初始坐标,注意不是节点的坐标,如果计算打开了几何非线性,则是当前荷载积分点的坐标。 DIRCOS这个参数我没有用过,不多说,怕误导读者。 JLTYP是荷载的类型,这个参数是和inp文件相对应的,具体的对应关系为 其中,LoadLabel是inp文件中的荷载类型,JTYPE是子程序中的参数。这个参数可用于荷载判断。算例介绍 设计了悬臂梁算例,这个算例并没有输入非常复杂的面荷载,只是施加了简单的三角函数荷载,不采用子程序也可以施加这种荷载,目的是能够将子程序的计算结果与abaqus进行对比。如果采用子程序施加很复杂的荷载,就没办法与abaqus进行对比了。 悬臂梁一端固定,顶端与悬臂端施加三角函数荷载,边界条件与荷载示意图为 其中,顶面的名称定义为“yz”,代表着面荷载的方向为垂直于y面与z同向,悬臂端的名称定义为“zy”,代表着面荷载的方向为垂直于z面与y同向,这个名称在子程序中需要。 这里给顶端施加的荷载为 ,悬臂端施加的荷载为 。计算结果 经常读我帖子的朋友都知道,我不太喜欢在结果上面花太多时间,我一般都是直接把所有的计算文件放到帖子末尾,放不下的文件一般私信我获取就行。下面简单的放一些计算结果。 首先是2.5s时刻的位移对比 2.5s时刻的 对比 5s时刻的位移对比 5s时刻的 对比 10s时刻的位移对比 10s时刻的 对比全部程序及讲解 下面是详细的子程序文件和部分inp文件,因为inp太大了放不下,如果有需要的,直接私信我就行。 首先给出for文件,代码以注释的形式给出讲解。 SUBROUTINE UTRACLOAD(ALPHA,T_USER,KSTEP,KINC,TIME,NOEL,NPT, 1 COORDS,DIRCOS,JLTYP,SNAME)C INCLUDE 'ABA_PARAM.INC'C DIMENSION T_USER(3), TIME(2), COORDS(3), DIRCOS(3,3) CHARACTER*80 SNAME character*10 surfyzz,surfzzy c 注意这里的字符串是大写,因为参数sname默认也是大写c 我一开习惯性始认为fortran不区分大小写c 结果卡了我一下午!!!!!!!!!!!! surfyzz='SURF-Y-ZZ' surfzzy='SURF-Z-ZY'c user coding to define ALPHA and T_USERc index函数用于检查字符串surfyzz是否在sname中 if(index(sname,surfyzz).gt.0)then ALPHA=1e+06*SIN(TIME(1))c 设置面荷载方向,这里的是沿着z轴正向 t_user(1)=0 t_user(2)=0.0 t_user(3)=1c index函数用于检查字符串surfzzy是否在sname中 elseif(index(sname,surfzzy).gt.0)then ALPHA=1e+06*COS(TIME(1))c 设置面荷载方向,这里的是沿着y轴负向 t_user(1)=0 t_user(2)=-1 t_user(3)=0.0 endif RETURN END 下面是带有子程序的部分inp文件,不带子程序的文件就不占用篇幅了,如有需要直接私信我。*Heading** Job name: Job-1 Model name: Model-1** Generated by: Abaqus/CAE 2020*Preprint, echo=NO, model=NO, history=NO, contact=NO**** PARTS***Part, name=Part-1*Node1, 10., 10., 20.**省略节点坐标...... 396, 0., 0., 0.*Element, type=C3D81, 67, 68, 74, 73, 1, 2, 8, 7**省略单元......250, 389, 390, 396, 395, 323, 324, 330, 329*Nset, nset=Set-1, generate 1, 396, 1*Elset, elset=Set-1, generate 1, 250, 1*Elset, elset=_surf-y-zz_S6, internal, generate 1, 246, 5*Surface, type=ELEMENT, name=surf-y-zz_surf-y-zz_S6, S6*Elset, elset=_surf-z-zy_S3, internal 1, 2, 3, 4, 5, 51, 52, 53, 54, 55, 101, 102, 103, 104, 105, 151 152, 153, 154, 155, 201, 202, 203, 204, 205*Surface, type=ELEMENT, name=surf-z-zy_surf-z-zy_S3, S3** Section: Section-1*Solid Section, elset=Set-1, material=Material-1,*End Part** **** ASSEMBLY***Assembly, name=Assembly** *Instance, name=Part-1-1, part=Part-1*End Instance** *Nset, nset=Set-1, instance=Part-1-1 61, 62, 63, 64, 65, 66, 127, 128, 129, 130, 131, 132, 193, 194, 195, 196 197, 198, 259, 260, 261, 262, 263, 264, 325, 326, 327, 328, 329, 330, 391, 392 393, 394, 395, 396*Elset, elset=Set-1, instance=Part-1-1 46, 47, 48, 49, 50, 96, 97, 98, 99, 100, 146, 147, 148, 149, 150, 196 197, 198, 199, 200, 246, 247, 248, 249, 250*End Assembly*Amplitude, name=cosx, definition=PERIODIC1, 1., 0., 0. 1., 0.*Amplitude, name=sinx, definition=PERIODIC1, 1., 0., 0. 0., 1.** ** MATERIALS** *Material, name=Material-1*Density2000.,*Elastic 1e+10, 0.25** ----------------------------------------------------------------** ** STEP: Step-1** *Step, name=Step-1, nlgeom=NO, inc=1000*Dynamic,direct0.01,10.,** ** BOUNDARY CONDITIONS** ** Name: fixed Type: Displacement/Rotation*BoundarySet-1, 1, 1Set-1, 2, 2Set-1, 3, 3** ** LOADS** ** Name: surf-y-zz Type: Surface traction** 这里的关键字调用了utracload子程序*DsloadPart-1-1.surf-y-zz, TRSHRNU, 1., 0., 0., 1.** Name: surf-z-zy Type: Surface traction*DsloadPart-1-1.surf-z-zy, TRSHRNU, 1., 0., -1., 0.** ** OUTPUT REQUESTS** *Restart, write, frequency=0** ** FIELD OUTPUT: F-Output-1** *Output, field, variable=PRESELECT, frequency=1** ** HISTORY OUTPUT: H-Output-1** *Output, history, variable=PRESELECT, frequency=1*End Step 来源:有限元先生