一、写在文前
在Abaqus/Standard模块中,用户可以利用子程序UEL来开发自定义单元,用以实现一些通过Abaqus内置单元无法实现的功能。如果编写恰当,用户自定义单元可以正常使用Abaqus/Standard的大部分功能,并且在用户子程序UEL中可以编写多个自定义单元,这些单元可以同时使用。
相比于开发完整的有限元程序,使用Abaqus来开发单元的优势是非常明显的:首先,Abaqus提供了大量的结构单元、分析程序以及前处理工具,这些功能可以与Abaqus UEL配合使用;其次,Abaqus中可以完成自定义单元的部分后处理工作;并且,开发子程序的效率也远高于开发完整的有限元程序。
尽管用户子程序UEL为在Abaqus中进行有限元分析提供了非常强大和灵活的工具,但由于开发自定义单元需要较高的数学和力学理论基础,加之前、后处理过程不便,因此相比于诸如UMAT之类的子程序,可供参考的资料非常少。本篇文章木木将带着大家从理论到代码,step-by-step编写最简单的二维线性弹簧单元,并与Abaqus自带的弹簧单元做对比,验证代码的正确性。
图1 弹簧单元的节点位移及节点力
二、理论公式
do 5 k1=1,4
RHS(k1,NRHS)=0
do 5 k2=1,4
AMATRX(k2,k1)=0
5 continue
STX=PROPS(1)
STY=PROPS(2)
AMATRX(1,1)=STX
AMATRX(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,4
FORCE(K1)=0
DO 80 K2=1,4
FORCE(K1)=FORCE(K1)+AMATRX(K1,K2)*U(K2)
80 continue
RHS(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=4
1,2
*ELEMENT, TYPE=U1, ELSET=SP
1001, 64,44
*UEL PROPERTY, ELSET=SP
10.0, 20.0
图3 UEL弹簧单元结果变形图
两者结果一致,程序正确。
以下是课程大纲
扫码立即试看
该课程是木木同学自接触UEL以来,积攒下来的学习心得,在这里分享给大家。围绕着有限元理论和Fortran程序的数值实现过程讲解,主要分享UEL实现的过程,最终获得位移结果,对于非线性过程等暂未涉及,请看清课程说明进行购买!
从UEL内部实现原理入手,逐渐过渡到单元的编写,有限元常用的杆系单元(弹簧、杆、梁)、平面单元(三角形单元、等参四边形单元)、空间单元(C3D8实体单元),以及如何在INP中引入外部文件、云图显示问题等,都会逐一讲解。需求可酌情加餐视频内容,并为学员提供答疑服务。
(1)学习型仿真工程师
(2)理工科院校学生
(4) 想要入手UEL子程序的小白
(完)