CADTJ 发表于 2012-8-30 17:31:49

求助-混凝土VUMAT子程序软化段计算的实现问题

本帖最后由 CADTJ 于 2012-8-30 17:32 编辑

我在编制混凝土单轴材料子程序中,无法实现混凝土硬变软换段的计算。在子程序中我才用了如下的本构:


其数学表达式为


以此为依据我编制了子程序。建立了一个单轴受压梁模型,施加顶部位移荷载,提取了如下结果:
应力-时程图

应变-时程图

应力-应变图

通过查看这三张图片,发现计算到达压应力和压应变峰值点后,无法进入软化段。我自己试了很多方法,但依然毫无头绪。在万般无奈之下,特发此贴,希望各路高人各显神通,为我指点迷津。为了方便解决问题特意上传INP文件和FOR文件。




yuminhust2005 发表于 2012-8-30 17:31:50

本帖最后由 yuminhust2005 于 2012-9-9 17:09 编辑

CADTJ 发表于 2012-9-8 16:16 http://forum.simwe.com/static/image/common/back.gif
版主对模型进行了修改,只建立一个单元,我曾试过,能实现软化段。但是为什么采用多个单元时就不行呢?我 ...

为什么单元数多了,就不能出现下降段?这个问题一开始的确让我也困惑。
经过和对应umat程序的比较我发现:
这主要是因为采用vumat计算的是动力问题,存在惯性力,这导致不同单元的内力不一致。当内力较大的单元超过峰值应变后,材料无法保存内力平衡,而快速进入下降段,压缩变形迅速加大。而另一部分单元为了保持位移的协调,则出现了卸载的情况。

这也就可以解释你先前提取的曲线为什么没有出现下降段,反而是卸载过程(由于你的程序中没有设定卸载的准则,加载和卸载的曲线相同)。

当提取所有单元的应力-应变曲线,你会发现其中一部分单元的应力-应变曲线是有下降段,而另外的就是你先前提取的没有下降段的曲线。

由于设计算例的目的是要验证材料应力-应变关系是否按设定的本构进行。
因此,对于显式动力计算,最好采用单个单元测试。对于静力计算,单个和多个单元就无所谓了。

CADTJ 发表于 2012-9-3 21:27:14

自己踩踩 加点人气 等待高人指点

yuminhust2005 发表于 2012-9-6 17:06:05

本帖最后由 yuminhust2005 于 2012-9-8 15:25 编辑

错误地方:判断应变在哪个状态的语句错误;
错误原因:AND的优先级高于 LE, GT等
修改方法:加括号
因此程序中对应部分改为:
*第一受压阶段
*
          ELSE IF( (STATENEW(I,3) .LE. ZERO) .AND.
   *            (STATENEW(I,3) .GT. YIM0) ) THEN

*第二受压阶段
*
          ELSE IF((STATENEW(I,3) .LE. YIM0). AND.
   *               (STATENEW(I,3) .GT. YIMU))THEN

根据你的判断应变的过程来看,还可以更简单些:

*第一受压阶段
*
          ELSE IF( STATENEW(I,3) .GT. YIM0 ) THEN

*第二受压阶段
*
          ELSE IF(STATENEW(I,3) .GT. YIMU )THEN

理由:
在第一个IF的条件不成立下,第二个IF中的(STATENEW(I,3) .LE. ZERO)自动成立,不需要重复;
在第二个IF的条件不成立下,第三个IF中的(STATENEW(I,3) .LE. YIM0)自动成立,也不需要重复;


CADTJ 发表于 2012-9-7 10:17:18

yuminhust2005 发表于 2012-9-6 17:06 static/image/common/back.gif
错误地方:判断应变在哪个状态的语句错误;
错误原因:AND的优先级高于 LE, GT等
修改方法:加括号


谢谢人心的版主 我按照版主的建议,对子程序进行了修改 还是不能进入下降段。有一奇怪的现象,如果认为将本构曲线BC段的斜率改为正直,这样进行计算就能进入BC段!是否是因为这种软化段引起显示计算应变的突变?

yuminhust2005 发表于 2012-9-7 15:21:28

本帖最后由 yuminhust2005 于 2012-9-8 15:26 编辑

CADTJ 发表于 2012-9-7 10:17 http://forum.simwe.com/static/image/common/back.gif
谢谢人心的版主 我按照版主的建议,对子程序进行了修改 还是不能进入下降段。有一奇怪的现象,如果认为将 ...

你说的认为是正值是什么意思,具体对应程序的那句?
不排除还有其它的问题。

CADTJ 发表于 2012-9-7 17:25:15

yuminhust2005 发表于 2012-9-7 15:21 static/image/common/back.gif
你说的认为是正值是什么意思,具体对应程序的那句?

