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

[子程序] 复合材料损伤umat应力更新问题

[复制链接]
发表于 2010-12-18 15:03:11 | 显示全部楼层 |阅读模式 来自 江苏南京
悬赏1仿真币已解决
请问应力更新用哪个语句:STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
还是:STRESS(I)=STRESS(I)+DDSDDE(I,J)*(STRAN(J)+DSTRAN(J))
能讲讲区别吗

最佳答案

查看完整内容

STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J) 这句就是说,应力等于上一步的应力+切线刚度*应变增量 STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J) 没见过这样写的,很奇怪。 如果你用 STRESS(I)=DDSDDE(I,J)*DSTRAN(J) 这样可能是用全量法的一种表达形式吧。
发表于 2010-12-18 15:03:12 | 显示全部楼层 来自 江苏南京
Simdroid开发平台
STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
这句就是说,应力等于上一步的应力+切线刚度*应变增量
STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
没见过这样写的,很奇怪。
如果你用
STRESS(I)=DDSDDE(I,J)*DSTRAN(J)
这样可能是用全量法的一种表达形式吧。
回复

使用道具 举报

 楼主| 发表于 2010-12-19 11:37:46 | 显示全部楼层 来自 江苏南京
2# xycf_a
没见过怎么写的啊,好像两次的表达式是一样的,STRESS,STRAN是上个增量步的计算结果吧,在本增量步内变化吗,DSTRAN是本增量步内迭代累计的应变吧,我现在是编个弹性的损伤本构,很简单,就是当达到最大值后,单元破坏,失去承载能力,我的应力是不是要直接赋值为零,搞了半天都没搞清楚的,希望能帮个忙,解答一下
回复

使用道具 举报

 楼主| 发表于 2010-12-19 15:22:48 | 显示全部楼层 来自 江苏南京
STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
这句就是说,应力等于上一步的应力+切线刚度*应变增量
STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
没见过这样写的,很奇怪。
如果你用
STRESS(I)=DDSDDE(I,J)*DSTR ...
xycf_a 发表于 2010-12-19 00:47

没见过这样写的,到底是哪一种呢
回复

使用道具 举报

发表于 2010-12-20 17:32:53 | 显示全部楼层 来自 广东深圳
本帖最后由 xycf_a 于 2010-12-20 17:35 编辑

3# 卢武铉
1。你要消减刚度的话可以用USDFLD来做,ABAQUS的例子的复合材料损失很简单,你先看看。但是这种方法不能将单元删去。
2。 UMAT能否做我真不清楚,也想知道,因为你将单元直接删去会不会照成收敛困难,等待你的尝试,做完了给我结果。
3。 UMAT中系统会自动给出DSTRAIN状态变量,然后STREE()是UMAT程序要求你更新的。你好像没搞清楚谁是系统给出的。UMAT要求你在已经知道上一步应力状态和这一步应变增量的情况下,计算出这一步的应力状态和DDSDDE矩阵。
罗嗦一句,STRESS()这个矩阵是你赋值的,每个积分点都有这么一个矩阵;
他用来保存应力状态,每次调用UMAT,你都需要更新他,每次调用开始的时候,很明显他开始的数值当然是上一次调用结束时候的数值。
回复

使用道具 举报

发表于 2010-12-20 17:36:49 | 显示全部楼层 来自 广东深圳
1。你要消减刚度的话可以用USDFLD来做,ABAQUS的例子的复合材料损失很简单,你先看看。但是这种方法不能将单元删去。
2。 UMAT能否做我真不清楚,也想知道,因为你将单元直接删去会不会照成收敛困难,等待你的尝试,做完了给我结果。
3。 UMAT中系统会自动给出DSTRAIN状态变量,然后STREE()是UMAT程序要求你更新的。你好像没搞清楚谁是系统给出的。UMAT要求你在已经知道上一步应力状态和这一步应变增量的情况下,计算出这一步的应力状态和DDSDDE矩阵。

罗嗦一句,STRESS()这个矩阵是你赋值的,每个积分点都有这么一个矩阵;

他用来保存应力状态,每次调用UMAT,你都需要更新他,每次调用开始的时候,很明显他开始的数值当然是上一次调用结束时候的数值。
回复

使用道具 举报

