ABAQUS子程序-vuinter(1)
最近博主因为科研的需要,接触到abaqus子程序的二次开发,其中的vuinter是博主主要使用的子程序,它可以定义两表面之间的相互作用,比如力和热,功能比较强大。但可惜的是vuinter才出现不久,网上的资料甚少,所以博主在用的时候遇到了很多坑。因此开个专题来讲这个子程序。由于博主也是第一次使用,难免会有错误之处,请谅解,也欢迎大家一起讨论。官方手册放着了[2017abaqus用户手册](SIMULIA Online User Assistance (mit.edu))
VUINTER
(一)vuinter子程序介绍
VUINTER是定义表面相互作用的一个子程序,可自定义力和热的相互作用,比如物体表面摩擦,芯片之间的接触等等,能实现像VFRIC、VFRICTION等其他子程序的功能,但比它们功能更强大,值得一提的是根据官方手册上介绍,具有类似作用,比如定义表面作用的各种子程序之间不能同时调用,但如果一个是改变材料属性的vumat,另一个是vuinter的话就可以。
abaqus子程序是用Fortran语言进行编译,难度并不大,但要非常注意语言的格式,标点符号,中英文等等都会导致数据出错,得到错误的仿真结果。首先介绍vuinter使用的界面:
这个界面并不是不能动的,很多人在刚开始学的时候往往不敢动,但其实只要按照格式,会发现改变界面会方便许多,比如定义一个用户自定义变量或者矩阵。
(二)vuinter子程序的stess变量
由于博主并没有使用全部的变量,因此主要介绍关于力的stress变量,而且这个变量很坑
stress(nDir, nSlvNod)
这个表示上一个时间增量上表面的节点力(注意这里stress并不是应力的意思,这里是一个坑),它是必须要被定义的变量。我们可以在上面的conventions for stress中更深入了解这一变量。正的并且nDir为1的stress代表进入表面的压强(与局部法向方向相反),模拟压缩等效果,负的代表与局部法向方向相同的压强,可模拟粘附力等效果。nDir为2或3(二维只有2)代表给表面节点施加剪力(!!!注意是剪力,单位是N)。如果想亲自验证一下,可更改官方的例子。选择三维施加法向位移的例子
在Fortran程序中删除多余的编程,替换stress(i_str_S11,kSlv) = 50.d0
1 | subroutine vuinter( sfd, scd, spd, svd, |
最后在后处理中选择法向的应力云图,可直接观察到法向应力大小为50,最后我们验证一下给表面节点施加剪力。
Fortran中改成 stress(i_str_S12,kSlv) = 50.d0,给表面的所有节点的二方向施加一个50大小的剪力,方向可根据官方手册.我们可以发现剪应力并不是50pa(Mpa?),而是用所有的剪力之和除以表面面积。