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

[子程序] 我编的三维梁的线弹性VUMAT程序,求围观,求指导!!!

[复制链接]
发表于 2013-5-13 21:03:02 | 显示全部楼层 |阅读模式 来自 江苏南京
悬赏5仿真币未解决
C
C USER SUBROUTINE VUMAT
      SUBROUTINE VUMAT (
C READ ONLY -
     *     NBLOCK, NDIR, NSHR, NSTATEV, NFIELDV, NPROPS, LANNEAL,
     *     STEPTIME, TOTALTIME, DT, CMNAME, COORDMP, CHARLENGTH,
     *     PROPS, DENSITY, STRAININC, RELSPININC,
     *     TEMPOLD, STRETCHOLD, DEFGRADOLD, FIELDOLD,
     *     STRESSOLD, STATEOLD, ENERINTERNOLD, ENERINELASOLD,
     *     TEMPNEW, STRETCHNEW, DEFGRADNEW, FIELDNEW,
C WRITE ONLY -
     *     STRESSNEW, STATENEW, ENERINTERNNEW, ENERINELASNEW )
C
      INCLUDE 'VABA_PARAM.INC'
C
      DIMENSION COORDMP(NBLOCK,*), CHARLENGTH(NBLOCK), PROPS(NPROPS),
     1     DENSITY(NBLOCK), STRAININC(NBLOCK,NDIR+NSHR),
     2     RELSPININC(NBLOCK,NSHR), TEMPOLD(NBLOCK),
     3     STRETCHOLD(NBLOCK,NDIR+NSHR),
     4     DEFGRADOLD(NBLOCK,NDIR+NSHR+NSHR),
     5     FIELDOLD(NBLOCK,NFIELDV), STRESSOLD(NBLOCK,NDIR+NSHR),
     6     STATEOLD(NBLOCK,NSTATEV), ENERINTERNOLD(NBLOCK),
     7     ENERINELASOLD(NBLOCK), TEMPNEW(NBLOCK),
     8     STRETCHNEW(NBLOCK,NDIR+NSHR),
     9     DEFGRADNEW(NBLOCK,NDIR+NSHR+NSHR),
     1     FIELDNEW(NBLOCK,NFIELDV),
     2     STRESSNEW(NBLOCK,NDIR+NSHR), STATENEW(NBLOCK,NSTATEV),
     3     ENERINTERNNEW(NBLOCK), ENERINELASNEW(NBLOCK)
C     
      CHARACTER*80 CMNAME
      DIMENSION INTV(2)
      PARAMETER ( ZERO = 0.D0, ONE = 1.D0, TWO = 2.D0, THREE = 3.D0,
     *     THIRD = ONE / THREE, HALF = 0.5D0, TWOTHDS = TWO / THREE,
     *     OP5 = 1.5D0 )
      PARAMETER ( TEMPFINAL = 1.D2, TIMEFINAL = 1.D-2 )
C
*
*   
      E      = PROPS(1)
      XNU    = PROPS(2)
*     
      TWOMU  = E / ( ONE + XNU )
      ALAMDA = TWOMU * XNU / ( ONE - TWO * XNU )
*     
*     IF STEPTIME EQUALS TO ZERO, ASSUME THE MATERIAL PURE ELASTIC
*     AND USE INITIAL ELASTIC MODULUS
*
c        IF(STEPTIME.EQ.ZERO)THEN
c        STRESS
      IF ( STEPTIME .EQ. ZERO ) THEN     
        DO K = 1, NBLOCK
*     TRIAL STRESS
          STRAININC(K,2) = (-XNU)*STRAININC(K,1)
          STRAININC(K,3) = (-XNU)*STRAININC(K,1)
          TRACE = STRAININC(K,1)+STRAININC(K,2)+STRAININC(K,3)
          STRESSNEW(K,1) = STRESSOLD(K,1) +
     *                  TWOMU*STRAININC(K,1) + ALAMDA*TRACE
          STRESSNEW(K,2) = ZERO
          STRESSNEW(K,3) = ZERO
          STRESSNEW(K,4) = STRESSOLD(K,4) + TWOMU*STRAININC(K,4)
          STRESSNEW(K,5) = ZERO
          STRESSNEW(K,6) = ZERO
        END DO
      ELSE
*     
        DO K = 1, NBLOCK
