Barnes-Hut 算法和递归限制

计算科学 模拟
2021-12-25 16:16:42

如果在将粒子分布到它们对应的节点时,两个粒子更接近小于机器精度的水平(或Δd0),这种情况要怎么处理?是否应该停止递归分发并将它们都添加到单个节点?

这是因为将粒子视为点对象而不是 2D 对象。想象一台精度为小数点后 3 位(SI 中的毫米)的机器和物体进入的情况106(微观层面)彼此。

1个回答

在计算力时,问题是除以零(或接近零)吗?我认为经常做的(以及我在实施 Barnes-Hut 时所做的)是包含所谓的软化因素。换句话说,在计算盒子的质心和特定粒子之间的半径时,您可以执行以下操作:

r=sqrt((bx-px)^2+(by-py)^2+epsilon)

其中 (bx,by) 是盒子的质心位置,(px,py) 是粒子的位置,epsilon 是软化因子。

注意:我只对围绕大质量(例如黑洞)旋转的粒子进行了 Barnes-Hut。这种方法不适用于经常发生碰撞的星团。