随动硬化von Mises率无关弹塑性本构理论及UMAT源代码解析

1 本构理论


1.1 率形式

本构方程为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图1

单轴拉伸的应力应变的硬化曲线如下:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图2

根据单轴试验得到硬化部分的曲线:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图3

当仅考虑随动硬化时,屈服面的中心在移动,而屈服面的大小不发生改变,即为常数。

屈服条件为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图4

增加了背应力来表示屈服面中心移动即随动硬化的效果。式中相对应力的表达式为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图5

流动法则为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图6

背应力的演化法则为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图7

式中:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图8

上标k代表随动部分(kinematic),表示以下随动硬化曲线的梯度:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图9




1.2 Return mapping算法应力更新

在给定增量应变以及上一步的状态变量的情况下,首先计算试验状态下的量:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图10

计算试验状态下的屈服函数值,判断是否发生屈服。当试验屈服函数值大于0时,说明需要进行塑性更正,反正则说明试验状态即为真实状态。以下对塑性更正环节进行详细说明。

当发生塑性流动时,需要求解以下非线性方程组:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图11

可以将上述非线性方程组简化值一个非线性方程。首先将第一个关于应变的方程代入本构方程中,可得偏应力的表达式为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图12

减去方程组中的第二式可以得到相对应力的表达式为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图13

可以看出试验相对应力与真实相对应力之间满足关系式:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图14

那么可以将相对应力表示为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图15

式中:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图16

最后将该相对应力代入到方程组中最后一个一致性方程中可得:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图17

该非线性方程的未知量为塑性乘子增量,可以用牛顿迭代法进行求解。另外可以利用公式:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图18

代入替换可得背应力和相对应力的公式:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图19

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图20

以及最后的非线性方程为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图21

使用牛顿迭代法求解的公式为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图22

式中雅克比为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图23

式中:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图24

是各向同性硬化曲线的梯度。当仅考虑随动硬化时,该项为0。



1.3 一致性切线刚度模量

当没有发现塑性流动时,一致性切线刚度矩阵即为弹性矩阵;当发生塑性流动时,应力更新公式为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图25

求导可得:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图26

式中:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图27

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图28

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图29

最终可得一致性切线刚度矩阵表达式为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图30

计算该一致性切线刚度矩阵的代码如下:

