首页 理论教育编写UMAT和VUMAT的注意事项

编写UMAT和VUMAT的注意事项

【摘要】:在编写用户子程序UMAT或VUMAT时,以下几点是需要特别关注的:遵循Fortran、C或C++的语法规则。如果需要,也可以使用ABAQUS提供的实用子程序Utility,可方便快捷地达到计算需求。注意:UMAT是在每个材料点上被调用的,而VUMAT的一次调用会计算很多个积分点上的变量,nblock的具体数值与计算机相关,一般个人主机是136,这里涉及ABAQUS的显式程序Explicit的并行计算。因此,在写VUMAT时,需要注意每次更新nblock个积分点的应力。将测试结果和解析解进行比较。

在编写用户子程序UMAT或VUMAT时,以下几点是需要特别关注的:

(1)遵循Fortran、C或C++的语法规则。建议在代码编写完成后,先在VS中建立一个工程并编译,以排除基本语法错误。

(2)确保所有变量都被定义且进行了合适的初始化

(3)如果需要,也可以使用ABAQUS提供的实用子程序Utility,可方便快捷地达到计算需求。

(4)通过关键字*DEPVAR(在inp文件中)给状态变量分配足够的存储空间。

注意:UMAT是在每个材料点(或者说积分点)上被调用的,而VUMAT的一次调用会计算很多个(nblock个)积分点上的变量,nblock的具体数值与计算机相关,一般个人主机是136(部分AMD的CPU上是144),这里涉及ABAQUS的显式程序Explicit的并行计算。因此,在写VUMAT时,需要注意每次更新nblock个积分点的应力(循环nblock次)。(www.chuimin.cn)

编写完用户子程序后,可以通过简单的例子来验证所写的UMAT或VUMAT的正确性,通常情况下,先通过一个单元的模型来进行验证,一个单元的模型比较简单,输出相对较少,计算速度快,容易快速检查和定位子程序代码中的问题;另外,采用一个单元进行验证,结合前面提到的用户子程序调试(debug)方法,使用起来比较方便。一个单元的模型主要需要验证以下几方面内容:

(1)通过给定位移边界条件来验证应力和状态变量的积分方法是否正确。这其中包括一些测试:单轴拉伸和单轴压缩测试;斜方向单轴拉伸和压缩测试;单轴拉伸(或压缩)和有限转动测试;有限剪切情况的测试。

(2)通过给定载荷边界来验证雅可比求解的正确性,施加力边界后,可以输出边界上的力位移曲线以及材料点的力位移曲线,查看是否符合预期。

(3)将测试结果和解析解(或ABAQUS中的材料模型计算的结果)进行比较。

如果上面提到的测试均通过了,并且与解析解(或者已有的数值结果)吻合得很好,那么就可以将该子程序应用于解决更加复杂的问题。