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

谁知道怎么在ANSYS 中自定义蠕变方程呀

[复制链接]
yb41502337 该用户已被删除
发表于 2005-10-24 14:01:13 | 显示全部楼层 |阅读模式 来自 重庆南岸区
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2006-8-8 19:28:49 | 显示全部楼层 来自 黑龙江哈尔滨

creep模拟

Simdroid开发平台
这是我假定某种材料的蠕变曲线,根据曲线拟合了蠕变率,修改了ansys提供的子程序
*deck,usercreep       parallel  user                                    gal
      SUBROUTINE usercreep (impflg, ldstep, isubst, matId , elemId,
     &                      kDInPt, kLayer, kSecPt, nstatv, nprop,
     &                      prop  , time  , dtime , temp  , dtemp ,
     &                      toffst, statev, creqv , pres  , seqv  ,
     &                      delcr , dcrda)
c*************************************************************************
c     *** primary function ***
c           Define creep laws when creep table options are
c           TB,CREEP with TBOPT=100.
c           Demonstrate how to implement usercreep subroutine
c
c            Creep equation is
c               dotcreq := k0 * seqv ^ n * creqv ^ m * exp (-b/T)
c
c               seqv  is equivalent effective stress (Von-Mises stress)
c               creqv is equivalent effective creep strain
c               T     is the temperature
c               k0, m, n, b are materials constants,
c
c           This model corresponds to  primary creep function  TBOPT = 1
c
c                                                          gal 10.01.1998
c
c*************************************************************************
c
c     input arguments
c     ===============
c      impflg   (in ,sc   ,i)             Explicit/implicit integration
c                                         flag (currently not used)
c      ldstep   (in ,sc   ,i)             Current load step
c      isubst   (in ,sc   ,i)             Current sub step
c      matId    (in ,sc   ,i)             number of material index
c      elemId   (in ,sc   ,i)             Element number
c      kDInPt   (in ,sc   ,i)             Material integration point
c      kLayer   (in ,sc   ,i)             Layer number
c      kSecPt   (in ,sc   ,i)             Section point
c      nstatv   (in ,sc   ,i)             Number of state variables
c      nprop    (in ,sc   ,i)             size of mat properties array   
c
c      prop     (dp ,ar(*),i)             mat properties array   
c                                         This array is passed all the creep
c                                         constants defined by command
c                                         TBDATA associated with TB,CREEP
c                                         (do not use prop(13), as it is used
c                                         elsewhere)
c                                         at temperature temp.
c      time                               Current time
c      dtime                              Current time increment
c      temp                               Current temperature
c      dtemp                              Current temperature increment
c      toffst   (dp, sc,   i)             temperature offset from absolute zero
c      seqv     (dp ,sc  , i)             equivalent effective stress
c      creqv    (dp ,sc  , i)             equivalent effective creep strain
c      pres     (dp ,sc  , i)             hydrostatic pressure stress, -(Sxx+Syy+Szz)/3
c
c     input output arguments              input desc     / output desc
c     ======================              ==========       ===========
c      statev   (dp,ar(*), i/o)           user defined iinternal state variables at
c                                         time 't' / 't+dt'.
c                                         This array will be passed in containing the
c                                         values of these variables at start of the
c                                         time increment. They must be updated in this
c                                         subroutine to their values at the end of
c                                         time increment, if any of these internal
c                                         state variables are associated with the
c                                         creep behavior.
c
c     output arguments
c     ================
c      delcr    (dp ,sc  , o)             incremental creep strain
c      dcrda    (dp,ar(*), o)             output array
c                                         dcrda(1) - derivitive of incremental creep
c                                                    strain to effective stress
c                                         dcrda(2) - derivitive of incremental creep
c                                                    strain to creep strain
c
c     local variables
c     ===============
c      c1,c2,c3,c4 (dp, sc, l)            temporary variables as creep constants
c      con1        (dp ,sc, l)            temporary variable
c      t           (dp ,sc, l)            temporary variable
c
c*************************************************************************
c
c --- parameters
c
#include "impcom.inc"

      DOUBLE PRECISION ZERO
      PARAMETER        (ZERO = 0.0d0)
c
c --- argument list
c
      INTEGER          ldstep, isubst, matId , elemId,
     &                 kDInPt, kLayer, kSecPt, nstatv,
     &                 impflg, nprop
      DOUBLE PRECISION dtime , time  , temp  , dtemp , toffst,
     &                 creqv , seqv  , pres
      DOUBLE PRECISION prop(*), dcrda(*), statev(nstatv)
c
c --- local variables
c
      DOUBLE PRECISION c1    , c2    , c3    , c4    ,
     &                 con1  , delcr , t
c
c*************************************************************************
c
c *** skip when stress and creep strain are all zero
      if (seqv.LE.ZERO.AND.creqv.LE.ZERO) GO TO 990
c *** add temperature off set
      t       = temp + toffst
c *** Primary creep function
c        delcr := c1 * seqv ^ n * creqv ^ m * exp (-b/T) * dtime
      c1      = prop(1)
      c2      = prop(2)
      c3      = prop(3)
      c4      = prop(4)
