许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  ABAQUS材料子程序学习记录(2020年12月1日)

ABAQUS材料子程序学习记录(2020年12月1日)

阅读数 5
点赞 0
article_banner


ABAQUS材料子程序学习

  • 前言
  • umat子程序 DeBug 计算结果

前言

记录自己学习过程,本文针对《非线性本构关系在ABAQUS中的实现》第二章“动态回弹模量“本构的学习,书中自带程序可能由于转成PDF的原因有一些排版上的混乱,下文的UMAT子程序,有VS code编写,和书中例子基本相同。

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    局部变量
      DIMENSION SDEV(NTENS)
      REAL THETA, THETA0, TAUOC, TAUOC0, DNU, DK, DN, DM, PA
      LOGICAL SINGULAR
C     DNU:Poisson's ratio => PROPS(1)
C     DK: Material parameter, k1=> PROPS(2)
C     DN: Material parameter,k2=> PROPS(3)
C     DM: Material parameter,k3=> PROPS(4)
C     PA: atmo=> PROPS(5)
C     DL: Material parameter,k4=> PROPS(6)

      DNU=PROPS(1)
      DK=PROPS(2)
      DN=PROPS(3)
      DM=PROPS(4)
      PA=PROPS(5)
      DL=PROPS(6)

C     计算弹性常数
      ALPHA=DNU/(1-2.0*DNU)
      ALPHA_BAR=3.0*ALPHA+1
      DLL=1.0/DL
C     偏应力与等效偏应力
      THETA=STRESS(1)+STRESS(2)+STRESS(3)
      DO I=1,NDI
        SDEV(I)=STRESS(I)-THETA*0.333333
      ENDDO
      DO I=NDI+1,NTENS
        SDEV(I)=STRESS(I)
      ENDDO
      TAUOC=0.0
      DO I=1,NTENS
        TAUOC=TAUOC+SDEV(I)**2
      ENDDO
      TAUOC=SQRT(TAUOC/3.0)
      THETA0=THETA
      TAUOC0=TAUOC

      IF(THETA .GT. -0.01) THETA0=-0.01
      IF(TAUOC .LT. 0.00001) TAUOC0=0.00001

C     更新恢复模量(Resilient modulus)
      RMR=DK*PA*(-THETA0/PA)**DN*(DL*TAUOC0/PA+1)**DM
      STATEV(1)=RMR
      SINGULAR=.TRUE.
      DO I=1,NTENS
        IF (STRESS(I) .LT. -0.1) SINGULAR=.FALSE.
      ENDDO
      IF (SINGULAR) THEN
        A=ALPHA
        B=0.0
        C=0.0
        D=0.0
      ELSE
        XX=TAUOC+PA*DLL
        YY=1.0/(XX*(1.0-DN)-DM*TAUOC)
        A=XX*YY*ALPHA_BAR*DN/3.0+ALPHA
        B=ALPHA_BAR*DN*XX*YY/THETA
        C=THETA*DM*YY/(9*TAUOC)
      END IF
      DDSDDE=0.0
      DO I=1,NDI
        DDSDDE(I,I)=1.0
      ENDDO
      DO I=NDI+1,NTENS
        DDSDDE(I,I)=0.5
      ENDDO
      DO I=1,NDI
        DO J=1,NDI
          DDSDDE(I,J)=DDSDDE(I,J)+A+B*SDEV(I)+C*SDEV(J)
     &     +D*SDEV(I)*SDEV(J)
        ENDDO
      ENDDO
      DO I=1,NDI
        DO J=NDI+1,NTENS
          DDSDDE(I,J)=DDSDDE(I,J)+C*SDEV(J)+D*SDEV(I)*SDEV(J)
          DDSDDE(J,I)=DDSDDE(J,I)+C*SDEV(J)+D*SDEV(I)*SDEV(J)
        ENDDO
      ENDDO
      DO I=NDI+1,NTENS
        DO J=NDI+1,NTENS
          DDSDDE(I,J)=DDSDDE(I,J)+D*SDEV(I)*SDEV(J)
        ENDDO
      ENDDO
C     应力更新
      DO I=1,NTENS
        DO J=1,NTENS
          STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
        ENDDO
      ENDDO
      RETURN
      END

DeBug

1)log文件中修改umat的语法错误

2)没有语法错误依旧出现:

   Error in job Job-Lug: Abaqus/ Standard Analysis exited with an error - Please see the message file for possible error messages if the file exists.

   Job Job-load aborted due to errors
解决 办法:1边界条件设置一定要从初始步开始

   2.载荷施加设置分析步施加较小载荷提供缓冲

   3.分析步的分析时间设置initial为更小的值(我这里0.05)

计算 结果

在这里插入图片描述


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

相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

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

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空