《冰雪奇缘》中的物质点法(MPM)

 

下雪了,聊聊这其中的CAE。...



作者:刘青峰


昨天下了一场大雪,正好迎接冬天的到来,此时此刻,此情此景,作为一个搞CAE的工科男,将以自己的方式庆祝这场大雪。




近日,一大股南下的冷空气席卷了我国大部。祖国一片银装素裹。看着这漫天飘舞的雪花,让人不禁感叹——有暖气真好。

2013年,当《冰雪奇缘》上映时,一曲《Let it go》火遍全世界。电影给我们描绘了一个童话般的冰雪世界。在这个冰雪世界中,我们特别惊异于电影中那几乎可以以假乱真的雪了。为了尽可能真实的描绘雪的各种形态,电影制作组打造了一款用于模拟雪在各种情况下的形态的引擎。这款引擎的核心算法就是物质点法(Material Point Method, MPM)。

物质点法是一种将欧拉法和拉格朗日法结合起来的一种新的计算方法,既避免了欧拉法要求解对流项的难题,又解决了拉格match朗日法在处理大变形时的网格畸变和负体积问题。主要用于冲击、侵彻、爆炸等高速、大变形问题的求解。

以往我们计算有限单元法时,物体的各种信息是保存在网格节点上的。我们最常用的位移元,就是先求解出网格节点的位移,然后通过插值函数求解出求解域内任意点的位移,再由几何方程物理方程推出物体的应力和应变。

而物质点法对此有了改进,主要计算流程如图 1。


图 1 物质点法计算流程
在物质点法中,物体的各种信息是保存在一个个离散的物质点上的,求解步骤为:

1.先将物体离散成一个个的物质点。

2.将物质点上的信息通过形函数映射到背景网格的节点上。

3.接下来的计算就是传统的有限元法的计算步骤了,计算单元刚度矩阵,计算荷载列阵,加入边界条件,求解节点位移、速度等信息。

4.求解完成后再通过形函数将单元节点上求解出来的信息映射回物质点上(更新物质点的位置、速度等)。

5.删除背景网格,返回第2步。

通过物质点作为欧拉法和拉格朗日法之间的媒介,避免了两种方法自身的缺点,综合了两种方法的优点。下面介绍一些《冰雪奇缘》中,用物质点法计算的实例。

图 2给我们展示了一个雪球从山上滚下来,在滚动的过程中,粘上了地上的雪。随着粘附的雪越来越多,一部分雪被压缩,一部分雪被甩出去。最终雪球撞上了一个雪人,白雪散落了一地。可以看到,雪的粘性效应产生时,原本迥然不同的雪被压缩在一起,给我们展示了一个越滚越大的雪球撞击雪人的全过程。
图 2 雪球从山上滚下撞上雪人


图 3给我们展示了一个雪球撞击墙壁的过程。上边的图片是没有粘性的雪球撞击墙壁,在撞击后,白雪散落一地,墙壁上没有任何印迹。这与我们真实世界的情况不是很相符。而下边的图片是加入了粘性的雪球,可以看到,在撞击过后,有一小撮雪粘在了墙壁上。这就与我们真实世界中的情况比较相符了。




图 3 雪球撞击墙壁
下图是加入粘性的雪球,上图是没有粘性的雪球。


图 4我们可以看到,物质点法不仅能处理碰撞问题,还能处理模型的自然坍塌。图中建立的SIGGRAPH文字模型,在重力作用下很自然的折叠然后坍塌。


图 4 物质点法处理的坍塌折叠
图 5 给我们展示了一个人物从雪地上踉踉跄跄的走过后,在地上留下了两排脚印和飞溅的到处都是的雪块。
图 5 从雪地上走过的人


图 6 给我们展示了一个人物在雪地里面挖掘的场景。挖开的沟槽,以及飞溅的雪块,还有墙上粘上的雪块,都很好的模拟的现实世界中的情形。


图 6 雪地里的挖掘场景
本文介绍了《冰雪奇缘》中美丽的雪景背后的物质点法。其实物质点法不仅是用于计算雪景,它在计算冲击波的传播,堆叠物的坍塌,炮弹冲击侵彻混凝土墙等等问题中,都能发挥出强大的实力,是一种非常有前景的算法。


交流、咨询、讨论和投稿邮箱:CAE_changan@163.com


    关注 CAE技术分享


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册