Abaqus用户子程序umat的学习

Abaqus用户子程序umat的学习

说明:在文件中,!后面的内容为注释内容。本文为学习心得,很多注释是自己摸索得到。如有不正确的地方,敬请指正。
! ——————————————————————————
! 1、为何需要使用用户材料子程序( User-Defined Material, UMAT)?
! 很简单,当 ABAQUS 没有提供我们需要的材料模型时。所以,在决定自己定义一种新的材料模型之前,最好
! 对 ABAQUS 已经提供的模型心中有数,并且尽量使用现有的模型,因为这些模型已经经过详细的验证,并被广泛接受。
! ——————————————————————————
! UMAT 子程序具有强大的功能,使用 UMAT 子程序:
! (1)可以定义材料的本构关系,使用 ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。
! (2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予 ABAQUS 中的任何单元。
! (3) 必须在 UMAT 中提供材料本构模型的雅可比( Jacobian)矩阵,即应力增量对应变增量的变化率。
! (4) 可以和用户子程序“ USDFLD”联合使用,通过“ USDFLD”重新定义单元每一物质点上传递到 UMAT 中场变量的数值。
! ——————————————————————————
! 2、需要哪些基础知识?
! 先看一下 ABAQUS 手册( ABAQUS Analysis User’s Manual)里的一段话:
! Warning: The use of this option generally requires considerable expertise(一定的专业知识).
! The user is cautioned that the implementation(实现) of any realistic constitutive(基本)
! model requires extensive(广泛的) development and testing. Initial testing on a single element
! model with prescribed traction loading(指定拉伸载荷) is strongly recommended.
! 但这并不意味着非力学专业,或者力学基础知识不很丰富者就只能望洋兴叹,因为
! 我们的任务不是开发一套完整的有限元软件,而只是提供一个描述材料力学性能的本构
! 方程( Constitutive equation)而已。当然,最基本的一些概念和知识还是要具备的,比如:
! 应力(stress),应变( strain)及其分量; volumetric part 和 deviatoric part;模量( modul
! us)、泊松比(Poisson’s ratio)、拉梅常数(Lame constant);矩阵的加减乘除甚至求逆;还
! 有一些高等数学知识如积分、微分等。
! ——————————————————————————
! 3、 UMAT 的基本任务?
! 我们知道,有限元计算(增量方法)的基本问题是:已知第 n 步的结果(应力,应变等)
! σ[n],ε[n],然后给出一个应变增量 dε[n+1],计算新的应力σ[n+1]。 UMAT 要完成这一
! 计算, 并要计算 Jacobian 矩阵 DDSDDE(I,J) =Δσ/Δε 。 Δσ 是应力增量矩阵(张量或
! 许更合适), Δε 是应变增量矩阵。 DDSDDE(I,J) 定义了第 J 个应变分量的微小变化对第 I 个应力分量带来的变化。
! 该矩阵只影响收敛速度,不影响计算结果的准确性(当然,不收敛自然得不到结果)。
! ——————————————————————————
! 4、怎样建立自己的材料模型?
! 本构方程就是描述材料应力应变(增量)关系的数学公式,不是凭空想象出来的,
! 而是根据实验结果作出的合理归纳。比如对弹性材料,实验发现应力和应变同步线性增
! 长,所以用一个简单的数学公式描述。为了解释弹塑性材料的实验现象,又提出了一些
! 弹塑性模型,并用数学公式表示出来。
! 对各向同性材料( Isotropic material) ,经常采用的办法是先研究材料单向应力-应变
! 规律(如单向拉伸、压缩试验),并用一数学公式加以描述,然后把该规律推广到各应
! 力分量。这叫做“泛化“(generalization)。
! ——————————————————————————
! 5、一个完整的例子及解释
! 由于主程序与 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,KSTEP,KINC)      ! 共37个参数
      INCLUDE 'ABA_PARAM.INC'
      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)
      ! user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD 
      ! and, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT
      RETURN
END SUBROUTINE UMAT
! ------------------------------------------------------------------------------
! COORDS 当前积分点的坐标
! DDSDDE ( NTENS,NTENS) 大小为 NTENS×NTENS 的 Jacobian 矩阵( Δσ / Δε ),
! DDSDDE (I,J) 定义了第 J 个应变分量的微小变化对第 I 个应力分量带来的变化。通常 Jacobian 矩阵是一个对称矩阵,
! 除非在“ *USER MATERIAL”语句中加入了“ UNSYMM”参数;需要更新 DROT
! 对 Finite strain 问题,应变应该排除旋转部分,该矩阵提供了旋转矩阵,详见下面的解释;已知
! DSTRAN (NTENS) 应变增量 dε[n+1],已知
! DTIME 增量步的时间增量 dt ;已知
! KSTEP,KINC 传到用户子程序当前的 STEP 和 INCREMENT 值   KSTEP为载荷时间步;KINC为增量步
! NDI 直接应力(正应力)、应变个数,对三维问题、轴对称问题自然是 3( 11,22,
  • 26
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值