Fortran Coder

查看: 31191|回复: 16
打印 上一主题 下一主题

[通用算法] 请教关于刚性球重叠的处理

[复制链接]

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

楼主
发表于 2020-8-28 20:47:11 | 显示全部楼层
每一个粒子都建立一个表(List),这个表中包涵所有邻近粒子。对每一个粒子的碰撞就是所有另邻近粒子碰撞的总和。
回复

使用道具 举报

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

沙发
发表于 2020-8-29 11:42:56 | 显示全部楼层
13613529432 发表于 2020-8-29 09:48
前辈,您的意思是每一步都判断每一个球给定距离范围内包含的球是吧。每一个粒子所受的碰撞是这些粒子的总 ...

你这个应该和刚性分子运动模拟很相近,可以查一下这方面的资料。中心思想就是在任一时间 t 每一个粒子都有一组位置,速度和邻近粒子表。根据邻近粒子与中心粒子的距离,用牛顿定律算出中心粒子所受力的总和及加速度。这样就能算出中心粒子在 t + dt 时的位置,速度及新的邻近粒子表。
回复

使用道具 举报

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

板凳
发表于 2020-8-29 22:18:05 | 显示全部楼层
13613529432 发表于 2020-8-29 12:56
前辈,我已经算到这一步了,算出一时刻t每个粒子受周围的邻近粒子影响的速度,然后每个粒子按照他自己的 ...

刚性分子间距离很短时排拆力是无限大,所以不应发生重叠。可能原因是 dt 取得太大,模拟失真。一般的分子动力学模拟 dt 取值在 10^(-15) ~ 10^(-14) 秒。
回复

使用道具 举报

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

地板
发表于 2020-9-21 11:01:08 | 显示全部楼层
13613529432 发表于 2020-9-21 10:27
前辈,这个临近粒子表我现在不明白怎么去建立这个表

在分子动力模拟中叫邻近列表法,是很经典的办法,都有现成的算法和程序。这里提供个链接,http://blog.sciencenet.cn/blog-3415915-1186528.html,自己百度一下吧,应该有很多的。
回复

使用道具 举报

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

5#
发表于 2020-9-24 11:49:16 | 显示全部楼层
13613529432 发表于 2020-9-24 10:04
前辈,这个紧邻列表我看了,是在和粒子判断距离的基础上画每一个粒子的紧邻列表,这样在判断距离的时候, ...

没错。当粒子数大到一定数目时(>100), 96%的计算时间是用在粒子间的计算。
回复

使用道具 举报

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

6#
发表于 2020-9-25 08:22:43 | 显示全部楼层
13613529432 发表于 2020-9-24 14:33
其实我还查到对于这种遍历系统划分近邻表的计算问题,说是通过系统划分大格子,这样每个格子里的粒子只需 ...

近邻表是最简单的。事实上并不是每一步都要计算近邻表。因为粒子运动在短时间内移动距离很短,近邻表并没有变化。一般每10~15步才重新计算近邻表。那个格子索引,算法比较复杂。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-4 21:14

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表