顶部banner
Logo 折叠
全网首发仿真工程师项目实训
下载app
返回旧版
首页 成长助手 小邻学院 社区 发现
职业认证 企业服务 行业会议

登录解锁更多功能

还没有账号?立即注册

技术邻
技术引领职场价值
电话
0571-86682823
商务合作
service@jishulink.com

关于VUSDFLD中新旧变量的提取问题?

浏览: 2593 回答: 6

最近,我再将以前写的一个隐式计算的USDFLS的子程序改写为VUSDFLD,结果遇到的问题

我使用vusdfld在实现单元的删除,在里面计算等效塑性应变的增量的时候,我令一个变量等于stateOld,然后用stateNew减去这个值来实现我的目的,为什么不行?也就是stateOld里面并不是存的上一步的等效塑性应变的结果?

这个问题困扰我很久了,能否有大神助一臂之力的?

附上子程序和inp文件,以及odb的结果

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
      parameter( nrData=6 )

      character*3 cData(maxblk*6)
      dimension jData(maxblk*nrData)
      dimension eqps(nblock,maxblk*6),stress(nblock,maxblk*6)
    	real dc,rc,plim,alpha,beta,eqpsOld,damageOld
c
      parameter ( zero = 0.d0 )
	  
	  
C 定义损伤的极限值
      parameter ( one = 1.d0 )
C 通过vgetvrm函数来获取等效塑性应变和应力分量
      jStatus = 1
      call vgetvrm( 'PEEQ', eqps, jData, cData, jStatus )      
	  call vgetvrm( 'S', stress, jData, cData, jStatus )      
C 循环进行进行求解响应的变量	  
      do k = 1, nblock
		 damageOld = stateOld(k,10)
c-----------------------------------------------------------------------c
C 主要是计算应力三轴度	  
C 首相将提取的应力分量赋给状态变量/变量,用来计算mises应力和静水压力	  
C		 stateNew(k,51) = stress(k,1)
		 stress1 = stress(k,1)
C		 stateNew(k,52) = stress(k,2)
		 stress2 = stress(k,2)
C		 stateNew(k,53) = stress(k,3)
		 stress3 = stress(k,3)
C		 stateNew(k,54) = stress(k,4)
		 stress4 = stress(k,4)
C		 stateNew(k,55) = stress(k,5)
		 stress5 = stress(k,5)
C		 stateNew(k,56) = stress(k,6)
		 stress6 = stress(k,6)
C 计算mises应力和静水压力		 
		 smises1 = (stress1-stress2)**2+(stress2-stress3)**2+(stress1-stress3)**2
		 smises = (0.5*smises1)**0.5		 
		 hpress = (stress1+stress2+stress3)/3.0
C 将计算的mises应力和静水压力赋给状态变量		 
		 stateNew(k,1) = smises
		 stateNew(k,2) = hpress
C 计算应力三轴度,并将其赋给状态变量
		 if(smises.le.stoler) then
			triax=0.d0
		 else
			triax=(1.0*hpress)/smises
		 endif
		 stateNew(k,3) = triax
c-----------------------------------------------------------------------c
C 主要是计算断裂应变
c	根据确定的系数和计算的应力三轴度,计算临界断裂应变,并将其赋给状态变量
		 frac_strain = 1.556*exp(-1.5*triax)+0.093
		 stateNew(k,4) = frac_strain
c-----------------------------------------------------------------------c
C 主要是计算损伤增量
C 上一步的等效塑性应变stateNew(k,5),该步的等效塑性应变stateNew(k,6),增量stateNew(k,7)		 
C		 if(stepTime.eq.zero) then
C			stateNew(k,5) = 0.0
C			stateNew(k,6) = 0.0
C		 else
			stateNew(k,5) = stateOld(k,6)
C		 endif
		 stateNew(k,6) = eqps(k,1)
		 stateNew(k,7) = stateNew(k,6)-stateNew(k,5)
C 该步的损伤增量		 
		 stateNew(k,8) = stateNew(k,7)/stateNew(k,4)
c-----------------------------------------------------------------------c
C 初始的损伤量		 
C		 if(stepTime.eq.zero) then
C			stateNew(k,9) = 0.0
C			stateNew(k,10) = 0.0
C		 else
			stateNew(k,9) = damageOld
C		 endif
C 该步的损伤增量		 
		 stateNew(k,10) = stateNew(k,9) + stateNew(k,8)
		 stateOld(k,10) = stateNew(k,10)
c-----------------------------------------------------------------------c
C 根据损伤量的大小来对网格进行删除		 
         if(stateNew(k,10).gt.one) then 
c Element Deletion
           stateNew(k,11) = zero
         endif
      end do      
c
      return
      end



全部回答 (1)

