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

[子程序] 钢材断裂 VUSDFLD 单元不删除

[复制链接]
发表于 2016-1-2 11:18:35 | 显示全部楼层 |阅读模式 来自 北京
悬赏15仿真币未解决
本帖最后由 lyy3ghost 于 2016-1-12 19:15 编辑

小弟根据ABAQUS里帮助文件提供的,VUSDFLD后处理程序,修改了一下想看看能不能实现单元断裂的模拟,蓝色的部分判断为材料点删除的单元,但是并没有将整个单元删除,模型用的是壳单元,不知道是否与单元类型有关系。


昨天试了一下,前辈aerojeff所提供的模型,能明确看到单元的删除过程。
[子程序] VUSDFLD在模拟断裂中的简单应用

在帮助文件里有这么一句话:
Deleting elements from an Abaqus/Explicit mesh using state variables
……The structure of the block of material points passed to user subroutine VUMAT remains unchanged during the analysis; deleted material points are not removed from the block. Abaqus/Explicit will pass zero stresses and strain increments for all deleted material points. Once a material point has been flagged as deleted, it cannot be reactivated. An element will be deleted from the mesh only after all of the material points in the element are deleted. The status of an element can be determined by requesting output of the variable STATUS. This variable is equal to one if the element is active and equal to zero if the element is deleted.
我也查看了积分点输出的PEEQ,都大于我设置的破坏点的数值,想问下是什么原因?
同时还想请教一下,对于壳单元,在数组设置上有什么需要特别修改的么,以及各个变量的提取有没有对应参考的手册?
c
c User subroutine VUSDFLD for user-defined fields
c
      subroutine vusdfld(
c Read only -
     *   nblock, nstatev, nfieldv, nprops, ndir, nshr,
     *   jElemUid, kIntPt, kLayer, kSecPt,
     *   stepTime, totalTime, dt, cmname,
     *   coordMp, direct, T, charLength, props,
     *   stateOld,
c Write only -
     *   stateNew, field )
c
      include 'vaba_param.inc'
c
      dimension props(nprops),
     *          jElemUid(nblock), coordMp(nblock, *),
     *          direct(nblock, 3, 3), T(nblock,3,3),
     *          charLength(nblock),
     *          stateOld(nblock, nstatev),
     *          stateNew(nblock, nstatev),
     *          field(nblock, nfieldv)
      character*80 cmname
c --------------------------------------------------------------------
      character*3 cData(maxblk)
      dimension jData(maxblk)
      dimension eqps(maxblk)
c
      parameter ( zero = 0.d0 )
c
c Multi-process information (if needed)
      call vgetnumcpus( numProcesses )
      call vgetrank( kProcessNum )
c
c Read properties
      eqpsCrit = props(1)
      failDisp = props(2)
      Dmax = 0.001
c            Dmax = props(3)
c Get stresses and strains from previous increment
      jStatus = 1
      call vgetvrm( 'PEEQ', eqps, jData, cData, jStatus )
c
      do k = 1, nblock
         stateNew(k,1) = eqps(k)
         if ( eqps(k) .ge. Dmax ) then
c     Element deletion
            stateNew(k,3) = zero
         end if
      end do
c---------------------------------------------------------
c      do k = 1, nblock
c         eqpsOld = stateOld(k,1)
c         damageOld = stateOld(k,2)
c         damageNew = damageOld
c         if ( eqps(k) .gt. eqpsCrit ) then
c            deqps = eqps(k) - eqpsOld
c            dUeq = charLength(k) * deqps
c            damageNew = damageOld + dUeq / failDisp
c         end if
c         if ( damageNew .ge. Dmax ) then
c     Element deletion
c            stateNew(k,3) = zero
c            damageNew = Dmax
c         end if
c         stateNew(k,1) = eqps(k)
c         stateNew(k,2) = damageNew
c         field(k,1) = damageNew
c      end do
c
      return
      end

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2016-1-9 11:52:24 | 显示全部楼层 来自 湖南
Simdroid开发平台
帮你顶一下,这一块不懂~~~
回复

使用道具 举报

 楼主| 发表于 2016-1-12 19:15:05 | 显示全部楼层 来自 北京
阿福大宝儿 发表于 2016-1-9 11:52
帮你顶一下,这一块不懂~~~

已经解决了,输出的时候添加STATUS变量就行了
回复

使用道具 举报

发表于 2016-1-13 10:02:43 | 显示全部楼层 来自 陕西渭南
撒花 好东西要分享:):)
回复

使用道具 举报

发表于 2016-3-15 10:25:50 | 显示全部楼层 来自 天津
call vgetvrm用过关键字s没,按理说是一维的好像,怎么指定到特定的材料点?还有就是常数的定义都是在哪里定义的,为什么都不用parameter,请赐教
回复

使用道具 举报

发表于 2016-3-15 17:12:57 | 显示全部楼层 来自 天津
看帮助文档过来的,希望能加下微信sunxingwen001,在做vusdfld腐蚀的,希望能交流下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 21:41 , Processed in 0.038176 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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