ABAQUS UEL二次开发(用户自定义单元体力施加)

概述:研究了平面应力四边形单元的体力施加问题,分别采用四种方式给CPS4单元施加体力,为:

(1)采用ABAQUS自带的体力项施加体力

(2)采用DLOAD子程序施加体力

(3)将体力转化为节点力施加体力

(4)编写UEL,并通过JDLTYP接口施加体力

在动力隐式计算中对比上述计算结果,最终结果一致。



注:

()本帖子参考了如下链接:ABAQUS用户定义单元UEL与VUEL从入门到放弃系列3————讲一讲的RHS和NBLOCK-技术邻 (jishulink.com),以及该帖子评论区的讨论:

ABAQUS UEL二次开发(用户自定义单元体力施加)的图1

经验证,该发帖者、以及评论区这位评论者的说法是正确的,供大家参考。

()本帖子附件中的obj文件不可编辑,仅适用于该帖子对应的inp文件。



()模型信息

几何尺寸为2x2,弹性模量1e10,密度2000,泊松比0.25,重力加速度取9.81,网格尺寸为1x1,共计四个单元。边界条件为右端全固定,四个单元施加体力,示意图为:

ABAQUS UEL二次开发(用户自定义单元体力施加)的图2


()工况说明

对于工况一:采用ABAQUS自带的体力项施加体力,可以直接在ABAQUS中操作即可。

对于工况二:采用DLOAD子程序施加体力,需要先建立单元集合,然后在DLOAD中输出单元的体力项,这里的子程序编写非常的简单,直接计算单元的质量就行,编写的子程序为:

      SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,
     1 COORDS,JLTYP,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION TIME(2), COORDS (3)
      CHARACTER*80 SNAME
!输出单元质量
      F=-9.81*2000
      RETURN
      END

对于工况三:将体力转化为节点力施加体力,需要将单元的总质量分到节点上面,因为这里的算例非常的简单,而且单元的形状是规则的,四个单元的尺寸都是一样的,因此可以直接将单元的总质量直接均分到四个节点上,特别注意,当网格不规则或者体力复杂时候,需要借助形函数进行积分计算每个节点的质量,这里只是为了探索流程的正确性,都是采用最简单的。在这个算例中,单元的总质量为9.81*2000=19620,则每个节点的质量为4905。将质量分配到节点上,示意图为:

ABAQUS UEL二次开发(用户自定义单元体力施加)的图3

可以看到,一共需要计算九个节点的质量,顶层、中层、底层各三个节点。

对于底层节点,左边第一个节点:质量为4905,  中间节点为4905*2,右边第一个节点为4905

对于中层节点,左边第一个节点:质量为4905*2,中间节点为4905*4,右边第一个节点为4905*2

对于顶层节点,左边第一个节点:质量为4905,  中间节点为4905*2,右边第一个节点为4905

对应的inp文件为:

*Cload
Part-1-1.down-1, 2, -4905.
** Name: down-2   Type: Concentrated force
*Cload
Part-1-1.down-2, 2, -9810.
** Name: down-3   Type: Concentrated force
*Cload
Part-1-1.down-3, 2, -4905.
** Name: middle-1   Type: Concentrated force
*Cload
Part-1-1.middle-1, 2, -9810.
** Name: middle-2   Type: Concentrated force
*Cload
Part-1-1.middle-2, 2, -19620.
** Name: middle-3   Type: Concentrated force
*Cload
Part-1-1.middle-3, 2, -9810.
** Name: top-1   Type: Concentrated force
*Cload
Part-1-1.top-1, 2, -4905.
** Name: top-2   Type: Concentrated force
*Cload
Part-1-1.top-2, 2, -9810.
** Name: top-3   Type: Concentrated force
*Cload
Part-1-1.top-3, 2, -4905.

对于工况四:编写UEL,并通过JDLTYP接口施加体力,需要inp与UEL子程序的相互配合。

首先形成inp文件,包括用户自定义单元的定义个荷载的定义,对应的inp文件为:

*USER ELEMENT, NODES=4, TYPE=U1008, IPROPERTIES=3, PROPERTIES=8, COORDINATES=2, VARIABLES=1200
1, 2
*ELEMENT, TYPE=U1008, ELSET=SBFEM_UEL
1, 1, 2, 5, 4
2, 2, 3, 6, 5
3, 4, 5, 8, 7
4, 5, 6, 9, 8
*UEL PROPERTY, ELSET=SBFEM_UEL
1e+10, 0.25,2000,	0, 0, 0, 0, 0

然后定义荷载,这里的荷载定义至关重要,他直接体现在UEL的JDLTYP参数中,对应的inp文件为:

*Dload
Part-1-1.gravity, U1001, 1.

这里的“U1001”中的“1001”就是UEL中JDLTYP的数值,UEL中可写程序识别这个参数,然后进行体力(外力Fext)的计算,然后提现到RHS中。



()分析步设置

直接放inp文件吧,工况四的inp分析步设置为:其他三个工况的设置见附件。

*Step, name=Step-1, nlgeom=NO, inc=1000
*DYNAMIC, direct
0.01, 1., 
*Boundary
Part-1-1.FIXED, 1, 1
Part-1-1.FIXED, 2, 2
*Dload
Part-1-1.gravity, U1001, 1.
*Restart, write, frequency=0
*Output, field, variable=PRESELECT
*Output, history, variable=PRESELECT
*End Step

可以看到采用了动力隐式分析步,增量步长为0.01,计算总时长为1,总计增量步为100。



()计算结果

体力荷载向位移云图为:窗口1~4即为工况且1~4的计算结果。

ABAQUS UEL二次开发(用户自定义单元体力施加)的图4

体力荷载向支反力云图为:窗口1~4即为工况且1~4的计算结果。

ABAQUS UEL二次开发(用户自定义单元体力施加)的图5

不想写字了,有兴趣的直接移步附件吧。。。。。。。。。。。。。。



附件:

-------------
-------------
ABAQUS-DLOAD
  A.FOR
  JOB-1.INP
  R.BAT
ABAQUS-NODE-LOAD
  JOB-1.INP
  R.BAT
ABAQUS-PRESSURE-LOAD
  JOB-1.INP
  R.BAT
UEL-JDLTYP
  JOB-1.INP
  job.obj
  RUN.BAT
-------------
-------------
默认 最新
当前暂无评论,小编等你评论哦!
点赞 3 评论 收藏 1
关注