@MitoY
2016-05-10T15:36:38.000000Z
字数 610
阅读 1567
这个第十次作业,
里面的这个分子碰撞模型(硬球碰撞),就是下面这两幅图,有些球总是会黏住。。。

这是为什么呢?根据我的猜测,这大概是他程序写错了。(不废话嘛!)错哪儿了呢?错在判断两个球是否发生碰撞这里,我猜他是这么写的:
if dist(A_qiu, B_qiu) < 2R:A_qiu.velocity += balabalaB_qiu.velocity += balabala
这么写有个问题,简单点考虑一维正对撞,对撞后两球交换速度,如果由于别的球的作用等原因,使得球速度变小了,小到一次迭代后两个球并不能分开,也就是 dist(A_qiu, B_qiu) < 2R 仍然为真,那么 A 球和 B 球的速度还要再惨遭一次交换,以至于两球不是在分离而是在靠拢!这个过程反复进行,两球交替地靠拢和分离,效果就是它们互相抓在了一起,而且会抓住相当长时间。
第二幅图就更诡异了。。。不过大抵也可以用上述的抓住模型来解释吧。。。
这个问题可以多加几个判断解决。另外,如果不用硬球模型,而考虑 Lennard-Jones 势能的话就不存在这个问题了。不过这反而要更加小心,Lennard-Jones 势能处理很容易造成一次迭代后分子靠得过近受到天文数字的排斥力然后飞开从而获得额外的动能的情况,而且这是很难避免的。所以还是直接解动量守恒和能量守恒方程来的实在?(因为分子相互作用是机械能守恒的,与势能具体形式无关)
(づ●─●)づ
2016.5.10