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

[子程序] 求VUMAT 塑性各向同性强化模型

[复制链接]
发表于 2013-11-14 09:29:55 | 显示全部楼层 |阅读模式 来自 天津
悬赏30仿真币未解决
求VUMAT塑性各向同性强化模型  感谢了 急用!!!    小弟对塑性力学有了一些基本认识  愿意和大侠们讨论  向大侠们学习

发表于 2013-11-20 14:25:01 | 显示全部楼层 来自 北京
Simdroid开发平台
here is the VUMAT for Isotropic Hardening:
  1. C
  2. C Coding for Isotropic Hardening Plasticity VUMAT
  3. C

  4.        SUBROUTINE VUMAT(
  5. C Read only -
  6.      1 NBLOCK, NDIR, NSHR, NSTATEV, NFIELDV, NPROPS, LANNEAL,
  7.      2 STEPTIME, TOTALTIME, DT, CMNAME, COORDMP, CHARLENGTH,
  8.      3 PROPS, DENSITY, STRAININC, RELSPININC,
  9.      4 TEMPOLD, STRETCHOLD, DEFGRADOLD, FIELDOLD,
  10.      5 STRESSOLD, STATEOLD, ENERINTERNOLD, ENERINELASOLD,
  11.      6 TEMPNEW, STRETCHNEW, DEFGRADNEW, FIELDNEW,
  12. C Write only -
  13.      7 STRESSNEW, STATENEW, ENERINTERNNEW, ENERINELASNEW)
  14. C
  15.        INCLUDE 'VABA_PARAM.INC'
  16. C
  17.        DIMENSION PROPS(NPROPS), DENSITY(NBLOCK), COORDMP(NBLOCK),
  18.      1 CHARLENGTH(NBLOCK), STRAININC(NBLOCK, NDIR+NSHR),
  19.      2 RELSPININC(NBLOCK, NSHR), TEMPOLD(NBLOCK),
  20.      3 STRETCHOLD(NBLOCK, NDIR+NSHR),DEFGRADOLD(NBLOCK,NDIR+NSHR+NSHR),
  21.      4 FIELDOLD(NBLOCK, NFIELDV), STRESSOLD(NBLOCK, NDIR+NSHR),
  22.      5 STATEOLD(NBLOCK, NSTATEV), ENERINTERNOLD(NBLOCK),
  23.      6 ENERINELASOLD(NBLOCK), TEMPNEW(NBLOCK),
  24.      7 STRETCHNEW(NBLOCK, NDIR+NSHR),DEFGRADNEW(NBLOCK,NDIR+NSHR+NSHR),
  25.      8 FIELDNEW(NBLOCK, NFIELDV), STRESSNEW(NBLOCK,NDIR+NSHR),
  26.      9 STATENEW(NBLOCK, NSTATEV), ENERINTERNNEW(NBLOCK),
  27.      1 ENERINELASNEW(NBLOCK)

  28.        CHARACTER*80 CMNAME

  29. C LOCAL ARRAYS
  30. C ----------------------------------------------------------------
  31. C EELAS - ELASTIC STRAINS
  32. C EPLAS - PLASTIC STRAINS
  33. C FLOW - DIRECTION OF PLASTIC FLOW
  34. C ----------------------------------------------------------------
  35. C
  36.        DIMENSION EELAS(6),EPLAS(6),FLOW(6), HARD(3)
  37. C
  38.        PARAMETER(ZERO=0.D0, ONE=1.D0, TWO=2.D0, THREE=3.D0, SIX=6.D0,
  39.      1 ENUMAX=.4999D0, NEWTON=10, TOLER=1.0D-6,HALF=0.5D0)

  40. C ----------------------------------------------------------------
  41. C UMAT FOR ISOTROPIC ELASTICITY AND ISOTROPIC MISES PLASTICITY
  42. C CANNOT BE USED FOR PLANE STRESS
  43. C ----------------------------------------------------------------
  44. C PROPS(1) - E
  45. C PROPS(2) - NU
  46. C PROPS(3..) - SYIELD AN HARDENING DATA
  47. C CALLS UHARD FOR CURVE OF YIELD STRESS VS. PLASTIC STRAIN
  48. C ----------------------------------------------------------------
  49. C
  50. C ELASTIC PROPERTIES
  51. C
  52.        EMOD=PROPS(1)
  53.        ENU=MIN(PROPS(2), ENUMAX)
  54.        EBULK3=EMOD/(ONE-TWO*ENU)
  55.        EG2=EMOD/(ONE+ENU)
  56.        EG=EG2/TWO
  57.        EG3=THREE*EG
  58.        ELAM=(EBULK3-EG2)/THREE
  59.        NVALUE=NPROPS/2-1
  60. C
  61. C CALCULATE PREDICTOR STRESS AND ELASTIC STRAIN
  62. C
  63.        IF ( STEPTIME .EQ. ZERO ) THEN
  64.        DO K = 1, NBLOCK
  65.        TRACE = STRAININC(K,1) + STRAININC(K,2) + STRAININC(K,3)
  66.        STRESSNEW(K,1) = STRESSOLD(K,1)
  67.      *                  + EG2 * STRAININC(K,1) + ELAM * TRACE
  68.        STRESSNEW(K,2) = STRESSOLD(K,2)
  69.      *                  + EG2 * STRAININC(K,2) + ELAM * TRACE
  70.        STRESSNEW(K,3) = STRESSOLD(K,3)
  71.      *                  + EG2 * STRAININC(K,3) + ELAM * TRACE
  72.        STRESSNEW(K,4)=STRESSOLD(K,4) + EG2 * STRAININC(K,4)
  73.        IF ( NSHR .GT. 1 ) THEN
  74.        STRESSNEW(K,5)=STRESSOLD(K,5) + EG2 * STRAININC(K,5)
  75.        STRESSNEW(K,6)=STRESSOLD(K,6) + EG2 * STRAININC(K,6)
  76.        END IF
  77.        END DO
  78.        ELSE
  79. C
  80. C111111111111
  81. C
  82.        DO  K = 1, NBLOCK
  83. C
  84.        TRACE = STRAININC(K,1) + STRAININC(K,2) + STRAININC(K,3)
  85.        STRESSNEW(K,1) = STRESSOLD(K,1)
  86.      *                  + EG2 * STRAININC(K,1) + ELAM * TRACE
  87.        STRESSNEW(K,2) = STRESSOLD(K,2)
  88.      *                  + EG2 * STRAININC(K,2) + ELAM * TRACE
  89.        STRESSNEW(K,3) = STRESSOLD(K,3)
  90.      *                  + EG2 * STRAININC(K,3) + ELAM * TRACE
  91.        STRESSNEW(K,4)=STRESSOLD(K,4) + EG2 * STRAININC(K,4)
  92.        IF ( NSHR .GT. 1 ) THEN
  93.        STRESSNEW(K,5)=STRESSOLD(K,5) + EG2 * STRAININC(K,5)
  94.        STRESSNEW(K,6)=STRESSOLD(K,6) + EG2 * STRAININC(K,6)
  95.        END IF
  96. C
  97.        SMISES=(STRESSNEW(K,1)-STRESSNEW(K,2))**2 +
  98.      1        (STRESSNEW(K,2)-STRESSNEW(K,3))**2 +
  99.      2        (STRESSNEW(K,3)-STRESSNEW(K,1))**2
  100.        DO 90 K1=NDIR+1,NDIR+NSHR
  101.          SMISES=SMISES+SIX*STRESSNEW(K,K1)**2
  102. 90     CONTINUE
  103.        SMISES=SQRT(SMISES/TWO)
  104. C
  105. C RECOVER ELASTIC AND PLASTIC STRAINS AND ROTATE FORWARD
  106. C ALSO RECOVER EQUIVALENT PLASTIC STRAIN
  107. C
  108. C      CALL ROTSIG(STATEOLD(K,1), DROT, EELAS, 2, NDIR, NSHR)   
  109. C      CALL ROTSIG(STATEOLD(K,1+NDIR+NSHR), DROT, EPLAS, 2, NDIR, NSHR)

  110.        DO K1=1, NDIR+NSHR
  111.        EELAS(K1)=STATEOLD(K,K1)
  112.        EPLAS(K1)=STATEOLD(K,K1+NDIR+NSHR)
  113.        END DO
  114.        EQPLAS=STATEOLD(K,1+2*(NDIR+NSHR))!!!
  115. C
  116. C GET YIELD STRESS FROM THE SPECIFIED HARDENING CURVE
  117. C

  118.        CALL VUHARD(SYIEL0, HARD, EQPLAS, EQPLASRT,TOTALTIME,DT,TEMP,
  119.      1             DTEMP,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,CMNAME,
  120.      2             NUMFIELDV,NVALUE,PROPS(3))
  121. C
  122. C DETERMINE IF ACTIVELY YIELDING
  123. C
  124.        IF (SMISES.GT.(ONE+TOLER)*SYIEL0) THEN
  125. C
  126. C ACTIVELY YIELDING
  127. C SEPARATE THE HYDROSTATIC FROM THE DEVIATORIC STRESS
  128. C CALCULATE THE FLOW DIRECTION
  129. C
  130.        SHYDRO=(STRESSNEW(K,1)+STRESSNEW(K,2)+STRESSNEW(K,3))/THREE
  131.        DO K1=1,NDIR
  132.        FLOW(K1)=(STRESSNEW(K,K1)-SHYDRO)/SMISES
  133.        END DO
  134.        DO K1=NDIR+1,NDIR+NSHR
  135.        FLOW(K1)=STRESSNEW(K,K1)/SMISES
  136.        END DO
  137. C
  138. C SOLVE FOR EQUIVALENT VON MISES STRESS
  139. C AND EQUIVALENT PLASTIC STRAIN INCREMENT USING NEWTON ITERATION
  140. C
  141.        SYIELD=SYIEL0
  142.        DEQPL=ZERO
  143.        DO KEWTON=1, NEWTON
  144.        RHS=SMISES-EG3*DEQPL-SYIELD
  145.        DEQPL=DEQPL+RHS/(EG3+HARD(1))
  146.        CALL VUHARD(SYIELD,HARD,EQPLAS+DEQPL,EQPLASRT,TOTALTIME,DT,TEMP,
  147.      1            DTEMP,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,CMNAME,NUMFIELDV,
  148.      2            NVALUE,PROPS(3))
  149.        IF(ABS(RHS).LT.TOLER*SYIEL0) GOTO 10
  150.        END DO
  151. C
  152. C WRITE WARNING MESSAGE TO THE .MSG FILE
  153. C
  154.        WRITE(7,2) NEWTON
  155.     2  FORMAT(//,30X,'***WARNING - PLASTICITY ALGORITHM DID NOT',
  156.      1 'CONVERGE AFTER ',I3,' ITERATIONS')
  157.    10  CONTINUE
  158. C
  159. C UPDATE STRESS, ELASTIC AND PLASTIC STRAINS AND
  160. C EQUIVALENT PLASTIC STRAIN
  161. C
  162.        DO K1=1,NDIR
  163.        STRESSNEW(K,K1)=FLOW(K1)*SYIELD+SHYDRO
  164.        EPLAS(K1)=EPLAS(K1)+THREE/TWO*FLOW(K1)*DEQPL
  165.        EELAS(K1)=EELAS(K1)-THREE/TWO*FLOW(K1)*DEQPL
  166.        END DO
  167.        DO K1=NDIR+1,NDIR+NSHR
  168.        STRESSNEW(K,K1)=FLOW(K1)*SYIELD
  169.        EPLAS(K1)=EPLAS(K1)+THREE*FLOW(K1)*DEQPL
  170.        EELAS(K1)=EELAS(K1)-THREE*FLOW(K1)*DEQPL
  171.        END DO
  172.        EQPLAS=EQPLAS+DEQPL
  173. C
  174. C CALCULATE PLASTIC DISSIPATION
  175. C
  176.        SPD=DEQPL*(SYIEL0+SYIELD)/TWO
  177.          ENDIF
  178. C
  179. C STORE ELASTIC AND (EQUIVALENT) PLASTIC STRAINS
  180. C IN STATE VARIABLE ARRAY
  181. C
  182.        DO K1=1, NDIR+NSHR
  183.        STATENEW(K,K1)=EELAS(K1)
  184.        STATENEW(K,K1+NDIR+NSHR)=EPLAS(K1)
  185.        END DO
  186.        STATENEW(K,1+2*(NDIR+NSHR)) = STATEOLD(K,1+2*(NDIR+NSHR)) + DEQPL
  187. C
  188. C UPDATE THE SPECIFIC INTERNAL ENERGY -
  189. C
  190.        IF ( NSHR .EQ. 1 ) THEN
  191.        STRESSPOWER = HALF * (
  192.      * ( STRESSOLD(K,1) + STRESSNEW(K,1) ) * STRAININC(K,1) +
  193.      * ( STRESSOLD(K,2) + STRESSNEW(K,2) ) * STRAININC(K,2) +
  194.      * ( STRESSOLD(K,3) + STRESSNEW(K,3) ) * STRAININC(K,3) ) +
  195.      * ( STRESSOLD(K,4) + STRESSNEW(K,4) ) * STRAININC(K,4)
  196.        ELSE
  197.        STRESSPOWER = HALF * (
  198.      * ( STRESSOLD(K,1) + STRESSNEW(K,1) ) * STRAININC(K,1) +
  199.      * ( STRESSOLD(K,2) + STRESSNEW(K,2) ) * STRAININC(K,2) +
  200.      * ( STRESSOLD(K,3) + STRESSNEW(K,3) ) * STRAININC(K,3) ) +
  201.      * ( STRESSOLD(K,4) + STRESSNEW(K,4) ) * STRAININC(K,4) +
  202.      * ( STRESSOLD(K,5) + STRESSNEW(K,5) ) * STRAININC(K,5) +
  203.      * ( STRESSOLD(K,6) + STRESSNEW(K,6) ) * STRAININC(K,6)
  204.        END IF
  205.        ENERINTERNNEW(K) = ENERINTERNOLD(K) + STRESSPOWER / DENSITY(K)
  206. C
  207. C UPDATE THE DISSIPATED INELASTIC SPECIFIC ENERGY -
  208. C
  209.        PLASTICWORKINC = HALF * ( SYIEL0 + SYIELD ) * DEQPL
  210.        ENERINELASNEW(K) = ENERINELASOLD(K) + PLASTICWORKINC / DENSITY(K)
  211.        ENDDO   
  212.        END IF
  213. C
  214.        RETURN
  215.        END

  216.        SUBROUTINE VUHARD(SYIELD,HARD,EQPLAS,EQPLASRT,TIME,DTIME,TEMP,
  217.      1                   DTEMP,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,CMNAME,
  218.      2                   NUMFIELDV, NVALUE,TABLE)
  219.        INCLUDE 'VABA_PARAM.INC'
  220.        CHARACTER*80 CMNAME
  221.        DIMENSION HARD(3)
  222. C
  223.        DIMENSION TABLE(2, NVALUE)
  224. C
  225.        PARAMETER(ZERO=0.D0)

  226. C
  227. C SET YIELD STRESS TO LAST VALUE OF TABLE, HARDENING TO ZERO
  228. C
  229.        SYIELD=TABLE(1, NVALUE)
  230.        HARD(1)=ZERO
  231. C
  232. C IF MORE THAN ONE ENTRY, SEARCH TABLE
  233. C
  234.        IF(NVALUE.GT.1) THEN
  235.        DO K1=1, NVALUE-1
  236.        EQPL1=TABLE(2,K1+1)
  237.        IF(EQPLAS.LT.EQPL1) THEN
  238.        EQPL0=TABLE(2, K1)
  239.        IF(EQPL1.LE.EQPL0) THEN
  240.        WRITE(7, 1)
  241.     1  FORMAT(//, 30X, '***ERROR - PLASTIC STRAIN MUST BE ',
  242.      1 'ENTERED IN ASCENDING ORDER')
  243.        CALL EXIT
  244.        ENDIF
  245. C
  246. C CURRENT YIELD STRESS AND HARDENING
  247. C
  248.        DEQPL=EQPL1-EQPL0
  249.        SYIEL0=TABLE(1, K1)
  250.        SYIEL1=TABLE(1, K1+1)
  251.        DSYIEL=SYIEL1-SYIEL0
  252.        HARD(1)=DSYIEL/DEQPL
  253.        SYIELD=SYIEL0+(EQPLAS-EQPL0)*HARD(1)
  254.        GOTO 10
  255.        ENDIF
  256.        END DO
  257.    10  CONTINUE
  258.        ENDIF
  259.        RETURN
  260.        END
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-11-25 15:08:08 | 显示全部楼层 来自 天津
RathLusia 发表于 2013-11-20 14:25
here is the VUMAT for Isotropic Hardening:

这个你验证过吗?
回复

使用道具 举报

发表于 2014-10-22 10:04:02 | 显示全部楼层 来自 北京
收了,走过路过
回复

使用道具 举报

发表于 2015-1-24 16:34:21 | 显示全部楼层 来自 湖北武汉
RathLusia 发表于 2013-11-20 14:25
here is the VUMAT for Isotropic Hardening:

这个你验证过吗
回复

使用道具 举报

发表于 2015-8-23 23:33:16 | 显示全部楼层 来自 北京
走过路过顺手牵过
回复

使用道具 举报

发表于 2015-9-12 20:06:09 | 显示全部楼层 来自 湖北武汉
感谢楼主
回复

使用道具 举报

发表于 2016-3-2 16:46:21 | 显示全部楼层 来自 中国
RathLusia 发表于 2013-11-20 14:25
here is the VUMAT for Isotropic Hardening:

同问,验证过吗?
回复

使用道具 举报

发表于 2016-3-2 20:20:28 | 显示全部楼层 来自 北京
RathLusia 发表于 2013-11-20 14:25
here is the VUMAT for Isotropic Hardening:

已验证,感谢大神无私的教诲
回复

使用道具 举报

发表于 2021-3-25 20:14:03 | 显示全部楼层 来自 中国
顺手拿走
回复

使用道具 举报

发表于 2022-2-25 11:31:13 | 显示全部楼层 来自 浙江
FSDSFSFSSFSFSFSF
回复

使用道具 举报

发表于 2022-6-29 20:49:15 | 显示全部楼层 来自 亚太地区
66666666666666666666
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 16:40 , Processed in 0.034319 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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