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

[子程序] 查找论坛发现无此类问题:状态变量statev调回问题?

[复制链接]
发表于 2011-9-11 10:49:28 | 显示全部楼层 |阅读模式 来自 湖南湘潭
本帖最后由 hljfy720 于 2011-9-17 15:22 编辑

各位大侠,小弟最近在看子程序usdfld中statev状态变量,查阅了论坛中以有资料,尤其是ma版主的两篇文章,收获较多,但是有一个问题一直无法解决,还望达人指点:
众所周知,状态变量可以在USDFLD中被更新,然后可以传递到其他用户子程序中去(如:CREEP,HETVAL,UEXPAN,UHARD,UHYPEL,UMAT,UMATHT,UTRS)。对状态变量可以在USDFLD中被更新的问题,有不解之处。比如说在umat中,如果我自定义一个变量,然后利用statev来存储(该变量与温度有关,并在每次计算中在umat中被更新),我想实现的是,利用usdfld中更新statev,然后传递到子程序中,在子程序中实现statev(1)=statev(1)+f(temp),然后再回传至usdfld中,从而循环计算。(ps:f(temp)是温度的函数)。
按照help例子理解,已经ma版主的文章中,如果想得到材料的具体积分点数据,须调用应用程序GETVRM来提取。
我的问题是statev(1)也需要利用getvrm来call吗,还是说在abaqus中软件自己会回传状态变量statev(1)至usdfld中?
如果需要call getvrm,该如何来写?

 楼主| 发表于 2011-9-13 09:33:23 | 显示全部楼层 来自 湖南湘潭
Simdroid开发平台
怎么没人帮我看看哈。各位大侠,帮个忙啊,小弟先行谢过了
回复 不支持

使用道具 举报

 楼主| 发表于 2011-9-17 15:26:36 | 显示全部楼层 来自 湖南湘潭
在hetval的help中关于statev有这个样的描述:
In all cases STATEV should be passed back from user subroutine HETVAL containing the values of the state variables at the end of the current increment.
那是不是说,我无需在call getvrm了。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-9-17 15:39:29 | 显示全部楼层 来自 湖南湘潭
本帖最后由 hljfy720 于 2011-9-17 15:43 编辑

      SUBROUTINE HETVAL(CMNAME,TEMP,TIME,DTIME,SVAR,FLUX,PREDEF,
     1                  DPRED)
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CMNAME
      DIMENSION TEMP(2),STATEV(1),PREDEF(1),TIME(2),FLUX(2),DPRED(1)
C
      STATEV(1)=STATEV(1)+STATEV(1)*DTIME
      FLUX(1)=0.40483*STATEV(1)
      RETURN
      END


      SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
    1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
    2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLA)
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CMNAME,ORNAME
      CHARACTER*3  **RAY(15)
      DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
    1 T(3,3),TIME(2)
      DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)
C
      IF(KINC.EQ.1) THEN
      STATEV(1)=5
      ELSE
      END IF

      FIELD(1)=STATEV(1)
C
      RETURN
      END

我不理解的是红色字体处,是不是直接这样输出就可以了。
在论坛中更多的都是讲usdfld中的statev传至umat或者其他程序中的,但是却很少提交在返回至usdfld的statev是如何传递的。
材料的积分点数据多用call getvrm来返回,但是状态变量好像又不能用此种方法返回,该如何处理,还望指点啊?
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 01:30 , Processed in 0.032424 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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