【活动已结束】Taichi DEM 代码优化挑战赛来了!Airpods 胶囊咖啡机还有更多社区周边等你来拿~

更改和补充Demo:

斯坦福兔子自由落体撞击水平表面

本例展示了一个斯坦福兔子形状的胶结团块自由落体撞击水平表面,然后破碎的过程。本例可用于大规模体系仿真的性能测试。

bunny_forum

柔软的斯坦福兔子自由落体撞击水平表面

本例展示了一个斯坦福兔子形状的胶结团块自由落体撞击水平表面的过程。由于胶结强度极高,兔子不会破碎;相反,由于胶结弹性模量相对较低,兔子会表现出相当软的力学响应。本例可作为上例很好的对比。

soft_bunny_forum

因Taichi论坛上传图片大小限制,上述Demo GIF效果欠佳。请前往GitHub代码仓库查阅高清GIF (地址详见原帖)。

3 个赞

最后几天截止时间我也来加一点:

  1. 实现了三维离散元的linear contact model/HM model/linear rolling contact model
  2. 并加入了库伦摩擦定律以及rolling、twisting的计算,使得球形颗粒能做出非球形颗粒的效果
  3. 采用verlet table减少neighbor contact list的更新次数
  4. 用两个field写了一个简单的hash table来做切向力的积分,减少哈希冲突
  5. 利用taichi写了几个简单的四元数函数,完整地考虑了颗粒的旋转与方位

附上我的源码以及动画:

这是不加rolling的自然休止角
result3_1
由于文件大小限制,加了rolling和twsiting之后的自然休止角动图请移步

并且通过计算几个案例的计算,验证了代码的可靠性。

5 个赞

勘误:

先前文档DEM_Part.pdf部分内容有误,现更正如下。

DEM_Part_corr.pdf (326.1 KB)

2 个赞

压线来投个稿。我尝试改进原有方法在出现大粒子的情况下无法使用小网格的问题。改进后的方法能在有大粒子存在时依然使用较小的网格,只不过这样做性能的提升并不高,不知道有没有更好的处理方法。方法阐述详见github README。

Github repo: GitHub - DesmondZhong/dem

动图
large_radius_256

2 个赞

新手小白也来压线投个稿,本意是想把圆形离散元扩展到椭圆形,奈何在椭圆形接触判断这块问题太大,目前只是基于圆形颗粒初步地实现了椭圆形颗粒的可视化,之后多向各位大佬请教。

Github repo: GitHub - JieQi-github/taichi_dem_ellipse_visualization: ellipse visualization based on taichi_dem

GIF:
ezgif.com-resize

1 个赞

向各位大佬学习,模拟下福彩双色球红号"33选6",玩(play)时球随机跑,抽奖(draw)时球自由落体,速度较小时,最下边6个为中奖号码

Githup repo: GitHub - sanlishi/lottery_sim

draw

2 个赞

优化内容:
1:list的内存排布。
2:增加gf2,保存粒子id 改为 保存粒子数据。

本地测评:从12.4FPS 优化到 15.1FPS(参数相同的情况下测试)

dem.py 修改后的代码
dem_v0.py 同参数的原始代码

代码:
kphmd/Taichi_DEM (github.com)

1 个赞

请问你修改过后的list排布里grid_sp=8这个参数一般取多少能最大化的优化性能呢,跟每一维度的网格数有关嘛

可能和硬件缓存大小相关。不过利用太极编程语言的优势之一,修改少量代码就可以适配不同的硬件配置。

参考视频 高性能编程基础知识_哔哩哔哩_bilibili

:tada: DEM 代码优化挑战赛目前已经截止投稿了~ 感谢以下几位投稿选手:@llinus、@ mrzhuzhe、@ Mugi、@ Denver_Pilphis @ MuGdxy、@ Otis、@ DesmondZhong、 @JieQi-github、@ sanli、@ kphmd

代码评审&投票时间:10/31-11/4
敬请期待!

1 个赞

可以编辑一下你的回复,增加一张效果图~

:grinning: 投票通道已开启!大家可以为自己喜欢的作品投票了~
投票时间:10/31-11/4

补充效果图

1 个赞

这个好棒,直接用粒子做弹性体模拟。这个模型粒子数多少,运行帧率多少呢?

斯坦福兔子形状的团块,颗粒数82337,初始胶结数307821。

因为是工程定量仿真,所以暂时做不到实时计算和显示,可视化GIF动图是通过存档数据后处理得到的。兔子下落这个算例时间步取为2.63e-5s,一共持续时间10s,故一共跑约380000步。将其等分为200个存档点,则每个存档点约1900步。每个存档点是可视化序列的1帧,所以导出的GIF是20fps。从计算时间来看,使用Nvidia A100 80GB VRAM GPU跑本例计算用时3211.26s,相当于1秒计算118步=仿真体系中的0.0031秒。以1秒60帧为基准的话,相当于0.1862fps。

我们将在11月25-28日于海口举办的第十二届中国颗粒大会上详细介绍,欢迎关注 :blush:

1 个赞

好的,了解了。效果很棒,速度看来离实时应用还有些差距。:slight_smile:

补充一个Demo:跳跳兔

jump_send

2 个赞

笨兔子:这只兔子似乎没有那么聪明。它翻了。

roll_send

2 个赞

评选已结束

经过社区投票和评委评审,DEM 代码优化挑战赛结果如下:

恭喜以上几位同学~ 也感谢参与活动的小伙伴们~ 奖品和周边将在近期联系大家登记信息并发出~

4 个赞