abaqusgo 发表于 2007-6-12 22:01:13

弹性模型用usdfld定义随应力状态变化的E,结果不合理,求助!

现在想实现的功能是用墨而库仑弹塑性,同时根据其应力状态调整弹性参数。
选的是线弹性模型,但是弹性模量是随着应力状态变化的,因此实际上已经不是一个线性问题,每个增量步需要迭代求平衡解,但是abaqus对于弹性模型始终是不迭代的,因此求出来的结果弹性模量偏大,进而导致数值震荡。
请问类似的问题该如何解决呢?由于只能定义E,没办法自行对应力差进行修正。我想了了两个办法,不知道有没有可行性:1、强制让abaqus对线弹性模型进行迭代,但好像没这个功能;2、每一步的常量是在当前步荷载施加前,由上一步的应力求出来的,如果在得到当前步的应力增量,就可以人为控制场变量,调整得到的E,让应力趋于正确的结果,但是不知道当前步的应力增量怎么获得。
我想这个问题是能解决的,应该是我没找到地方,请大家帮忙看怎么弄,谢谢!

lzq6666oopp 发表于 2007-6-12 22:49:15

这个问题好像有人做过,是不是应力应变的正负没调好?

sl731li 发表于 2007-6-12 23:05:13

Absolute value of current strain:
      CALL GETVRM('E',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
      MATLAYO,LACCFLA)
      EPS = ABS( ARRAY(1) )
这是abaqus documnt里的例子,用call GETVRM就可以得到应力

abaqusgo 发表于 2007-6-13 09:18:42

谢谢楼上的建议,我可以获得应力,并且根据应力求出E,E改变之后,程序应该进行迭代求平衡解,而不是直接加下一个增量步。
手册中的例子是一个超弹性问题,用应变作场变量,不知道是不是超弹性问题系统会自动迭代,如果不是的话,也应该存在这个问题的!

willnessless 发表于 2007-6-13 10:26:42

你可以试试把一个荷载步分成几个或几十个增量步来加,看看有没有用.

因为我觉得对于forward euler法,其实每个增量步ddsdde矩阵也是线性的,不过当你控制增量步的步长后,整个加载过程近似是非线性,当然有误差积累.

abaqusgo 发表于 2007-6-13 12:43:13

确实有改善,但不能根本上解决。已经给了万分之一的增量步,误差累计还是比较明显,导致震荡

逐梦游乐园 发表于 2018-9-19 08:22:47

楼主方便加一下QQ吗,我最近遇到的问题跟你这个差不多,我QQ452833612
页: [1]
查看完整版本: 弹性模型用usdfld定义随应力状态变化的E,结果不合理,求助!