c *** user need to make sure if c4 has nonzero value, temperature should be also nonzero.
      con1    = ZERO
      if(c4.ne.ZERO .and. t.gt.ZERO) con1 = c4/t
c *** calculate incremental creep strain
      delcr   = ZERO
c *** 修改为适合的蠕变方程     
c     IF(c1.gt.ZERO) delcr   = (exp( log(c1) +  c2 * log(seqv) +
c    &                         c3 * log(creqv) - con1 )) * dtime
      a1=1.14038
      b1=0.14038
      c1=0.4301
      a2=1.08148
      b2=0.02663
      E0=1.E4   
C     E0为初始弹性摸量
      IF(c1.gt.ZERO) then
            delcr=seqv/E0*(-b1*c1**TIME*log(c1))* dtime   
            IF(time.GE.1.0) delcr=seqv/E0*(a2*b2*TIME**(b2-1)) * dtime
      endif
c *** derivitive of incremental creep strain to effective stress
      dcrda(1)= c2 * delcr / seqv
c *** derivitive of incremental creep strain to effective creep strain
      dcrda(2)= c3 * delcr / creqv
c *** write the effective creep strain to last state variable for verification
      statev(nstatv) = creqv
990  continue
      return
      end

本帖子中包含更多资源

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

×

评分

1

查看全部评分

回复 1 不支持 0

使用道具 举报

发表于 2005-10-24 15:12:07 | 显示全部楼层 来自 武汉大学

Re:谁知道怎么在ANSYS 中自定义蠕变方程呀

用UPF自己开发,在usercreep.f 中自定义蠕变方程,然后编译连接成ANSYS.EXE文件替换ANSYS本身C:\Program Files\Ansys Inc\v90\ANSYS\bin\intel目录下的ANSYS.EXE就可以了。

希望经常过来指导!

评分

1

查看全部评分

mler 该用户已被删除
发表于 2005-10-25 12:15:15 | 显示全部楼层 来自 台湾
提示: 作者被禁止或删除 内容自动屏蔽
mler 该用户已被删除
发表于 2005-10-25 12:16:33 | 显示全部楼层 来自 台湾
提示: 作者被禁止或删除 内容自动屏蔽
yb41502337 该用户已被删除
 楼主| 发表于 2005-10-26 18:51:22 | 显示全部楼层 来自 重庆南岸区
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-10-9 13:02:31 | 显示全部楼层 来自 云南昆明
各位大侠能不能再详细些~  主要是子程序的编译是ansys自己可以进行,还是在fortran进行!  如果在fortran里进行,那是如何调入进去? 是替换掉fortran 的一段代码还是直接演算ansys这段子程序就行了! 谢谢!
回复 不支持

使用道具 举报

发表于 2010-4-26 11:08:36 | 显示全部楼层 来自 黑龙江哈尔滨
canoeist,你好,可否告知如何使用你的usercreep.f文件?
我已经生成了ansys.exe但是不知道如何调用它。
回复 不支持

使用道具 举报

发表于 2010-4-28 20:52:06 | 显示全部楼层 来自 湖北荆州
canoeist,这牛呀,牛
回复 不支持

使用道具 举报

发表于 2010-5-11 11:08:54 | 显示全部楼层 来自 江苏南京
正在做蠕变方面的分析,学习了!
回复 不支持

使用道具 举报

发表于 2010-5-20 16:40:11 | 显示全部楼层 来自 陕西西安
学习了。。。。。
回复 不支持

使用道具 举报

发表于 2010-5-26 11:04:41 | 显示全部楼层 来自 武汉大学
真是太牛了
回复 不支持

使用道具 举报

发表于 2010-9-11 11:08:40 | 显示全部楼层 来自 武汉大学
这位兄台,我也在做蠕变方面的研究,我们可以交流下吗?QQ:353936165
回复 不支持

使用道具 举报

发表于 2010-9-12 00:53:42 | 显示全部楼层 来自 湖南长沙
非常好,我也有这问题咨询
回复 不支持

使用道具 举报

发表于 2011-3-23 21:21:19 | 显示全部楼层 来自 大连理工大学
你好,我想咨询你些东西,我的QQ512504498
回复 不支持

使用道具 举报

发表于 2024-9-2 10:16:43 | 显示全部楼层 来自 北京
canoeist 发表于 2006-8-8 19:28
这是我假定某种材料的蠕变曲线,根据曲线拟合了蠕变率,修改了ansys提供的子程序
*deck,usercreep       para ...

谢谢大佬,看了您的代码后豁然开朗,我这就自己去尝试下
回复 不支持

使用道具 举报

发表于 2024-9-2 11:53:48 | 显示全部楼层 来自 北京
canoeist 发表于 2006-8-8 19:28
这是我假定某种材料的蠕变曲线,根据曲线拟合了蠕变率,修改了ansys提供的子程序
*deck,usercreep       para ...

大佬请问最后一步这个statev(nstatv) = creqv具体有什么用处吗,我看到前面对这个statev的解释是,“如果某些状态变量与蠕变行为有关,那他们必须在时间增量结束被更新”,但是这个creqv变量本来就是被自动更新输入到下一步子步骤中,所以没太明白,这个creqv的作用
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-19 13:56 , Processed in 0.057701 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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