这是我第一次实践各向异性超弹性本构子程序UANISOHYPER_INV,中间走了几步弯路,好在最后问题都解决了。把这个过程记录下来,为后人鉴。
1 超弹性本构
刚接触超弹性本构的时候,很不适应。因为我之前研究的本构,都会给出非常明确的应力应变关系。比如最简单的:应力=刚度矩阵×弹性应变。
超弹性本构一般不这么给,给的都是应变能和不变量之间的关系。比如这样:
结果呢就是,扑街。大家都在各种秀张量,秀应变能,秀不变量。我一度认为这些人闲着没事,净搞形式。
但是也不是一无所获,文献中的蛛丝马迹都指向了UANISOHYPER_INV子程序。
UANISOHYPER_INV子程序是干啥的?它就是专门用来定义各向异性超弹性本构的。那么自然的你就会想,是不是还有专门定义各向同性超弹性本构的呢?当然,这个子程序叫UHYPER。
看懂了UANISOHYPER_INV子程序的设定,你就会恍然大悟,原来真的不需要定义应力应变关系,只要知道应变能和不变量的关系就行了啊。
UANISOHYPER_INV子程序的基本结构如下:
其中主要变量的介绍如下:
也就是说,在UANISOHYPER_INV子程序中定义出应变能、应变能对不变量的导数即可。
于是我按照帮助文档的提示,一步步完成了子程序编写。但是在测试的时候,问题接踵而来。
做了一个简单拉伸算例。但是提交计算时候,总是报错:
报错信息告诉我,可压缩性材料不能用杂交单元。这个确实不能用,但是我好像没有用啊。
赶紧去检查网格属性和材料属性设置吧:
干脆将错就错,把网格属性改成减缩积分。然后它竟然可以算了。。。。
但是没有能够完全收敛,算了两步就死了。更夸张的是,神奇的现象出现了。
我拉伸了一个柱子,结果出来一个纺锤体:
职业生涯第一次算出拉伸膨胀的效果,上网一搜,确实有些特殊材料拉伸膨胀,但是橡胶这样常规材料是不会的。感觉世界观被刷新了一下。这个时候我开始怀疑,一定是我的本构搞错了,什么本构出来结果,妥妥的本构问题。本构主要就是应变能的定义,以及应变能对不变量的求导。为了找出本构问题,我反复复验推导过程。然而无论怎么复验,依旧拉伸膨胀。
我开始怀疑当年学了假的微积分,以致于现在的本构算出一个王八结果。后悔当年数学分析课总是睡觉,老师的山东口音至今回荡耳边。
没办法了,用ABAQUS自带的UANISOHYPER_INV子程序和试试吧,这个总是不会错的吧。
从安装文件夹下面找到子程序和验证模型。一番操作提交了计算。
结果:
结果还是膨胀。。。。
当场崩溃,回想昨夜调到12点程序,转眼又搞了一天,我心灰意冷。ABAQUS自带本构和模型,都报错都算不对,这肯定是在针对我。
冷静下来之后,我开始想。明明我设置了不可压和杂交单元,但是报错告诉我我是可压,那么到底可压还是不可压?
我决定打开Inp文件看个究竟,这一看不要紧,一看吓一跳。
Inp文件明明白白显示,材料属性可压缩!!也就是说,在软件界面勾选了不可压,但是这是个假象,勾了等于白勾。
激动的心,颤抖的手,我颤颤巍巍把inp文件可压改成不可压,单元改成杂交单元。然后再job里面导入这个inp提交计算。
终于成功了!!
这一切的一切,都是软件bug作祟。
老泪纵横,软件bug害死人。
最后,有仿真相关需求,欢迎通过微信公众号联系我们。
微信公众号:320科技工作室。