首页/文章/ 详情

九千CAE:ABAQUS UMAT与VUMAT材料子程序入门方法

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家/独家讲师
平台推荐
内容稀缺
7月前浏览5398

导读:ABAQUS提供了丰富的子程序接口,其中UMAT及VUMAT等子程序接口用于实现用户自定义材料本构,但UMAT和VUMAT等子程序的编程开发要求用户具有专业的连续介质力学知识储备和一定的Fortran编程能力,本文为大家介绍其入门知识。先前我在仿真秀发布过两篇技术文章:

感兴趣的朋友还可以报名1月27日20时(周六),仿真秀2024新年设计仿真新年报告第11期我将做ABAQUS UMAT与VUMAT材料子程序入门线上报告,详解介绍ABAQUS UMAT/VUMAT子程序开发的基本知识,详解UMAT/VUMAT及其异同点,以线弹性本构为例,详述其UMAT及VUMAT实现,并讲解子程序调试方法

一、Fortran语言要点及开发环境介绍

由于早期ABAQUS等一众有限元求解器都是Fortran语言开发的, 则ABAQUS提供的UMAT和VUMAT接口自然也是Fortran语言接口,尽管ABAQUS也提供了C++的子程序支持,但大家普遍还是采用Fortran来实现子程序的开发。
那么在采用Fortran进行开发的时候,其有两者格式,即Fortran77固定格式和Fortran90自由格式。由于ABAQUS默认支持的是固定格式,并且多数公开的经典的UMAT和VUMAT代码是固定格式的,所以本文主要介绍和推荐Fortran77固定格式。所谓固定格式,是有历史渊源的,最早代码是写在相应的程序纸上的,如下图所示。
早期编写F77程序使用如上图的F77程序纸,一行有80列,每行一条程序语句。这80列分为四个区,分别书写不同的内容:
  • *标号区:第l—5列,可以写l至5位整数。也可以没有标号。标号区中的空格不起作用。标号应是无符号整数(无正负号或小数点)。标号大小顺序没有任何要求。假如第二行的标号为1000,第三行的标号可以是10,也可以是99999。
  • *续行区:第6列,如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。
  • *语句区:第7—72列,不要求一定从第7列开始写语句,可以从第7列以后(72列以前)的任何一列开始写,但一行只能写一个语句。如果写满了72列,一旦在终端上修改程序时在该行又插入了一些字符,就会使本行最后几个字符超出语句区而引起意料不到的错误。特别注意到语句最后的空格将可能溢出72列,在某些计算机系统上将导致难以查出的错误。
  • *注释区:第73—80列,在卡片输入法时代,程序员一般利用此8列为程序行编序号以便查找。注释区只对程序员提供辨别信息,不是语句的一部分,在编译时不对72—80列作处理。
理解了以上的固定格式要点,其实Fortran的语法与其他编程语言都是类似的,如循环、判断等等语法。我们在UMAT和VUMAT编程过程中,重点和难点其实在于本构公式的有效推导,实际用到的语法并不多,只需要在有疑问的时候查阅相应的资料即可,这里推荐斯坦福大学的线上资料——https://web.stanford.edu/class/me200c/tutorial_77,供读者参考。
Fortran编程过程中,选择合适的IDE工具能够事半功倍,笔者目前采用VSCode软件+Modern Fortran的插件,可以实现代码着色和语法检查,其代码着色如下图所示:

当然,大家也可以选择适合自己的IDE来实现相同的功能,由于代码调试过程需要通过提交作业后来进行,所以对IDE的要求并不高,合适即可。

二、ABAQUS UMAT子程序

ABAQUS的UMAT子程序是ABAQUS提供的让用户能够自行实现相应本构模型的接口,相当于ABAQUS给我们提供了一个“函数”,我们需要依照我们要实现的本构来完成这个“函数”的内容。那么我们实现这一过程需要完成两个事项:(1) 完成应力更新;(2)完成材料的切线刚度矩阵更新。本文后续以线弹性UMAT为例,这里先介绍本构中将会用到的形参变量如下:
  • STRESS:Voigt形式的应力,长度为6的数组,完成STRESS的更新即完成应力更新。
  • DDSDDE:切线刚度矩阵,为6x6的二维数组,完成DDSDDE的更新即完成切线刚度矩阵的更新。
  • STRAN:Voigt形式的应变,长度为6的数组,不可更改。
  • DSTRAN:Voigt形式的应变增量,长度为6的数组,不可更改。
  • PROPS:储存本构参数的数组,长度取决于参数的个数。
