初识Abaqus UMAT 二次开发
初识Abaqus UMAT 二次开发
Abaqus是一款功能强大的商业有限元分析软件,它具有卓越的线性、非线性分析能力,提供了大量的二次开发接口(用户子程序),使它能够适应特定的分析需求。UMAT就是其中一个较为常用的用户子程序。不可否认,通常情况下使用UMAT都是为了实现一些超出Abaqus自带本构模型适用范围的功能。编写一个成熟UMAT子程序绝非易事,一般都需要编者具备足够的力学基础,这就使得很多初学者望而却步。为此,小编写了这篇文章,通过一个最简单示例分析,让读者对UMAT二次开发有一个初步的认识。
UMAT简介
UMAT子程序具有强大的功能,使用UMAT子程序可以定义材料的本构关系,使用Abaqus材料库中没有包含的材料进行计算,扩充程序功能;几乎可以用于力学行为分析的任何分析过程;几乎可以把用户材料属性赋予Abaqus中的任何单元;可以和用于子程序“USDFLD”联合使用,通过“USDFLD”重新定义单元每一物质点上传递到UMAT中场变量的数值。
使用UMAT必须在子程序中定义材料本构模型的雅克比矩阵,即应力增量对应变增量的变化率。
在Abaqus软件中UMAT需要使用Fortran语言(一般都采用Fortran77语法、格式)进行编写。在WIN10操作系统下需要配置好Abaqus、intel Fortran、Visual Studio的连接,在B站、技术邻上有很多免费的教程,在此不再累述。
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 and, if 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):本构模型的雅克比矩阵,。在线弹性条件下这个矩阵是常数矩阵。
STRESS(NTENS):应力矩阵(或向量)。包括NDI个直接分量,NSHR个剪切分量。
PROPS(NPROPS):用于输入的材料参数数组,NPROPS为输入参数的个数。
DSTRAN(NTENS):应变增量数组。
示例
小编在前两次推文中已经介绍过两次桁架单元(第二章 平面杆件结构有限元法、第三章 平面杆件结构有限元法(二)),想必大家对桁架单元已经不陌生了。这里我们就使用UMAT完成一个最简单的桁架结构有限元分析计算。结构形式、边界条件如下图所示:
图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子程序文件。设置方法如下图所示:
图2 材料参数设置
图3 UMAT用户子程序设置
其它参数设置与常规Truss单元线弹性计算相同,这里不再介绍。JOB-1、JOB-2的计算结果如下:
图4 使用Abaqus自带线弹性材料库的计算结果
图5 使用UMAT用户子程序的计算结果
对比图4、图5可知两个JOB的计算结果完全一致。
(本示例UMAT源码、CAE模型均可在公众号QQ群文件中免费获得)
结语
Abaqus UMAT用户子程序接口功能非常强大,编写一个漂亮的UMAT子程序需要一定的力学基础(尤其是有限元、连续介质力学)。本文旨在让大家对UMAT有一个初步的了解,以及使用UMAT需要用到哪些基本知识,好在今后的学习中有侧重点。后续的推文中,小编还会进一步结合我们有限元理论模块的进度,进一步讲解Abaqus UMAT的使用。
最后欢迎批评指正,小编水平有限,希望大家跟我一起完善这部教材,造福更多的人,谢谢!
陪伴是最长情的告白
学而不思则罔
思而不学则殆
欢迎大家跟我一起学习CAE知识!
QQ群号:517718332
注:相关资料可在QQ群文件中下载

工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