发表于 2010-12-20 17:39:27 | 显示全部楼层 来自 广东深圳
3# 卢武铉
1。你要消减刚度的话可以用USDFLD来做,ABAQUS的例子的复合材料损失很简单,你先看看。但是这种方法不能将单元删去。
2。 UMAT能否做我真不清楚,也想知道,因为你将单元直接删去会不会照成收敛困难,等待你的尝试,做完了给我结果。
3。 UMAT中系统会自动给出DSTRAIN状态变量,然后STREE()是UMAT程序要求你更新的。你好像没搞清楚谁是系统给出的。UMAT要求你在已经知道上一步应力状态和这一步应变增量的情况下,计算出这一步的应力状态和DDSDDE矩阵。
罗嗦一句,STRESS()这个矩阵是你赋值的,每个积分点都有这么一个矩阵;
他用来保存应力状态,每次调用UMAT,你都需要更新他,每次调用开始的时候,很明显他开始的数值当然是上一次调用结束时候的数值。
回复

使用道具 举报

发表于 2010-12-20 22:05:18 | 显示全部楼层 来自 LAN
本帖最后由 fr_zengtao 于 2010-12-20 22:06 编辑

关于应力更新问题,我有个小小的体会
STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
这样看起来表面上没有任何问题,但是这样有时候计算是错误的.,不信的话可以尝试Abaqus Verification Manual---User Subroutines---UMAT and UHYPER 第一列子,如果都这样更新,结果肯定是错的.如果我没有记错的话,应该是在第10个增量步的时候。可以把结果都输出来看看

个人观点:最保险的办法还是
DSTRAIN_E=DSTRAIN-DSTRAIN_P
DSTRESS = C: DSTRAIN_E
STRESS=STRESS+DSTRESS
回复

使用道具 举报

发表于 2010-12-21 08:25:58 | 显示全部楼层 来自 陕西西安
本帖最后由 shawn2008 于 2010-12-21 09:07 编辑

在UMAT中,对于金属的本构模型,在做试探应力的计算时,一般都是这样的写法,我常用下面的code,并没有发现任何错误。

C    SETUP STRESSOLD FOR ITERATION
      DO K1=1,NTENS
        STRESSOLD(K1) = STRESS(K1)
      END DO
C
C    CALCULATE TRIAL STRESS
C
      DO K1=1,NTENS
        DO K2=1,NTENS
          STRESS(K2) = STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)
        END DO
      END DO

C    CALCULATE TRIAL STRESS
      DO K1=1,NTENS
        STRESSNEW(K1) = STRESS(K1)
      END DO
回复

使用道具 举报

发表于 2010-12-21 16:18:18 | 显示全部楼层 来自 大连理工大学
学习中受教育
回复

使用道具 举报

发表于 2010-12-21 22:26:39 | 显示全部楼层 来自 LAN
9# shawn2008

不知道版主是不是我说的那个 Verification Manual里面的列子,如果是的话我觉得应该不是的

我记得是程序从第6步开始进入塑形,从第11步开始进入完全塑形,在第10步如果用

DSTRESS = DDSDDE * DSTRAIN

结果应该不对

从第6 到第 9 应力增量都是 4MPA 正常来说 第十步也是 4MPA 但是如果用 上面的式子来计算   却只有 1.3333333 MPA  不知道为什么
回复

使用道具 举报

发表于 2010-12-22 13:57:53 | 显示全部楼层 来自 陕西西安
11# fr_zengtao

我贴的那段代码是从自己开发的金属本构模型中copy出来的,你说的例子我还没运行过。
先计算 d\sigma = D * d\varepsilon,然后在相加是可以的,但在程序开发中,我们经常使用A=A+B来实现A变量的更新。
回复

使用道具 举报

发表于 2010-12-26 11:47:34 | 显示全部楼层 来自 四川成都
小弟看了深受体会
回复

使用道具 举报

发表于 2012-5-11 09:23:00 | 显示全部楼层 来自 澳大利亚
大神门 你们好 我是位刚开始接触umat的同学 我有些地方想向你请教下 不知道能否加下QQ 51380358
回复

使用道具 举报

发表于 2013-11-15 08:02:56 | 显示全部楼层 来自 德国
shawn2008 发表于 2010-12-22 13:57
11# fr_zengtao

我贴的那段代码是从自己开发的金属本构模型中copy出来的,你说的例子我还没运行过。

版主您好!
您给出的这个应力更新计算公式,好像只能在弹性阶段用吧,应为您使用了DDSDDE来代替刚度矩阵C,到了塑性阶段,由于DDSDDE不等于C了,也就不能这么用了。
望探讨~
回复

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-21 11:20 , Processed in 0.060930 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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