就如我要实现的本构如下图所示
D:\2012\单元数对软化段影响分析0904\2-5.png
更改原本构曲线BC段,使其在坐标系中指向左下方,不管加还是不加括号,都能进入BC段。
而当BC段在坐标系中指向左上方时,按斑竹所讲 加上括号后不能进入BC段。
斑竹有没有进行加括号后的试算,其结果如何?

CADTJ 发表于 2012-9-7 17:27:20

图片没有附上

yuminhust2005 发表于 2012-9-8 14:32:07

本帖最后由 yuminhust2005 于 2012-9-8 15:42 编辑

程序另一个有误的地方:
                TS1=YS*FC*( TWO*STATENEW(I,3)/(YS*YIM0) -
   *            (STATENEW(I,3)/(YS*YIM0))**2)
改为:
                TS1=YS*FC*( TWO*STATENEW(I,3)/YIM0 -
   *            (STATENEW(I,3)/YIM0)**2)
原因:变量YIM0中已经包含了系数YS,这个地方又重复乘上一遍。

上面说是vumat程序中隐藏的一些小问题。

现在看来:最主要的问题还不在子程序上,而是用来验证本构的算例模型设计不是很合理。

修改后的模型和vumat源程序见

计算得到的结果见:

久违的下降段出现了,哈哈





CADTJ 发表于 2012-9-8 16:16:21

yuminhust2005 发表于 2012-9-8 14:32 static/image/common/back.gif
程序另一个有误的地方:
                TS1=YS*FC*( TWO*STATENEW(I,3)/(YS*YIM0) -
   *             ...

版主对模型进行了修改,只建立一个单元,我曾试过,能实现软化段。但是为什么采用多个单元时就不行呢?我也用过两个单元来计算,也没有下降段?这是什么原因?

loveflowers 发表于 2012-9-8 18:16:26

两个单元也能实现软化段的呀。
          TWOMU   = EC/(ONE+XNU)
          ALAMDA= TWOMU*XNU/(ONE-TWO*XNU)
          STRAIN2 = (-XNU)*STRAIN1
          STRAIN2 = (-XNU)*STRAIN1
          TRACE   = STRAIN1+STRAIN2+STRAIN3

CADTJ 发表于 2012-9-8 18:24:58

loveflowers 发表于 2012-9-8 18:16 static/image/common/back.gif
两个单元也能实现软化段的呀。
          TWOMU   = EC/(ONE+XNU)
          ALAMDA= TWOMU*XNU/(ONE-TWO ...

那多个呢?

CADTJ 发表于 2012-9-9 20:16:46

本帖最后由 CADTJ 于 2012-9-9 20:29 编辑

yuminhust2005 发表于 2012-9-9 16:33 http://forum.simwe.com/static/image/common/back.gif
为什么单元数多了,就不能出现下降段?这个问题一开始的确让我也困惑。
经过和对应umat程序的比较我发现 ...

谢谢版主这些天热心的答复 问题解决了

CADTJ 发表于 2012-9-10 10:58:18

yuminhust2005 发表于 2012-9-9 16:33 static/image/common/back.gif
为什么单元数多了,就不能出现下降段?这个问题一开始的确让我也困惑。
经过和对应umat程序的比较我发现 ...

最佳答案

tianliqiang 发表于 2012-10-16 13:50:12

yuminhust2005 发表于 2012-9-6 17:06 static/image/common/back.gif
错误地方:判断应变在哪个状态的语句错误;
错误原因:AND的优先级高于 LE, GT等
修改方法:加括号


:handshake向版主学习

AP0107134 发表于 2013-3-29 12:54:31

怎么程序没有加载、卸载?

greenteasong 发表于 2013-7-18 23:43:07

CADTJ 发表于 2012-9-9 20:16 static/image/common/back.gif
谢谢版主这些天热心的答复 问题解决了

额,多个单元后怎么解决的?我现在遇到同样的问题,希望指点一下

CADTJ 发表于 2013-7-19 11:04:42

greenteasong 发表于 2013-7-18 23:43 static/image/common/back.gif
额,多个单元后怎么解决的?我现在遇到同样的问题,希望指点一下

多个单元还没有解决 我认为这是因为显示算法不遵循力的平衡的基本假设

greenteasong 发表于 2013-7-19 13:04:51

CADTJ 发表于 2013-7-19 11:04 static/image/common/back.gif
多个单元还没有解决 我认为这是因为显示算法不遵循力的平衡的基本假设
这是不是意味着不可以用VUMAT来计算复杂的结构?可是看文献中很多人都做了这方面的工作,不知道其原因是什么

CADTJ 发表于 2013-7-19 13:44:49

greenteasong 发表于 2013-7-19 13:04 static/image/common/back.gif
这是不是意味着不可以用VUMAT来计算复杂的结构?可是看文献中很多人都做了这方面的工作,不知道其原因是什 ...

只能说误差大 当单元足够多 计算时间步短才能保证精度
页: [1] 2 3
查看完整版本: 求助-混凝土VUMAT子程序软化段计算的实现问题