目录概述utracload子程序接口介绍算例介绍计算结果全部程序及讲解概述 讲解了abaqus提供的用于定义复杂面荷载的子程序utracload,这个子程序可以用于定义随时间、位置、积分点变化的面荷载、线荷载。最终以一个悬臂梁受力为例讲解具体的使用方法,帖子末尾给出了具体的程序。utracload子程序接口介绍 子程序的接口可以在官方文档找到,下面是具体的接口SUBROUTINEUTRACLOAD(ALPHA,T_USER,KSTEP,KINC,TIME,NOEL,NPT,1COORDS,DIRCOS,JLTYP,SNAME)CINCLUDE'ABA_PARAM.INC'CDIMENSIONT_USER(3),TIME(2),COORDS(3),DIRCOS(3,3)CHARACTER*80SNAMEusercodingtodefineALPHAandT_USERRETURNEND 下面逐一介绍这个子程序的参数 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文件,代码以注释的形式给出讲解。SUBROUTINEUTRACLOAD(ALPHA,T_USER,KSTEP,KINC,TIME,NOEL,NPT,1COORDS,DIRCOS,JLTYP,SNAME)CINCLUDE'ABA_PARAM.INC'CDIMENSIONT_USER(3),TIME(2),COORDS(3),DIRCOS(3,3)CHARACTER*80SNAMEcharacter*10surfyzz,surfzzyc注意这里的字符串是大写,因为参数sname默认也是大写c我一开习惯性始认为fortran不区分大小写c结果卡了我一下午!!!!!!!!!!!!surfyzz='SURF-Y-ZZ'surfzzy='SURF-Z-ZY'cusercodingtodefineALPHAandT_USERcindex函数用于检查字符串surfyzz是否在sname中if(index(sname,surfyzz).gt.0)thenALPHA=1e+06*SIN(TIME(1))c设置面荷载方向,这里的是沿着z轴正向t_user(1)=0t_user(2)=0.0t_user(3)=1cindex函数用于检查字符串surfzzy是否在sname中elseif(index(sname,surfzzy).gt.0)thenALPHA=1e+06*COS(TIME(1))c设置面荷载方向,这里的是沿着y轴负向t_user(1)=0t_user(2)=-1t_user(3)=0.0endifRETURNEND 下面是带有子程序的部分inp文件,不带子程序的文件就不占用篇幅了,如有需要直接私信我。*Heading**Jobname:Job-1Modelname:Model-1**Generatedby:Abaqus/CAE2020*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,generate1,396,1*Elset,elset=Set-1,generate1,250,1*Elset,elset=_surf-y-zz_S6,internal,generate1,246,5*Surface,type=ELEMENT,name=surf-y-zz_surf-y-zz_S6,S6*Elset,elset=_surf-z-zy_S3,internal1,2,3,4,5,51,52,53,54,55,101,102,103,104,105,151152,153,154,155,201,202,203,204,205*Surface,type=ELEMENT,name=surf-z-zy_surf-z-zy_S3,S3**Section:Section-1*SolidSection,elset=Set-1,material=Material-1,*EndPart******ASSEMBLY***Assembly,name=Assembly***Instance,name=Part-1-1,part=Part-1*EndInstance***Nset,nset=Set-1,instance=Part-1-161,62,63,64,65,66,127,128,129,130,131,132,193,194,195,196197,198,259,260,261,262,263,264,325,326,327,328,329,330,391,392393,394,395,396*Elset,elset=Set-1,instance=Part-1-146,47,48,49,50,96,97,98,99,100,146,147,148,149,150,196197,198,199,200,246,247,248,249,250*EndAssembly*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.,*Elastic1e+10,0.25**----------------------------------------------------------------****STEP:Step-1***Step,name=Step-1,nlgeom=NO,inc=1000*Dynamic,direct0.01,10.,****BOUNDARYCONDITIONS****Name:fixedType:Displacement/Rotation*BoundarySet-1,1,1Set-1,2,2Set-1,3,3****LOADS****Name:surf-y-zzType:Surfacetraction**这里的关键字调用了utracload子程序*DsloadPart-1-1.surf-y-zz,TRSHRNU,1.,0.,0.,1.**Name:surf-z-zyType:Surfacetraction*DsloadPart-1-1.surf-z-zy,TRSHRNU,1.,0.,-1.,0.****OUTPUTREQUESTS***Restart,write,frequency=0****FIELDOUTPUT:F-Output-1***Output,field,variable=PRESELECT,frequency=1****HISTORYOUTPUT:H-Output-1***Output,history,variable=PRESELECT,frequency=1*EndStep来源:有限元先生