abaqus umat使用中会出现一些意想不到的错误,记录一下,也许有人会用得到
- 不能使用multiple processors: 调用umat计算时,有时会发现只要使用multiple processors就不能模拟,但是用单核就可以计算。在我这里,这个情况是由于我在调试程序时为了输出变量,写了很多write(),尤其是将每一步每个积分点的数据都创建一个.txt进行输出。这样的话,用multiple processors就会出问题。
- 用Notepad++编辑fortran(fixed form): 因为Notepad++的高亮等语法提示看着比较舒服,所以我将umat中的一个subroutine先在Notepad++里面编辑,然后直接粘贴到Microsoft VS里面。然后发现本来这一行已经超过长度限制了,但是VS里面并没有提示,非常难以发现。需要把复制的几行重新手动输入一下。
- 关于write()可以影响程序的运行结果: 调试umat的时候,会想利用write()输出一些变量,但是会发现有时候write()语句的添加会影响程序运行结果。我并没有想到好的解决办法,只是看哪一种可以得到我要的结果,就按照哪一种来运行程序。在Stack Overflow上面找到一些讨论: