hello,小伙伴们好。今天是2020-12-07,周一。本来打算今天写个子程序的教学,刚好我上午做的时候用到了一个,在这里和大家分享一下。这个子程序呢是用户自定义硬化的子程序,一般是用在材料会发生塑性变形的分析中,材料的强度的分析,如果你是做刚度分析的,那是用不到的。需要的小伙伴自取。下面我就详细说一下。
首先,需要明确什么时候用子程序。与脚本不同的是,python脚本是帮助我们偷懒的,就算你一点也不会脚本,硬着头皮在cae里慢慢做,也是可以做出来。只是有可能让你心态做崩了。或者关注我,我教你怎么写脚本。
而子程序是cae里完完全全满足不了你的需求的时候,才会用到。(像我这样的,没事喜欢写点子程序玩一玩的例外,与工作和项目无关的我也经常偷偷学一学,谁知道以后用不用的上呢,对不对,咱们学习的人不能太功利),又扯远了。。。
因为我要做的分析需要用到双曲线本构,本构模型如下(举个栗子)。但是abaqus内置是没有这种本构模型的,所以需要自定义UHARD实现这个本构模型。
既然有了需求,那么就可以动手写子程序了,首先在帮助文档里找到子程序的构架:
找到接口之后,首先要搞明白,这些形参是什么意思。当然这个子程序里的形参有点多啊,大家可以照着帮助文档里看一看。
这里面比较重要的形参我提一下:
1 EQPLAS, EQPLASRT, TEMP
这三个形参分别代表,等效塑性应变,等效塑性应变速率。这3个是UHARD最基本的参量,因为一般材料的屈服强度跟这3个参数有关:
2 待定义变量
待定义变量一共如下5个,其中常用的是前4个,最后一个是用于子程序传递数据的状态变量。
下面我分别解释一下这几个参数的含义:
2.1 SYIELD
屈服强度,我上面说了材料的屈服强度与3个参数有关,在这里就能定义了,比如说,上面的双曲线正弦本构,它的屈服强度就只与温度和应变速率相关,如下:
知道了屈服强度的表达式之后,就可以把这句写到子程序里了,因为我用的是SI单位,应力的单位是Pa,所以要乘以1.D6的系数(这个本构模型默认是MPa)。
大家记得,再开始,最好声明一下变量类型,特别是中转的,子程序本来没有的,比如上面的Z,是我自己加上中转的变量,记得一定要申明类型,fortran不必python,申明类型了总不会错,但是没申明,当你写了百来行的代码之后,一旦出错了(不会有语法错误的,只是数据上的错误),能找的你后悔生出来。别问我为什么知道这些,都是泪其实写到这里,基本上已经写完了。但是还有一个附带的产物:
2.2 HARD
这是个一维数组,有3个元素。HARD(1)、HARD(2)、HARD(3)。
这三个变量是干什么的呢,大家如果看过我之前写的DISP子程序应该知道,我说过,大多数子程序都有个附带的东西,它对你的分析的精度没影响,但是会影响你的收敛速度。记不记得?这里也一样,这3个HARD值,其实就是屈服强度对应变、应变速率、温度的偏导数。这么一说大家是不是就清楚了。下面就把这3个偏导数求出来就行了。
*我:求导大家都会吧,那几本草稿纸,再拿10支铅笔,认认真真去图书馆坐上一两天,导数就求出来,很简单。然后发现求的不对,别灰心,继续求,一定要相信自己,肯定能求出来的。只要功夫深,铁杵磨成针。
*内心:楼上这憨批再说什么呢,搁着里秀智商呢
*我:.................
咳咳,大家既然学了这么久的程序,能用电脑计算的,就别用手算了,特别是对于复杂的函数,手算容易出错。像这种计算,当然是用我们的python了。python的sympy库是python的符号计算库,相当强大。用起来很顺手。比如求解我们今天的这个导数,只需要输入这么简简单单十几行python代码:
就能够输出你想要的偏导数结果了
求完偏导数,输入到子程序里
到此位置 ,我们的子程序就已经写完了,大家注意一下21行,我写了一个判断,做这个判断只是针对双曲线正弦,因为分析的初始状态,有可能是没有应变速率或者温度为0的,但是屈服强度有不能为0,所以就赋予了它一个小的应变速率,再给个常温的温度,做为静态强度。这只是针对此本构模型的,大家不要一概而论,比如JC本构就不需要这样。
2.3 STATEV
我们还剩下一个,待定义的变量没说,STATEV。这个参量是状态变量,很多子程序里都有,它在UHARD里不是必须要定义的量,你可以不管它。它的功能是,可以实现在子程序内或者与别的子程序之间传递参数的量。这个参量我个人觉得是非常非常重要的,因为它可以实现子程序之间的互相关联,非常强大。如果大家现在还不太了解也没关系,先记住。我后面讲USDFLD的时候会着重介绍,给你们展示一下,这个状态变量的极度强大的能力。
既然子程序都写好了,那我们就测试一下吧。
3.1 建一个模型,随便建,我这里是半径10,高度40的圆棒
3.2 给材料,注意塑性一栏,硬化选User,才能启动UHARD
3.3 边界条件,下端固定,上端给20的位移量
3.4 Job里,通用一栏选用户子程序的文件位置,然后提交分析就行了
3.5 最终结果
4 总结
学会UHARD之后,只要是能写得出函数的本构关系,都可以用UHARD实现,大家可以自己尝试一下JC模型,刚好abaqus里内置的,可以用来比较。有多少可以写多少。
今天的内容就到这里,谢谢各位,下期再见,88。
(最近也收到了大家留言,谢谢你们的支持,我也会努力把专栏写好的。对于有问题的小伙伴,我也都回应,如果还有希望,请继续找我。大家有什么问题,再微信公众号后台给我留言即可,我每天都会看的。或者在bilibili评论区留言,88)