UFIELD和USDFLD是Abaqus极具迷惑性的两个子程序,这两个家伙长得就比较像兄弟,而且都是用来自定义场变量的,同时还有一个状态变量state variable掺和在中间,再加上帮助里面的解释也基本上不是人话,很容易就把人搞二了,今天帖主就来撸一撸这两个子程序。
1、自定义场变量
Abaqus中场变量可以先简单的理解为每个单元或者每个节点都有一个值的变量,像结果输出中的温度、应力和应变等。有时候我们也需要定义Abaqus中不存在的一些稀奇古怪,有意义或无意义的场变量,比如浓度场,固化度场,损伤度。场变量最场用于定义变化的材料参数,即让材料属性如密度,弹性模量和一个场变量相关,通过更新场变量的值来改变材料参数(这一点和温度相关的材料参数本质上是一致的),而场变量的更新在这两个子程序中均可以完成,UFIELD是用来指定预定义场变量的,USDFLD对积分点的场变量重新定义。UFIELD和USDFLD的本质上的区别是一个是定义在节点上的,一个是定义在单元材料积分点上的,同时这两个又可以相互搭配,干活不累
2、简单实例
先通过一个小例子来领会一下它们的要义,本实例通过自定义场变量来定义随时间变化的弹性模量,如图所示,定义弹性常数的时候,number of field variable设为1,下面两行参数表示Field变量为1时,弹性模量为10000,Field变量为2时,弹性模量为20000
inp中定义Ufield和Usdfld的关键字和Ufield代码如下:
如下应力应变曲线可以看出,时间步0.5s之前弹性模量为10000,0.5s后弹性模量为20000,确实是按照预期效果改变的。
通过给定field不同的值,研究弹性模量的变化,发现当场变量小于1的时候,取的是1对的值,大于2的时候,是2对应的值,在1和2之间,则是通过插值得到。
当然这个例子比较简单,可以不用子程序,直接通过*field 来实现
最后,我看很多人通过USDFLD来实现单元生死,其实这也没什么玄妙的,通过场变量把弹性模量降为一个非常小的量不就可以了吗。
点击完整阅读全文
Abaqus UFIELD和USDFLD子程序详解
进群福利:业内朋友交流+直播+领资料