找回密码
 注册
Simdroid-非首页
查看: 101|回复: 2

[二次开发] 问个简单的umat问题,从一个弹性矩阵切换到另一个刚度...

[复制链接]
发表于 2018-12-7 16:42:25 | 显示全部楼层 |阅读模式 来自 中国
悬赏60仿真币已解决
本人初学umat子程序,试着弄个了一个简单的例子,但是一直不通,希望大佬们帮忙给看看。目的是这样的:材料先是弹性阶段,弹性阶段的雅克比矩阵如图1,然后当stress(1)到达props(3)设定的值的时候换到另一个雅克比矩阵继续计算(另一个雅克比矩阵就是弹性阶段的雅克比矩阵第三行所有系数都乘0.1),就完了。(本人知道有别的方法能够解决这个问题,但是为了学习umat所以从简单的开始弄)本人猜测是应变矩阵没有更新的问题,但是不知道咋弄,求各位大佬指点:


      SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
     1 RPL,DDSDDT,DRPLDE,DRPLDT,STRAN,DSTRAN,
     2 TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,MATERL,NDI,NSHR,NTENS,
     3 NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,CELENT,
     4 DFGRD0,DFGRD1,NOEL,NPT,KSLAY,KSPT,KSTEP,KINC)
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 MATERL
      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),
     4 DFGRD0(3,3),DFGRD1(3,3)
C
      DIMENSION EELAS(6),EPLAS(6),FLOW(6)
      PARAMETER (ONE=1.0D0,TWO=2.0D0,THREE=3.0D0,SIX=6.0D0)
      DATA NEWTON,TOLER/10,1.D-6/


C -----------------------------------------------------------
C     PROPS(1) - E
C     PROPS(2) - NU
C     PROPS(3) - SYIELD
C -----------------------------------------------------------
C
      IF (NDI.NE.3) THEN
         WRITE(6,1)
1       FORMAT(//,30X,'***ERROR - THIS UMAT MAY ONLY BE USED FOR ',
     1          'ELEMENTS WITH THREE DIRECT STRESS COMPONENTS')
      ENDIF
C
C     ELASTIC PROPERTIES
C
      EMOD=PROPS(1)
      ENU=PROPS(2)
      IF(ENU.GT.0.4999.AND.ENU.LT.0.5001) ENU=0.499
      EBULK3=EMOD/(ONE-TWO*ENU)
      EG2=EMOD/(ONE+ENU)
      EG=EG2/TWO
      EG3=THREE*EG
      ELAM=(EBULK3-EG2)/THREE
C
C     ELASTIC STIFFNESS
C
      DO 20 K1=1,NTENS
        DO 10 K2=1,NTENS
           DDSDDE(K2,K1)=0.0
10     CONTINUE
20   CONTINUE
C
      DO 40 K1=1,NDI
        DO 30 K2=1,NDI
           DDSDDE(K2,K1)=ELAM
30     CONTINUE
        DDSDDE(K1,K1)=EG2+ELAM
40   CONTINUE
      DO 50 K1=NDI+1,NTENS
        DDSDDE(K1,K1)=EG
50   CONTINUE
C
C    CALCULATE STRESS FROM ELASTIC STRAINS
C
      DO 70 K1=1,NTENS
        DO 60 K2=1,NTENS
           STRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)
60     CONTINUE
70   CONTINUE
C
C             判断塑性     
             IF (STRESS(1).GT.(ONE+TOLER)*PROPS(3)) THEN
C            
        DO 90 K1=1,NTENS
        DO 80 K2=1,NTENS
           DDSDDE(K2,K1)=0.0
80     CONTINUE
90   CONTINUE
C
C          开始计算塑性刚度矩阵
C      
        DO 110 K1=1,NDI
       DO 100 K2=1,NDI
           DDSDDE(K2,K1)=ELAM
100     CONTINUE
        DDSDDE(K1,K1)=EG2+ELAM
110   CONTINUE
      DO 120 K1=NDI+1,NTENS
        DDSDDE(K1,K1)=EG
120   CONTINUE


        DO 130 k1=1,NTENS
        DDSDDE(3,K1)=0.1*DDSDDE(3,K1)
130        CONTINUE
     
             DO 150 K1=1,NTENS
        DO 140 K2=1,NTENS
           STRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)
140     CONTINUE
150   CONTINUE       
        return
        end

附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

DO 130 k1=1,NTENS DDSDDE(3,K1)=0.1*DDSDDE(3,K1) 130 CONTINUE 就可以了,有什么问题?
发表于 2018-12-7 16:42:26 | 显示全部楼层 来自 陕西
Simdroid开发平台
DO 130 k1=1,NTENS
        DDSDDE(3,K1)=0.1*DDSDDE(3,K1)
130        CONTINUE
就可以了,有什么问题?
回复

使用道具 举报

 楼主| 发表于 2018-12-10 16:41:52 | 显示全部楼层 来自 中国
chuandong 发表于 2018-12-9 18:06
DO 130 k1=1,NTENS
        DDSDDE(3,K1)=0.1*DDSDDE(3,K1)
130        CONTINUE

谢谢,已经调通了,问题是if语句没弄对,已经修正了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-3-28 23:24 , Processed in 0.029001 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表