以上变量便是我们在实现线弹性本构所需的,我们在下文给出线弹性UMAT的实现。

三、线弹性UMAT实现

根据广义胡可定律,线弹性应力的表达式为

写为增量形式为

相应的切线刚度矩阵为

那么依据上述本构关系,编写UMAT如下
         SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, 1 RPL,DDSDDT,DRPLDE,DRPLDT, 2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME, 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT, 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)C  INCLUDE 'ABA_PARAM.INC'C  CHARACTER*80 CMNAME  DIMENSION STRESS(NTENS),STATEV(NSTATV), 1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS), 2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1), 3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3), 4 JSTEP(4)c  PARAMETER(ONE=1.D0, TWO=2.D0)CC    user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCDC    and, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDTCC   ELAS PROPS  EE=PROPS(1)  ENU=PROPS(2)  EG=EE/(TWO*(ONE + ENU))  ELAM=(ENU*EE)/((ONE + ENU)*(ONE - TWO*ENU))CC   ELAS STIFFNESS  DO I=1, NDI        DO J=1, NDI              DDSDDE(I, J)=ELAM        END DO        DDSDDE(I, I)=TWO*EG+ELAM  END DO  DO I=NDI+1, NTENS        DDSDDE(I, I)=EG  END DOCC   CALC STRESS  DO I=1, NTENS        DO J=1, NTENS              STRESS(I)=STRESS(I)+DDSDDE(I, J)*DSTRAN(J)        END DO  END DOC  RETURN  END
    匹配UMAT的材料参数设置如下:

    我们用UMAT进行模型计算,并与ABAQUS内置的线弹性模型比较,两者结果一致。

    四、UMAT与VUMAT材料子程序入门公开课

    基于以上,为帮助用户更好的理解和掌握ABAUQS UMAT和VUMAT子程序开发入门。1月27日20时(周六),仿真秀2024新年设计仿真新年报告第11期《ABAQUS UMAT与VUMAT材料子程序入门》公开课。

    我们将邀请博士毕业于上海交大,现从事力学仿真研究,有9年有限元仿真经验,擅长材料本构开发,ABAQUS子程序开发,ABAQUS-Python二次开发,Hypermesh-ABAQUS联合仿真——仿真秀专栏作者九千老师做技术分享。即日起他也在仿真秀为大家提供Abaqus原创视频课程、培训和技术咨询等服务。最后欢迎大家报名来直播间交流,支持反复回看哦。

    以下是直播安排

    2024新年报告会(十一):ABAQUS UMAT与VUMAT材料子程序入门-仿真秀直播

    扫码观看直播和回放

    当前,九千CAE老师原创独家首发仿真秀视频课程《ABAQUS UMAT 材料子程序开发59讲:经典材料本构UMAT编程实例详解》已提名仿真秀2023年度仿真好内容,正在参与点赞抽奖活动,欢迎小伙伴为九千老师投票。

    凡是参与给老师课程点赞(每天五次看机会),不仅可以领取老师专属通用优惠券,还可参与仿真秀平台抽奖,奖品包含 ipad第九代、小米磁吸无线充电宝、JBL T280TWS X2 蓝牙耳机、科硕1TB移动硬盘、50 元 JD 卡、20 元 JD 卡、 仿真秀 7 日 VIP、20积分。参与活动中奖的用户,可在活动页“主会场-中奖记录"查看中奖结果,奖品中的仿真秀 VIP 和积分将即时发放到中奖用户账号中,其中仿真秀 VIP 中奖所开通的天数超过帐号最大开通天数上限(最多 60 天)的部分无效。其他奖品兑换截止时间为活动截止时间之后的 30 个工作日。

    (完)

    来源:仿真秀App
    ACTHyperMeshAbaqus二次开发通用pythonUM材料
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2024-01-29
    最近编辑:7月前
    仿真圈
    技术圈粉 知识付费 学习强国
    获赞 9743粉丝 21141文章 3406课程 216
    点赞
    收藏
    未登录
    还没有评论
    课程
    培训
    服务
    行家
    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