Abaqus显式动力学入门案例-丢金币/掷骰子

       “ 用两个刚体显式动力学案例,入门Abaqus/Explicit


最近科研项目遇到一点小小的挫折,涉及接触的算例怎么修改边界条件都难以收敛。我猜想如果换用显式动力学可能可以让问题更快实现收敛。之前虽然玩过一两次,但一直没有很认真的正式学习显式动力学。今天这篇文章,就用USim邓怡超工程师几年前分享的两个inp文件,学习一下Abaqus/Explicit显式动力学分析。

既然用了别人的模型,那就在开头显著位置写一下致谢吧。感谢USim,在我还在犹豫没想好是在仿真领域一条道走到黑还是毕业转行当码农的时刻,是USim邓工分享的一波Abaqus算例动画让我燃起了对有限元仿真的极大热情(emmm这么说来也不知是福是祸,但我确实发自内心的喜欢力学和有限元仿真)。邓怡超在他公众号菜单里免费分享的很多inp文件也是我学习的样本。

如何将随机性引入Abaqus仿真?网球随机发射模拟


01

显式动力学


先翻译一些不那么有趣的东西。如果想直接看丢YingBi(这居然是敏感词,完全无法理解)的小伙伴可以往下滑~(P.S.还是按惯例翻译自帮助文档。写到这里发现我的彩云小译半年会员居然已经到期了,果断再续一年~)

什么是显式动力学分析?它和隐式分析的区别在何处?

使用直接积分法的隐式动力学在Abaqus中是由Abaqus/Standard求解器提供的,而Abaqus/Explicit关于时间部分使用了中心差分算子。在隐式动力学分析中,必须对积分算子矩阵求逆,对每个时间增量步都需要求解一组非线性的平衡方程。而在显式动力学中,节点的位移和速度是根据时间增量步开始时刻已知的量计算出来的,不需要组装成整体质量阵和刚度阵并求逆。这样显式分析中每一个增量步的计算成本相对隐式来说更低。然而,在显式动力学分析中,稳定时间增量步的大小是有限的,因为它使用的中心差分算子是条件稳定的,而Abaqus/Standard中使用的隐式算子则是无条件稳定的。因此,在Abaqus/Standard中的大多数分析里,对时间增量步都没有限制(能限制时间增量的只有求解精度)。

中心差分法的稳定极限与应力波在模型中最小单元中传播的时间有关。因此,如果模型的最小网格尺寸较小,或者材料中应力波速度较高,那么显式分析的稳定时间增量步就非常短。因此,显式分析适合用于建模总动态响应时长较短的分析,例如波的传播等问题。同时,显式分析的许多优点也适用于准静态过程,在此情况下,需要使用质量缩放功能来降低材料中应力波的传播速度。

Abaqus/Explicit有如下特点:

  1.  分析成本随问题规模线性增加。而隐式算法计算成本随问题规模增加的速度比线性更快。因此Abaqus/Explicit对于规模非常大的问题是很有吸引力的。

  2. 显式积分算法在求解极不连续的短期事件或过程时往往比隐式算法更有效。

  3. Abaqus/Explicit在求解与应力波传播有关的问题时比Abaqus/Standard更有效。

这个显式时间积分,公式也很简洁明晰。下一步的速度通过前一步的速度和加速度求得,而下一时间步的位移通过速度乘以时间增量得到。

Abaqus显式动力学入门案例-丢金币/掷骰子的图1

而这个u\ddot_i^N,这个加速度又是用牛顿第二定律计算得到的。由于使用了集中质量矩阵,所以可以把整个矩阵解耦合,不需要组装总体刚度阵即可将时间步向下推进。集中质量阵把所有的质量都放在对角线元素上,所以非常容易求逆,而且计算复杂度只会随自由度线性增加。显式过程不需要在同一步内进行迭代,也不需要计算切线刚度阵。

Abaqus显式动力学入门案例-丢金币/掷骰子的图2

因为显式分析无需迭代也无需切线刚度阵,这也同样简化了接触问题的处理。因此,对于接触问题占主导的分析,显式动力学分析也具有优势,例如金属板成型分析。


02

丢个钢镚


这个案例如前所述,来自USim公众号分享的inp文件。模型本身倒是非常简单。钢镚是体单元,下面的地面分别为体单元和面单元。

Abaqus显式动力学入门案例-丢金币/掷骰子的图3


所有进行显式动力学分析的材料都需要指定密度。因为对于动力学分析来说,不管是刚体还是柔性体,都有惯性效应

