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

[二次开发] 验证子程序时当材料达到屈服时网格发生畸变

[复制链接]
发表于 2020-6-17 11:01:16 | 显示全部楼层 |阅读模式 来自 陕西西安
我在验证子程序的时候,发现每当材料发生屈服时也就是应力应变曲线斜率为0时,网格发生畸变,我觉得会不会是此时应力增量变为0导致应力增量出了问题,这方面一直没搞懂,有没有大佬帮忙看看代码,多谢了
  1. !C**********************************************************
  2. !C    VUMAT FOR ZWT MODEL WITH IMPACT ANALYSIS
  3. !C    WRITTEN BY  ZZD
  4. !C**********************************************************
  5.       SUBROUTINE VUMAT(
  6. !C READ ONLY (UNMODIFIABLE)VARIABLES -
  7.      1  NBLOCK, NDIR, NSHR, NSTATEV, NFIELDV, NPROPS, LANNEAL,
  8.      2  STEPTIME, TOTALTIME, DT, CMNAME, COORDMP, CHARLENGTH,
  9.      3  PROPS, DENSITY, STRAININC, RELSPININC,
  10.      4  TEMPOLD, STRETCHOLD, DEFGRADOLD, FIELDOLD,
  11.      5  STRESSOLD, STATEOLD, ENERINTERNOLD, ENERINELASOLD,
  12.      6  TEMPNEW, STRETCHNEW, DEFGRADNEW, FIELDNEW,
  13. !C WRITE ONLY (MODIFIABLE) VARIABLES -
  14.      7  STRESSNEW, STATENEW, ENERINTERNNEW, ENERINELASNEW )
  15. !C
  16.       INCLUDE 'VABA_PARAM.INC'
  17. !C
  18.       DIMENSION PROPS(NPROPS), DENSITY(NBLOCK), COORDMP(NBLOCK,*),
  19.      1  CHARLENGTH(NBLOCK), STRAININC(NBLOCK,NDIR+NSHR),
  20.      2  RELSPININC(NBLOCK,NSHR), TEMPOLD(NBLOCK),
  21.      3  STRETCHOLD(NBLOCK,NDIR+NSHR),
  22.      4  DEFGRADOLD(NBLOCK,NDIR+NSHR+NSHR),
  23.      5  FIELDOLD(NBLOCK,NFIELDV), STRESSOLD(NBLOCK,NDIR+NSHR),
  24.      6  STATEOLD(NBLOCK,NSTATEV), ENERINTERNOLD(NBLOCK),
  25.      7  ENERINELASOLD(NBLOCK), TEMPNEW(NBLOCK),
  26.      8  STRETCHNEW(NBLOCK,NDIR+NSHR),
  27.      8  DEFGRADNEW(NBLOCK,NDIR+NSHR+NSHR),
  28.      9  FIELDNEW(NBLOCK,NFIELDV),
  29.      1  STRESSNEW(NBLOCK,NDIR+NSHR), STATENEW(NBLOCK,NSTATEV),
  30.      2  ENERINTERNNEW(NBLOCK), ENERINELASNEW(NBLOCK)
  31. !C
  32.       CHARACTER*80 CMNAME
  33. !C
  34. !C STRAIN
  35. !C     STATE(*,1) = STRAIN11
  36. !C     STATE(*,2) = STRAIN22
  37. !C     STATE(*,3) = STRAIN33
  38. !C     STATE(*,4) = STRAIN12
  39. !C     STATE(*,5) = STRAIN23
  40. !C     STATE(*,6) = STRAIN31
  41. !C
  42. !C UNDAMAGED STRESS
  43. !C     STATE(*,7) = STRESS11 (UNDAMAGED)
  44. !C     STATE(*,8) = STRESS22 (UNDAMAGED)
  45. !C     STATE(*,9) = STRESS33 (UNDAMAGED)
  46. !C     STATE(*,10) = STRESS12 (UNDAMAGED)
  47. !C     STATE(*,11) = STRESS23 (UNDAMAGED)
  48. !C     STATE(*,12) = STRESS31 (UNDAMAGED)
  49. !C
  50. !C     STATE(*,13) = DAMAGE
  51. !C
  52.       PARAMETER( ZERO = 0.D0, ONE = 1.D0, TWO = 2.D0, THREE = 3.D0,
  53.      1  THIRD = ONE/THREE, HALF = ONE/TWO, TWOTHIRDS = TWO/THREE,
  54.      2  THREEHALFS = 1.5D0)
  55. !C
  56. !C
  57.       E0     = PROPS(1)
  58.       ALPHA  = PROPS(2)
  59.       BETA   = PROPS(3)
  60. !c      E1     = PROPS(4)
  61.        MU     = PROPS(4)
  62. !c      THETA  = PROPS(6)
  63. !c     E2         = PROPS(7)
  64. !c      THETA2 = PROPS(8)
  65. !c      E      = PROPS(9)          
  66.       TWOMU  = TWO*MU
  67.       AF     = ONE/((ONE+MU)*(ONE-TWOMU))   
  68. !C
  69. !C
  70. !C
  71.             DO I = 1, NBLOCK
  72. !C CALCULATE DINCSIGMA=A*INCE(KL)   
  73.          DINC_SIGMA11=AF*((ONE-MU)*STRAININC(I,1)+MU*STRAININC(I,2)
  74.      1             +MU*STRAININC(I,3))
  75.          DINC_SIGMA22=AF*(MU*STRAININC(I,1)+(ONE-MU)*STRAININC(I,2)
  76.      1             +MU*STRAININC(I,3))
  77.          DINC_SIGMA33=AF*(MU*STRAININC(I,1)+MU*STRAININC(I,2)
  78.      1             +(ONE-MU)*STRAININC(I,3))
  79.          DINC_SIGMA12 = AF*((ONE-TWOMU)/TWO)*STRAININC(I,4)
  80.          DINC_SIGMA23 = AF*((ONE-TWOMU)/TWO)*STRAININC(I,5)
  81.          DINC_SIGMA31 = AF*((ONE-TWOMU)/TWO)*STRAININC(I,6)  
  82. !C UPDATE STRAIN  
  83.          STATENEW(I,1)=STATEOLD(I,1)+STRAININC(I,1)
  84.          STATENEW(I,2)=STATEOLD(I,2)+STRAININC(I,2)
  85.          STATENEW(I,3)=STATEOLD(I,3)+STRAININC(I,3)
  86.          STATENEW(I,4)=STATEOLD(I,4)+STRAININC(I,4)
  87.          STATENEW(I,5)=STATEOLD(I,5)+STRAININC(I,5)
  88.          STATENEW(I,6)=STATEOLD(I,6)+STRAININC(I,6)  
  89. !C CALCULATE INCREAMENT OF SIJ = INC_SIJ  
  90. !C
  91. !C         DINCF_S11=E0*DINC_SIGMA11+(TWO*ALPHA*STATENEW(I,1)+THREE
  92. !C     1      *BETA*(STATENEW(I,1)**TWO))*DINC_SIGMA11
  93. !C
  94. !C          DINCF_S22=E0*DINC_SIGMA22+(TWO*ALPHA*STATENEW(I,2)+THREE
  95. !C      1      *BETA*(STATENEW(I,2)**TWO))*DINC_SIGMA22          
  96. !C
  97. !C          DINCF_S33=E0*DINC_SIGMA33+(TWO*ALPHA*STATENEW(I,3)+THREE
  98. !C      1      *BETA*(STATENEW(I,3)**TWO))*DINC_SIGMA33
  99. !C
  100. !C          DINCF_S12=E0*DINC_SIGMA12+(TWO*ALPHA*STATENEW(I,4)+THREE
  101. !C      1      *BETA*(STATENEW(I,4)**TWO))*DINC_SIGMA12
  102. !C
  103. !C          DINCF_S23=E0*DINC_SIGMA23+(TWO*ALPHA*STATENEW(I,5)+THREE
  104. !C      1      *BETA*(STATENEW(I,5)**TWO))*DINC_SIGMA23
  105. !C
  106. !C          DINCF_S31=E0*DINC_SIGMA31+(TWO*ALPHA*STATENEW(I,6)+THREE
  107. !C      1      *BETA*(STATENEW(I,6)**TWO))*DINC_SIGMA31
  108. !C  CALCULATE LOW STRAIN RATE
  109. !c          DINCS_S11=STATENEW(I,7)*(EXP(-1.*DT/THETA)-ONE)+(((ONE-EXP(-1.*DT/
  110. !c     1           THETA))/(DT+0.000000000000001))*E1*THETA)*DINC_SIGMA11
  111. !c          DINCS_S22=STATENEW(I,8)*(EXP(-1.*DT/THETA)-ONE)+(((ONE-EXP(-1.*DT/
  112. !c     1           THETA))/(DT+0.000000000000001))*E1*THETA)*DINC_SIGMA22
  113. !c          DINCS_S33=STATENEW(I,9)*(EXP(-1.*DT/THETA)-ONE)+(((ONE-EXP(-1.*DT/
  114. !c     1           THETA))/(DT+0.000000000000001))*E1*THETA)*DINC_SIGMA33
  115. !c          DINCS_S12=STATENEW(I,10)*(EXP(-1.*DT/THETA)-ONE)+(((ONE-EXP(-1.*DT/
  116. !c     1           THETA))/(DT+0.000000000000001))*E1*THETA)*DINC_SIGMA12
  117. !c          DINCS_S23=STATENEW(I,11)*(EXP(-1.*DT/THETA)-ONE)+(((ONE-EXP(-1.*DT/
  118. !c     1           THETA))/(DT+0.000000000000001))*E1*THETA)*DINC_SIGMA23
  119. !c          DINCS_S31=STATENEW(I,12)*(EXP(-1.*DT/THETA)-ONE)+(((ONE-EXP(-1.*DT/
  120. !c     1           THETA))/(DT+0.000000000000001))*E1*THETA)*DINC_SIGMA31
  121. !C  CALCULATE HIGH STRAIN RATE PART
  122. !c       DINCT_S11=STATENEW(I,13)*(EXP(-1.*DT/THETA2)-ONE)+(((ONE-EXP(-1.
  123. !c     1    *DT/THETA2))/(DT+0.000000000000001))*E2*THETA2)*DINC_SIGMA11
  124. !c          DINCT_S22=STATENEW(I,14)*(EXP(-1.*DT/THETA2)-ONE)+(((ONE-EXP(-1.*DT/
  125. !c     1    THETA2))/(DT+0.000000000000001))*E2*THETA2)*DINC_SIGMA22
  126. !c          DINCT_S33=STATENEW(I,15)*(EXP(-1.*DT/THETA2)-ONE)+(((ONE-EXP(-1.*DT/
  127. !c     1    THETA2))/(DT+0.000000000000001))*E2*THETA2)*DINC_SIGMA33
  128. !c          DINCT_S12=STATENEW(I,16)*(EXP(-1.*DT/THETA2)-ONE)+(((ONE-EXP(-1.*DT
  129. !c     1    /THETA2))/(DT+0.000000000000001))*E2*THETA2)*DINC_SIGMA12
  130. !c          DINCT_S23=STATENEW(I,17)*(EXP(-1.*DT/THETA2)-ONE)+(((ONE-EXP(-1.*DT/
  131. !c     1    THETA2))/(DT+0.000000000000001))*E2*THETA2)*DINC_SIGMA23
  132. !c          DINCT_S31=STATENEW(I,18)*(EXP(-1.*DT/THETA2)-ONE)+(((ONE-EXP(-1.*DT/
  133. !c     1    THETA2))/(DT+0.000000000000001))*E2*THETA2)*DINC_SIGMA31
  134. !C        UPDATE THE HISTORY
  135. !c        STATENEW(I,7)=STATEOLD(I,7)+DINCS_S11
  136. !c          STATENEW(I,8)=STATEOLD(I,8)+DINCS_S22
  137. !c          STATENEW(I,9)=STATEOLD(I,9)+DINCS_S33
  138. !c          STATENEW(I,10)=STATEOLD(I,10)+DINCS_S12
  139. !c          STATENEW(I,11)=STATEOLD(I,11)+DINCS_S23
  140. !c          STATENEW(I,12)=STATEOLD(I,12)+DINCS_S31
  141. !c          STATENEW(I,13)=STATEOLD(I,13)+DINCT_S11
  142. !c          STATENEW(I,14)=STATEOLD(I,14)+DINCT_S22
  143. !c          STATENEW(I,15)=STATEOLD(I,15)+DINCT_S33
  144. !c          STATENEW(I,16)=STATEOLD(I,16)+DINCT_S12
  145. !c          STATENEW(I,17)=STATEOLD(I,17)+DINCT_S23
  146. !c          STATENEW(I,18)=STATEOLD(I,18)+DINCT_S31
  147.          STRESSNEW(I,1)=STRESSOLD(I,1)+E0*DINC_SIGMA11+
  148.         1         (TWO*ALPHA*STATENEW(I,1)+THREE
  149.      2    *BETA*(STATENEW(I,1)**TWO))*DINC_SIGMA11
  150. !C
  151.          STRESSNEW(I,2)=STRESSOLD(I,2)+E0*DINC_SIGMA22+
  152.         1         (TWO*ALPHA*STATENEW(I,2)+THREE
  153.      2      *BETA*(STATENEW(I,2)**TWO))*DINC_SIGMA22
  154. !C
  155.          STRESSNEW(I,3)=STRESSOLD(I,3)+E0*DINC_SIGMA33+
  156.         1         (TWO*ALPHA*STATENEW(I,3)+THREE
  157.      2      *BETA*(STATENEW(I,3)**TWO))*DINC_SIGMA33
  158. !C
  159.          STRESSNEW(I,4)=STRESSOLD(I,4)+E0*DINC_SIGMA12+
  160.         1         (TWO*ALPHA*STATENEW(I,4)+THREE
  161.      2      *BETA*(STATENEW(I,4)**TWO))*DINC_SIGMA12
  162. !C
  163.          STRESSNEW(I,5)=STRESSOLD(I,5)+E0*DINC_SIGMA23+
  164.      1         (TWO*ALPHA*STATENEW(I,5)+THREE
  165.      2      *BETA*(STATENEW(I,5)**TWO))*DINC_SIGMA23
  166. !C                 
  167.          STRESSNEW(I,6)=STRESSOLD(I,6)+E0*DINC_SIGMA31+
  168.         1         (TWO*ALPHA*STATENEW(I,6)+THREE
  169.      2      *BETA*(STATENEW(I,6)**TWO))*DINC_SIGMA31
  170.       END DO  
  171.       RETURN
  172.       END
复制代码


本帖子中包含更多资源

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

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-10-1 23:35 , Processed in 0.031901 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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