初识Abaqus UMAT 二次开发

初识Abaqus UMAT 二次开发的图1

初识Abaqus UMAT 二次开发

初识Abaqus UMAT 二次开发的图2

Abaqus是一款功能强大的商业有限元分析软件,它具有卓越的线性、非线性分析能力,提供了大量的二次开发接口(用户子程序),使它能够适应特定的分析需求。UMAT就是其中一个较为常用的用户子程序。不可否认,通常情况下使用UMAT都是为了实现一些超出Abaqus自带本构模型适用范围的功能。编写一个成熟UMAT子程序绝非易事,一般都需要编者具备足够的力学基础,这就使得很多初学者望而却步。为此,小编写了这篇文章,通过一个最简单示例分析,让读者对UMAT二次开发有一个初步的认识。

1

UMAT简介

      UMAT子程序具有强大的功能,使用UMAT子程序可以定义材料的本构关系,使用Abaqus材料库中没有包含的材料进行计算,扩充程序功能;几乎可以用于力学行为分析的任何分析过程;几乎可以把用户材料属性赋予Abaqus中的任何单元;可以和用于子程序“USDFLD”联合使用,通过“USDFLD”重新定义单元每一物质点上传递到UMAT中场变量的数值。

       使用UMAT必须在子程序中定义材料本构模型的雅克比矩阵,即应力增量对应变增量的变化率。

      在Abaqus软件中UMAT需要使用Fortran语言(一般都采用Fortran77语法、格式)进行编写。在WIN10操作系统下需要配置好Abaqus、intel Fortran、Visual Studio的连接,在B站、技术邻上有很多免费的教程,在此不再累述。

2

UMAT接口解析

      编写UMAT程序必须符合特定的格式,其基本框架如下:

1      SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
2     1 RPL,DDSDDT,DRPLDE,DRPLDT,
3     2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
4     3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
5     4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)
6C
7      INCLUDE 'ABA_PARAM.INC'
8C
9      CHARACTER*80 CMNAME
10      DIMENSION STRESS(NTENS),STATEV(NSTATV),
11     1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
12     2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
13     3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),
14     4 JSTEP(4)
15
16      user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD
17      andif necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT
18
19      RETURN
20      END

①熟悉Fortran语言的很容易发现这段代码整体上是一个“子例行子程序”。其Fortran77定义“子例行子程序”的一般形式为:

SUBROUTINE  子例行子程序名[(虚参数表)]

子例行子程序体

END  [SUBROUTINE[子例行子程序名]]

注意:在Fortran语言中“[]”内的可省略,但此处的虚参列表显然不能省略。

②行首的字母“C”是注释标志符号,程序运行的时候该行语句不执行。

③关键字“INCLUDE”的作用是引入后跟文件中的内容,类似于C语言中的“include”。文件 “ABA_PARAM.INC”随着Abaqus软件的安装而包含在操作系统中,它们含有重要的参数,帮助Abaqus主求解程序对用户子程序进行编译和链接。

④“CHARACTER*80 CMNAME”定义了一个字符串,用于存储材料名称。

⑤第10~14行用于定义各个参数变量的类型。关键字“DIMENSION”代表数组。

⑥第16~17行用于用户编写材料的本构关系模型。

⑦第19~20行为子程序结束标志。

⑧其它的一些编写Fortran77代码的注意事项。.f文件的FORTRAN77固定格式,不区分大小写,每行前6位为预留位置,正常语句从第7为开始编写。每行第5位代码代表这一行和上一行的连续关系。

由上述框架可知UMAT子程序共有37个虚参数,各虚参数的物理含义可以在Abaqus软件帮助文档中查到。遵循由简到难的学习规律,小编这里只介绍本文需要用到的几个虚参。

NTENS:应力矩阵或应变矩阵的维度,Truss单元为1,平面单元一般为3,三维单位一般为6。

DDSDDE(NTENS,NTENS):本构模型的雅克比矩阵,初识Abaqus UMAT 二次开发的图3。在线弹性条件下这个矩阵是常数矩阵。

STRESS(NTENS):应力矩阵(或向量)。包括NDI个直接分量,NSHR个剪切分量。

PROPS(NPROPS):用于输入的材料参数数组,NPROPS为输入参数的个数。

DSTRAN(NTENS):应变增量数组。

3

示例

      小编在前两次推文中已经介绍过两次桁架单元(第二章 平面杆件结构有限元法、第三章 平面杆件结构有限元法(二)),想必大家对桁架单元已经不陌生了。这里我们就使用UMAT完成一个最简单的桁架结构有限元分析计算。结构形式、边界条件如下图所示:

初识Abaqus UMAT 二次开发的图4

图1  模型边界条件示意图

结构一共有三根桁架组成,每根杆件截面面积均设置为10,左侧支座设置x向、y向位移约束,右侧支座设置y向位移约束,顶点处施加竖向集中力,大小为10。每根杆件划分成一个Truss单元。建立两个JOB,JOB-1使用Abaqus自带的线弹性本构模型,设置E为2.06e5,v为0.3。JOB-2使用Abaqus使用UMAT子程序实现线弹性本构模型,在User Material中添加参数2.06e5,在JOB General中选中UMAT子程序文件。设置方法如下图所示:

初识Abaqus UMAT 二次开发的图5

图2  材料参数设置

初识Abaqus UMAT 二次开发的图6

图3  UMAT用户子程序设置

其它参数设置与常规Truss单元线弹性计算相同,这里不再介绍。JOB-1、JOB-2的计算结果如下:

初识Abaqus UMAT 二次开发的图7

图4  使用Abaqus自带线弹性材料库的计算结果

初识Abaqus UMAT 二次开发的图8

图5  使用UMAT用户子程序的计算结果

对比图4、图5可知两个JOB的计算结果完全一致。

(本示例UMAT源码、CAE模型均可在公众号QQ群文件中免费获得)

4

结语

       Abaqus UMAT用户子程序接口功能非常强大,编写一个漂亮的UMAT子程序需要一定的力学基础(尤其是有限元、连续介质力学)。本文旨在让大家对UMAT有一个初步的了解,以及使用UMAT需要用到哪些基本知识,好在今后的学习中有侧重点。后续的推文中,小编还会进一步结合我们有限元理论模块的进度,进一步讲解Abaqus UMAT的使用。

最后欢迎批评指正,小编水平有限,希望大家跟我一起完善这部教材,造福更多的人,谢谢!

初识Abaqus UMAT 二次开发的图9

陪伴是最长情的告白

学而不思则罔

思而不学则殆

欢迎大家跟我一起学习CAE知识!

QQ群号:517718332

初识Abaqus UMAT 二次开发的图10

注:相关资料可在QQ群文件中下载

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

33
15
33