

一、写在文前
在Abaqus/Standard模块中,用户可以利用子程序UEL来开发自定义单元,用以实现一些通过Abaqus内置单元无法实现的功能。如果编写恰当,用户自定义单元可以正常使用Abaqus/Standard的大部分功能,并且在用户子程序UEL中可以编写多个自定义单元,这些单元可以同时使用。
相比于开发完整的有限元程序,使用Abaqus来开发单元的优势是非常明显的:首先,Abaqus提供了大量的结构单元、分析程序以及前处理工具,这些功能可以与Abaqus UEL配合使用;其次,Abaqus中可以完成自定义单元的部分后处理工作;并且,开发子程序的效率也远高于开发完整的有限元程序。
尽管用户子程序UEL为在Abaqus中进行有限元分析提供了非常强大和灵活的工具,但由于开发自定义单元需要较高的数学和力学理论基础,加之前、后处理过程不便,因此相比于诸如UMAT之类的子程序,可供参考的资料非常少。本篇文章木木将带着大家从理论到代码,step-by-step编写最简单的二维线性弹簧单元,并与Abaqus自带的弹簧单元做对比,验证代码的正确性。

图1 弹簧单元的节点位移及节点力
二、理论公式





do 5 k1=1,4RHS(k1,NRHS)=0do 5 k2=1,4AMATRX(k2,k1)=05 continue
STX=PROPS(1)STY=PROPS(2)
AMATRX(1,1)=STXAMATRX(1,3)AMATRX(2,2)AMATRX(2,4)AMATRX(3,1)AMATRX(3,3)AMATRX(4,2)AMATRX(4,4)=STY
do 85 K1=1,4FORCE(K1)=0DO 80 K2=1,4FORCE(K1)=FORCE(K1)+AMATRX(K1,K2)*U(K2)80 continueRHS(K1,1)=RHS(K1,1)-FORCE(K1)85 continue
SVARS(1)=U(1)-U(3)SVARS(2)=U(2)-U(4)SVARS(3)=STX*SVARS(1)SVARS(4)=STY*SVARS(2)
*USER ELEMENT, NODES=2, TYPE=U1, PROPERTIES=3, COORDINATES=2, VARIABLES=41,2*ELEMENT, TYPE=U1, ELSET=SP1001, 64,44*UEL PROPERTY, ELSET=SP10.0, 20.0



图3 UEL弹簧单元结果变形图

两者结果一致,程序正确。
以下是课程大纲



扫码立即试看
该课程是木木同学自接触UEL以来,积攒下来的学习心得,在这里分享给大家。围绕着有限元理论和Fortran程序的数值实现过程讲解,主要分享UEL实现的过程,最终获得位移结果,对于非线性过程等暂未涉及,请看清课程说明进行购买!

从UEL内部实现原理入手,逐渐过渡到单元的编写,有限元常用的杆系单元(弹簧、杆、梁)、平面单元(三角形单元、等参四边形单元)、空间单元(C3D8实体单元),以及如何在INP中引入外部文件、云图显示问题等,都会逐一讲解。需求可酌情加餐视频内容,并为学员提供答疑服务。
(1)学习型仿真工程师
(2)理工科院校学生
(4) 想要入手UEL子程序的小白
(完)