Abaqus显式动力学入门案例-丢金币/掷骰子的图4


分析步使用动力,显式分析步。

Abaqus显式动力学入门案例-丢金币/掷骰子的图5

这里如果使用自动的话,会自动按照材料中应力波传播的速率计算稳定时间增量。本案例作为显式动力学的入门,全部零件设置为刚体,因此由用户指定时间增量大小。

Abaqus显式动力学入门案例-丢金币/掷骰子的图6

在Abaqus里,指定材料为刚体有多种方式。可以在部件模块处就将材料定义为刚体,也可以先定义成柔性体,然后在相互作用这里使用刚体约束将材料定义为刚体。

Abaqus显式动力学入门案例-丢金币/掷骰子的图7

Abaqus显式动力学入门案例-丢金币/掷骰子的图8


而显式动力学中定义接触的方式也比隐式分析要简单。在显式分析中,只需要定义一个全局的通用接触,general_contact即可。软件会自动在所有单元的表面都覆盖上一层接触单元。

Abaqus显式动力学入门案例-丢金币/掷骰子的图9

载荷模块,底部固定,全局施加重力载荷,然后在钢镚的刚体约束参考点处,施加一个角速度的预定义场。

Abaqus显式动力学入门案例-丢金币/掷骰子的图10


可以看到,虽然用了30000个增量步,但总计算时长只有不到1分钟。显式动力学每个时间增量步的计算开销确实非常低。

Abaqus显式动力学入门案例-丢金币/掷骰子的图11


结果——

Abaqus显式动力学入门案例-丢金币/掷骰子的图12

夭寿啦w(゚Д゚)w!钢镚居然摔下去了Abaqus显式动力学入门案例-丢金币/掷骰子的图13Abaqus显式动力学入门案例-丢金币/掷骰子的图14 掉落无尽深渊……

我们来把转速改小一点再试试。顺便修改一下场输出和历程输出的时间间隔。

Abaqus显式动力学入门案例-丢金币/掷骰子的图15

嗯,作为一个动画来说,这回帧数够用了,而且也成功地没有掉下去。学会Abaqus显式,真的可以把它当大型通用动画软件来玩✧(≖ ◡ ≖✿)


03

掷个骰子


刚才那个钢镚模型建立的不够细致,没分出正反面。下面这个骰子模型就更进一步,把点数一起画了出来。

Abaqus显式动力学入门案例-丢金币/掷骰子的图16


和丢钢镚模型一样,全部零件都约束为刚体,在整个模型上添加通用接触。载荷只有一个重力,让骰子自由下落。只是它们的初始下落角度比较随意。


Abaqus显式动力学入门案例-丢金币/掷骰子的图17


这个点数是——小蓝2分,小紫5分。那如果我们其他参数什么都不改,只把时间步长从1e-4改为2e-5会发生甚么事呢?

Abaqus显式动力学入门案例-丢金币/掷骰子的图18

Abaqus显式动力学入门案例-丢金币/掷骰子的图19

小蓝变成了4分,小紫则变成了2分!

……再把求解从6核修改成2核试试?

Abaqus显式动力学入门案例-丢金币/掷骰子的图20

结果又不一样了。这完全是个玄学啊。

可能因为整个模型中都施加了刚体约束,而且时间增量步不同,求解使用的核心数不同,确实会对数值计算的误差产生影响。——看来,即使是今天的计算机,想要模拟一只拉普拉斯妖 预测骰子掷出来的点数,也还是很难的事情呀。


04

后记


学会了显式动力学,挺多生活中有趣的物理现象就可以用有限元来模拟了。可以说要想把Abaqus玩成动画软件,显式动力学分析是必经之路。其实本文中的几个分析还可以更进一步,用Altair的工具给odb文件做个转换,用HyperView读取以后,还可以做更真实的物理渲染。(就更像动画了)

Abaqus显式动力学入门案例-丢金币/掷骰子的图21

Abaqus显式动力学入门案例-丢金币/掷骰子的图22

文末再重申/致谢一次,这两个模型都来自公众号USim,不是我自己做的。我大概半年多以前也自己试着做过一个玩具的模型,但是当时没能调通。

最后祝各位仿真从业者永葆一颗童心Abaqus显式动力学入门案例-丢金币/掷骰子的图23~

(17条)
默认 最新
忽然发现,不是有限元无趣,是没有做有趣的事情,赞!
评论 点赞 2
笔记本跑Usim大佬的inp跑不动😭
评论 点赞 2

查看更多评论 >

点赞 45 评论 17 收藏 69
关注