默认 最新
蓝牙 2018年5月27日

      do k = 1, nblock

         damageOld = stateOld(k,10)

c-----------------------------------


这句实在不解,为何要做循环


2.stateold用来承上启下,最后你要更显这个值啊,要不你怎么传递给下一个载荷步

2018年5月27日
评论 6 点赞

相似问题

查看全部
  • ABAQUS的vusdfld模拟组织遇到云图显示错误和黑色区域的问题? 5个回答

    在这里附上子程序的内容,麻烦相关人士指正错误: subroutine vusdfld( c Read only - * nblock, nstatev, nfieldv, nprops, ndir, nshr, * jElemUid, kIntPt, kLayer, kSecPt, * stepTime, totalTime, dt, cmname, * coordMp, direct, T, c

  • 用VUSDFLD删除单元?? 11个回答

    大家好,目前试着在用VUSDFLD实现单元删除。删除准则很简单,即x方向应变大于0.001时,单元失效删除。根据论坛上已有的例子,试着编写了一段VUSDFLD子程序,但是运行后,发现结果与不加入子程序并无任何差别,子程序似乎没有起作用,请教大家解答。下面附上我的子程序,由于是第一次编写,估计有错误,请大家不吝赐教,感谢 c c User subroutine VUSDFLD for user-de

  • ABAQUS用VUSDFLD子程序模拟结果输出存在1.#QNAN,是什么原因? 1个回答

    代码 subroutine vusdfld( c Read only - * nblock, nstatev, nfieldv, nprops, ndir, nshr, * jElem, kIntPt, kLayer, kSecPt, * stepTime, totalTime, dt, cmname, * coordMp, direct, T, charLength, props, * stat

推荐阅读

ansys结构动力学仿真

ansys结构动力学仿真

技术邻小李 技术邻小李
¥150
ANSYS新版本功能速递: HFSS微放电仿真

ANSYS新版本功能速递: HFSS微放电仿真

Ansys中国 Ansys中国
免费
0#块箱梁托架法施工结构模拟

0#块箱梁托架法施工结构模拟

yudachuan1105 yudachuan1105
¥200
基于Hypermesh与ABAQUS联合仿真的摄像头模组跌落分析——工作创建以及检查

基于Hypermesh与ABAQUS联合仿真的摄像头模组跌落分析——工作创建以及检查

北鲲 北鲲
¥99
ABAQUS钢管混凝土柱温度场及耐火性能分析(未完)

ABAQUS钢管混凝土柱温度场及耐火性能分析(未完)

地下结构设计
¥40
abaqus三维切削数值模拟(sph法)

abaqus三维切削数值模拟(sph法)

abaquser abaquser
¥30
前沿技术!大数据分析及人工智能在优化软件中的应用

前沿技术!大数据分析及人工智能在优化软件中的应用

IDAJ中国 IDAJ中国
¥9.99
新一代智能头灯的动态设计评估与仿真

新一代智能头灯的动态设计评估与仿真

Ansys中国 Ansys中国
免费
UG培训第九课:自由曲面构造法

UG培训第九课:自由曲面构造法

luffy8610 luffy8610
¥20
应用ANSYS瞬态动力学法模拟啮合齿轮的高速转动

应用ANSYS瞬态动力学法模拟啮合齿轮的高速转动

夏日星空 夏日星空
¥35
一线科技工作者接受仿真咨询服务的全过程经验分享

一线科技工作者接受仿真咨询服务的全过程经验分享

技术邻直播 技术邻直播
免费
混凝土材性试块拉压数值模拟(ABAQUS通法建模初级案例3)

混凝土材性试块拉压数值模拟(ABAQUS通法建模初级案例3)

大平-结构工程 大平-结构工程
¥299
汽车仪表模具模流分析的实战讲解

汽车仪表模具模流分析的实战讲解

北卡 北卡
免费
UG有限元基础教程

UG有限元基础教程

moonshine🤓 moonshine🤓
免费
ABAQUS桁架结构强度分析

ABAQUS桁架结构强度分析

wj_2704 wj_2704
¥500
ADAS功能软件基础介绍

ADAS功能软件基础介绍

Alex王 Alex王
免费
使用已标定的车辆动力学模型提升开发效率

使用已标定的车辆动力学模型提升开发效率

VI-grade中国 VI-grade中国
免费
hypermesh_dyna小车碰撞护栏(无声)

hypermesh_dyna小车碰撞护栏(无声)

吴文泽 吴文泽
¥18
abaqus lamb波传播分析

abaqus lamb波传播分析

abaquser abaquser
¥25
abaqus模拟桩(三维)全过程

abaqus模拟桩(三维)全过程

红日当空q3120210076 红日当空q3120210076
¥62