c        write(400,*) 'COORDMP=',COORDMP(K,*)
*     TRIAL STRESS
      STRAININC(K,2) = (-XNU)*STRAININC(K,1)
      STRAININC(K,3) = (-XNU)*STRAININC(K,1)
      TRACE = STRAININC(K,1)+XNU*STRAININC(K,2)+XNU*STRAININC(K,3)
          STRESSNEW(K,1) = STRESSOLD(K,1) +
     *                  TWOMU*STRAININC(K,1) + ALAMDA*TRACE
      STRESSNEW(K,2) = ZERO
      STRESSNEW(K,3) = ZERO
      STRESSNEW(K,4) = STRESSOLD(K,4) + TWOMU*STRAININC(K,4)
      STRESSNEW(K,5) = ZERO
      STRESSNEW(K,6) = ZERO

C-----UPDATE THE SPECIFIC INTERNAL ENERGY--------
      STRESSPOWER = HALF *
     1   (  ( STRESSOLD(K,1)+STRESSNEW(K,1) )*STRAININC(K,1)
     2    + ( STRESSOLD(K,2)+STRESSNEW(K,2) )*STRAININC(K,2)
     3    + ( STRESSOLD(K,3)+STRESSNEW(K,3) )*STRAININC(K,3)
     4    + ( STRESSOLD(K,4)+STRESSNEW(K,4) )*STRAININC(K,4)*TWO  )
C
      ENERINTERNNEW(K) = ENERINTERNOLD(K)
     1                  + STRESSPOWER / DENSITY(K)
C
          END DO
        END IF
*     
*     
      RETURN
      END

 楼主| 发表于 2013-5-13 21:05:38 | 显示全部楼层 来自 江苏南京
Simdroid开发平台
首先告诉大家,我的这个程序肯定有问题,就看你能不能看出来了!

点评

看这口气,好像不是来求助,而是在考人的~~呵呵....  发表于 2013-5-14 01:20
看这口气,好像不是来求助,而是在考人的~~呵呵....  发表于 2013-5-14 01:20
回复

使用道具 举报

发表于 2013-5-25 22:21:32 | 显示全部楼层 来自 天津
没看出来 哪里有问题
回复

使用道具 举报

 楼主| 发表于 2013-5-27 15:01:19 | 显示全部楼层 来自 江苏南京
lxzzwn1004 发表于 2013-5-25 22:21
没看出来 哪里有问题

     IF ( STEPTIME .EQ. ZERO ) THEN     
        DO K = 1, NBLOCK
*     TRIAL STRESS
          STRAININC(K,2) = (-XNU)*STRAININC(K,1)
          STRAININC(K,3) = (-XNU)*STRAININC(K,1)
          TRACE = STRAININC(K,1)+STRAININC(K,2)+STRAININC(K,3)
          STRESSNEW(K,1) = STRESSOLD(K,1) +
     *                  TWOMU*STRAININC(K,1) + ALAMDA*TRACE
          STRESSNEW(K,2) = ZERO
          STRESSNEW(K,3) = ZERO
          STRESSNEW(K,4) = STRESSOLD(K,4) + TWOMU*STRAININC(K,4)
          STRESSNEW(K,5) = ZERO
          STRESSNEW(K,6) = ZERO
        END DO
      ELSE
*   
请问这一部分需要吗?
回复

使用道具 举报

发表于 2013-6-6 03:00:00 | 显示全部楼层 来自 英国
其实我也不是很明白 不过STRAININC不应该是read only 吗。。。你怎么给他赋值了呢
回复

使用道具 举报

 楼主| 发表于 2013-6-7 10:53:33 | 显示全部楼层 来自 江苏南京
diesure 发表于 2013-6-6 03:00
其实我也不是很明白 不过STRAININC不应该是read only 吗。。。你怎么给他赋值了呢 ...

For beams in space you must define the thickness strains, strainInc(*,2) and strainInc(*,3)。
这个是手册中的一句话
回复

使用道具 举报

发表于 2015-3-19 15:04:11 | 显示全部楼层 来自 安徽合肥
nuaaxhf 发表于 2013-5-27 15:01
IF ( STEPTIME .EQ. ZERO ) THEN     
        DO K = 1, NBLOCK
*     TRIAL STRESS

需要。。
回复

使用道具 举报

发表于 2017-5-17 09:32:20 | 显示全部楼层 来自 北京
没看出来
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 10:10 , Processed in 0.039583 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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