写这篇文章的目的是因为在技术邻、b站、csdn、贴吧等各种中论坛关于子程序调试部分基本都是关于umat的,vumat的很少。虽然两者差别不大,但是楼主这里还是想详细介绍一下vumat,也算是自己的一个笔记。欢迎各位大佬指正不足。
首先常见的子程序调试有两种办法,一种是通过修改abaqus中环境文件,在子程序加入断点语句后,最后将进程添加vs后进行单步调试,这种方法不但繁琐,而且只能进行一个增量步内的调试,环境文件的更改也相当麻烦。不同版本的abaqus,vs,fortran容易出现更改后报错或者不显示,楼主个人不推荐这种办法。
第二种办法就是写入文件法,在子程序中加入open和write语句,就可以直接输出整个计算过程中输出量的值。我主要讲这种办法。
本人各个软件版本:
Abaqus2016+vs2013+Fortran2013
模型是一个1mm*1mm*1mm的立方体,顶部施加了位移载荷,底部进行了约束,整个模型只划分一个网格。子程序是vumat编写的。
写入文件法也大致分为两类,直接输入log文件和指定文件。
第一种:log文件直接输入
通过在子程序代码中直接加入语句write(*,*)+要输出的值,就可以在log文件中显示,效果图如下:
子程序语句:
Log文件显示:
PS:1.write语句中的*号一定要同时按shift和*一起输入的,并非直接按*的。
2.vs中单引号没有‘这样是因为vs中设置了默认字体为微软雅黑而非宋体。
3.楼主只是划分了一个网格,实际情况可能会划分多个网格,输出某个网格的数据的办法后续会更新
4.关于输出到某个特定的文件夹楼主进行过试验,但似乎好像是因为vumat的原因,总是报错(识别不了f语言中open语句的关键字),此后会继续试验,如果成功会继续发布。