本帖最后由 winnerqin 于 2013-4-21 10:10 编辑
问题描述:最近在学习和编写子程序(V)UMAT的过程中,发现VUMAT和UMAT程序中应变增量的含意有不同。这个不同点对于需要在VUMAT和UMAT之间做转换的人来说容易搞错,虽然很基础,不清楚也容易搞死人,所以我在本帖写个心得,提醒朋友们注意后处理输出的应变、UMAT的应变和VUMAT的应变有如下差别
理论准备:根据弹性理论,应力应变关系如下:
一、在Abaqus/Standard 和Abaqus/Explicit中,输出的数据中的应变分量均是工程应变:
二、在VUAMT中传入的应变增量strainInc的各个分量为:,而不是工程应变,所以在进行应力更新的时候应为:
EMU = E/(2.0*(1.0+ENU))
TWOMU = E/ (1.0+ENU)
BULK3 = E/(1.0-TWO*ENU)
LAM = TWOMU*BULK3*ENU/E
TRACE = STRAININC(NP,1) + STRAININC(NP,2) + STRAININC(NP,3)
STRESSNEW(NP,1) = STRESSOLD(NP,1) + LAM*TRACE + TWOMU*STRAININC(NP,1)
STRESSNEW(NP,2) = STRESSOLD(NP,2) + LAM*TRACE + TWOMU*STRAININC(NP,2)
STRESSNEW(NP,3) = STRESSOLD(NP,3) + LAM*TRACE + TWOMU*STRAININC(NP,3)
STRESSNEW(NP,4) = STRESSOLD(NP,4) + TWOMU*STRAININC(NP,4)
STRESSNEW(NP,5) = STRESSOLD(NP,5) + TWOMU*STRAININC(NP,5)
STRESSNEW(NP,6) = STRESSOLD(NP,6) + TWOMU*STRAININC(NP,6)
验证:我做了一个简单的弹性剪切的例子,输出了E.E23和VUAMT的23方向的应变,正好呈现两倍的关系:
三、在UAMT中传入的应变增量DSTRAN的各个分量却为工程应变 ,与VUAMT不同,所以在进行应力更新的时候,应为:
EMU = E/(2.0*(1.0+ENU))
TWOMU = E/ (1.0+ENU)
BULK3 = E/(1.0-TWO*ENU)
LAM = TWOMU*BULK3*ENU/E
TRACE = DSTRAN(1) + DSTRAN (2) + DSTRAN (3)
STRESS (1) = STRESS (1) + LAM*TRACE + TWOMU * DSTRAN(1)
STRESS (2) = STRESS (2) + LAM*TRACE + TWOMU * DSTRAN(2)
STRESS (3) = STRESS (3) + LAM*TRACE + TWOMU * DSTRAN(3)
STRESS (4) = STRESS (4) + EMU * DSTRAN(4)
STRESS (5) = STRESS (5) + EMU * DSTRAN(5)
STRESS (6) = STRESS (6) + EMU * DSTRAN(6)
或写成如下提供的UMAT程序
验证如下:输出了E.E23和UAMT的23方向的应变,正好重合:
以上内容均是个人观点,恭候大家来讨论 如果该帖切实解决了你遇到问题,鼓励大家发感谢贴,作为对本帖的推介
另提供验证所用线弹性(V)UAMT本构:
|