1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python物理引擎模拟三体_一个物理引擎能不能模拟少量粒子之间的力?

python物理引擎模拟三体_一个物理引擎能不能模拟少量粒子之间的力?

时间:2021-08-02 06:47:53

相关推荐

python物理引擎模拟三体_一个物理引擎能不能模拟少量粒子之间的力?

就像有人已经回答过的一样,这个问题和分子动力学(MD)以及等离子体里面静电场的模拟很像,只不过考虑的粒子间相互作用是万有引力的形式。

对于MD来说,别说几个了,就是几万个粒子都不成问题。对于等离子体来说也是类似的。

你提到的时间不知道是指什么时间,如果是指模拟的时间尺度的话,如果采用类似MD的模拟算法的话,对于MD来说一般大体系,比如上万个原子可以模拟到几个到几百个ns,步长对应的是fs ~ ps,对应的可能是

~

time steps,这些都是在超算上的表现。不过一般MD里面都是短程力,而万有引力是长程力,需要更大的截断,所以对应的实际表现会差一些。如果采用类似等离子里面的Particle in cell (PIC)的算法的话,性能表现可能会更好一些,不过我没做过这方面工作所以不好评论。如果是指给定了时间尺度,具体的机器运算时间的话,就很难估计了,因为这和算法、代码实现、机器结构都有关系。

不过不管哪种情况,就我感觉而言,100个物体的模拟应该是非常简单和非常迅速的。

能够模拟的数量上限取决于很多因素,比如你的存储空间是不是够放下所有参与运算的粒子的信息、具体的代码实现以及你需要模拟的时间尺度。能够模拟的时间上限一方面受到物理系统本身的限制。这种N-body system with nonlinearity,一般都是混沌系统,高度初值敏感,如果你的系统混沌性不高、Lyapunov指数比较小的话,模拟的时间可以比较长,比如系统里粒子质量差别很大这种情况;如果系统高度混沌、Lyapunov指数很大,那一般有意义的模拟时间就不会很长。除此以外,在算法实现的层面上,如果你用的运动方程积分是低精度、低次积分的算法,那么就需要很小的time step,指定时间长度的情况下往往算的次数多,但是每次运算时间短;如果运动方程积分是高精度、高次积分的算法,那么time step可以大一些,指定时间长度的情况下算的次数少,但是每次运算时间长。除了积分算法,模拟方法里的参数也有影响,如果是直接模拟、类似MD,那么截断距离越大、每个粒子需要考虑的相互作用越多、运算时间越长;如果是间接模拟、类似PIC的算法,那么计算标量势场的空间网格的划分精度越高、运算时间越长。

我只做过一些简单的引力系统模拟,有些内容可能不是很准确,仅供参考。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。