!*******************************************************************************
! 计算一致性切线刚度矩阵
function plastic_kinematic_compute_consistent_modl(mu,kappa, n_pt,hard_data,alpha_n0,gamma_inc,q_n1_trial,n_trial) result(tant_modl)


  real(8),intent(in) :: mu,kappa
  integer,intent(in) :: n_pt
  real(8),intent(in) :: hard_data(n_pt,2)
  real(8),intent(in) :: alpha_n0
  real(8),intent(in) :: gamma_inc
  real(8),intent(in) :: q_n1_trial,n_trial(6)
  real(8)            :: tant_modl(6,6)


  ! 局部常数
  ! 四阶单位偏张量
  real(8),parameter :: I_dev(6,6) = reshape( [2.0/3.0, -1.0/3.0, -1.0/3.0, 0.0, 0.0, 0.0, &
                                              -1.0/3.0, 2.0/3.0, -1.0/3.0, 0.0, 0.0, 0.0, &
                                              -1.0/3.0, -1.0/3.0, 2.0/3.0, 0.0, 0.0, 0.0, &
                                              0.0, 0.0, 0.0, 0.5, 0.0, 0.0, &
                                              0.0, 0.0, 0.0, 0.0, 0.5, 0.0, &
                                              0.0, 0.0, 0.0, 0.0, 0.0, 0.5], [6,6])
  ! 四阶单位球张量
  real(8),parameter :: I_vol(6,6) = reshape( [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, &
                                              1.0, 1.0, 1.0, 0.0, 0.0, 0.0, &
                                              1.0, 1.0, 1.0, 0.0, 0.0, 0.0, &
                                              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, &
                                              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, &
                                              0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [6,6])
  ! 局部变量
  real(8) :: alpha_n1
  real(8) :: Hk
  real(8) :: nn(6,6)
  real(8) :: term1,term2
  integer :: i,j


  alpha_n1 = alpha_n0 + gamma_inc
  Hk = plastic_kinematic_compute_H(n_pt,hard_data,alpha_n1)


  nn = 0.0
  do i =1,6
    do j =1,6
      nn(i,j) = n_trial(i) * n_trial(j)
    enddo
  enddo


  term1 = 2.0 * mu * (1.0 - gamma_inc * 3.0 * mu / q_n1_trial)
  term2 = 6.0 * mu * mu * (gamma_inc / q_n1_trial - 1.0 / (3.0 * mu + Hk))
  
  tant_modl = 0.0
  tant_modl = term1 * I_dev + term2 * nn + kappa * I_vol


  return
end function plastic_kinematic_compute_consistent_modl




2 算法框图

Return mapping的算法如下:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图31




3 umat源代码

umat采用Fortran90进行编写,其主程序的代码为:

include "plastic_kinematic_pack.f90"


subroutine UMAT(stress,statev,ddsdde,sse,spd,scd,                       &
                rpl,ddsddt,drplde,drpldt,                               &
                stran,dstran,time,dtime,temp,dtemp,predef,dpred,cmname, &
                ndi,nshr,ntens,nstatv,props,nprops,coords,drot,pnewdt,  &
                celent,dfgrd0,dfgrd1,noel,npt,layer,kspt,kstep,kinc)


    use plastic_kinematic_pack


    include 'aba_param.inc'


    character*80 cmname
    dimension    stress(ntens),statev(nstatv),ddsdde(ntens,ntens),   &
                ddsddt(ntens),drplde(ntens),                        &
                stran(ntens),dstran(ntens),time(2),                 &
                predef(1),dpred(1),props(nprops),coords(3),         &
                drot(3,3),dfgrd0(3,3),dfgrd1(3,3)


    !*******************************************************************************
    ! 材料参数
    integer :: n_pt                ! 硬化曲线的数据点个数
    real(8) :: hard_data(int((nprops-2)/2),2)   ! 硬化曲线的数据点表格
    real(8) :: E,nu
    real(8) :: mu,kappa
    real(8) :: sig_y0


    ! 从props数组中读取材料参数
    n_pt = int((nprops-3)/2)
    E = props(1)
    nu = props(2)
    sig_y0 = props(3)
    j=4
    do i = 1, n_pt
        hard_data(i,1) = props(j)
        hard_data(i,2) = props(j+1)
        j = j + 2
    enddo


    ! 更新应力,状态变量以及一致性切线刚度模量
    mu = E / (1.0 + nu) / 2.0
    kappa = E / (1.0 - 2.0*nu) / 3.0
    call plastic_kinematic_umat(mu,kappa,sig_y0, n_pt,hard_data, stran,dstran, stress,statev,ddsdde)


    return
end subroutine UMAT

相应的函数放在单独的一个f90文件的module中,用于调用,以实现主程序的整洁。



4 测试


4.1 一个单元加卸载测试

设置Abaqus自带线性随动硬化的本构为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图32

使用umat设置的材料参数为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图33

分别代表杨氏模量、泊松比,初始屈服应力,以及等效塑性应变与随动屈服应力的数据点。对于线性随动硬化模型,可以选取三个数据点,保证三点处于同一直线上,对最后一组数据点进行一个特殊处理,可以选取一个很大的塑性应变值,以保证计算过程中的等效塑性应变都落在这三个数据点点,由此插值得到便满足线性关系。

二者应力应变滞回曲线对比如图:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图34

二者等效塑性应变演化曲线对比如图:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图35

二者塑性耗散演化曲线对比如图:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图36



4.2 带孔板拉伸测试

设置的材料参数为:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图37

使用Abaqus计算的von Mises应力以及等效塑性应变的结果如下:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图38

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图39

使用umat计算的von Mises应力以及等效塑性应变的结果如下:

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图40

随动硬化von Mises率无关弹塑性本构理论以及umat源代码的图41

可以看出,二者的结果是完全相同的。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空