贡献者: 周思益; addis
在物理学和天文学中,N 体模拟是对粒子动力学系统的模拟,这些粒子通常受到物理力(如重力)的影响(关于其他应用,请参阅 N 体问题)。N 体模拟是天体物理学中广泛使用的工具,从研究像地-月-日系统这样的少体系统的动力学,到理解宇宙大尺度结构的演化。在物理宇宙学中,N 体模拟用于研究非线性结构形成的过程,如星系丝和星系晕,这些过程受到暗物质的影响。直接 N 体模拟用于研究星团的动力学演化。
模拟处理的 “粒子” 不一定对应于本质上是粒子状的物理对象。例如,一个星团的 N 体模拟可能每个恒星有一个粒子,因此每个粒子都具有一定的物理意义。另一方面,一个气体云的模拟不能为气体的每个原子或分子都有一个粒子,因为这将需要每个摩尔物质大约 $10^{23}$ 个粒子(见阿伏伽德罗常数),因此一个单一的 “粒子” 将代表一些更大的气体量(通常使用平滑粒子流体动力学实施)。这个量不需要具有任何物理意义,但必须在准确性和可管理的计算机要求之间做出妥协。
暗物质在星系的形成中扮演着重要角色。暗物质粒子的相空间密度 $f$ 的时间演化可以通过无碰撞的玻尔兹曼方程来描述。
在直接引力 N 体模拟中,N 个粒子在它们相互引力作用下的动力学方程被数值积分,而不做任何简化近似。这些计算用于个体物体之间的相互作用对系统演化很重要的情况。
第一个直接引力 N 体模拟是由 Erik Holmberg 在 1941 年在隆德天文台进行的,他通过数学等价性确定了恒星在相遇星系之间的力—在恒星的位置放置灯泡,并通过光电管测量恒星位置的方向光通量,运动方程积分的复杂度随着 N 的数量增加的增长速度是 $\mathcal O(N)$ 增长的。然后,Sebastian von Hoerner 在德国海德堡的天文计算研究所进行了第一个纯计算模拟。Sverre Aarseth 在剑桥大学(英国)致力于开发一系列用于天体物理应用的高效 N 体代码,这些代码使用自适应(分层)时间步长、Ahmad-Cohen 邻域方案和近场正规化。正规化化是一种数学技巧,用于消除牛顿引力定律中两个粒子相互接近时的奇异性。Sverre Aarseth 的代码用于研究星团、行星系统和银河核的动力学。
许多模拟足够大,以至于在建立一个弗里德曼-勒梅特-罗伯逊-沃克宇宙学时,广义相对论的影响是显著的。这在模拟中被纳入为一个演化的距离度量(或尺度因子),在共动坐标系统中,这导致粒子在共动坐标中减速(也由于它们物理能量的红移)。然而,广义相对论的贡献和重力的有限速度通常可以忽略,因为典型的动力学时间尺度与模拟的光穿越时间相比长,粒子和粒子速度引起的时空曲率很小。这些宇宙学模拟的边界条件通常是周期性的(或环面的),以便模拟体积的一边与另一边相匹配。
N 体模拟在原理上很简单,因为它们只涉及积分定义粒子运动的 6N 个常微分方程。实际上,涉及的粒子数量 N 通常非常大(典型的模拟包括数百万,千年模拟包括一百亿),需要计算的粒子-粒子相互作用的数量以 $N^2$ 的顺序增加,因此直接积分微分方程可能在计算上非常昂贵。因此,通常使用一些改进方法。
数值积分通常使用小时间步长的方法进行,如跃迁积分。然而,所有的数值积分都会导致误差。较小的步骤给出较低的误差,但运行更慢。跃迁积分在时间步长上大致是二阶的,其他积分器如龙格-库塔方法可以达到四阶精度或更高。
最简单的改进之一是每个粒子都有自己的时间步长变量,这样具有非常不同动力学时间的粒子不必都以最短时间的速率向前演化。
有两种基本的近似方案可以减少这类模拟的计算时间。这些可以将计算复杂度降低到 $O(N \rm{log} N)$ 或更好,但以牺牲精度为代价。
在树方法中,如巴恩斯-赫特模拟,通常使用八叉树将体积划分为立方体单元,只有来自附近单元的粒子之间的相互作用需要单独处理;来自远距离单元的粒子可以集体视为一个位于远距离单元质心的大粒子(或作为低阶多极展开)。这可以大幅减少必须计算的粒子对相互作用的数量。为了防止模拟被计算粒子-粒子相互作用所淹没,必须在模拟的密集部分细化为更小的单元,这些部分每个单元包含许多粒子。对于粒子分布不均匀的模拟,Callahan 和 Kosaraju 的良序对分解方法每次迭代的时间为 $\mathcal O(N \rm{log} N)$。
另一种可能性是粒子网格方法,其中空间在网格上离散化,并且为了计算引力势,假设粒子被分配到网格周围的 $2\times 2$ 顶点之间。势能 $\Phi$ 可以通过泊松方程找到
(或者计算逆变换,然后使用其他方法)。由于这种方法受到网格大小的限制,实际上使用更小的网格或某种其他技术(如与树或简单的粒子-粒子算法结合)来计算小尺度力。有时使用自适应网格,在模拟的密集区域网格单元要小得多。
几种不同的引力摄动算法被用来相当准确地估计太阳系中物体的路径。
人们经常决定将卫星放置在固定轨道上。紧密绕地球运行的卫星的路径可以从围绕地球中心的二体椭圆轨道开始准确建模,并加上由于地球的扁率、太阳和月球的引力吸引、大气阻力等小的修正。可以找到一个固定轨道,而不需要计算卫星的实际路径。
一个小行星、彗星或远程航天器的路径通常可以从围绕太阳的二体椭圆轨道开始准确建模,并加上来自它们已知轨道上较大行星的引力吸引的小修正。
系统的长期路径的一些特征可以直接计算。不需要将任何特定粒子的实际路径作为中间步骤来计算。这些特征包括李雅普诺夫稳定性、李雅普诺夫时间、来自遍历理论的各种测量等。
尽管典型的模拟中有数百万或数十亿个粒子,但它们通常对应于一个非常大的质量的实际粒子,通常是 $10^9$ 个太阳质量。这可能会引入粒子之间的短程相互作用问题,如两个粒子二元系统的形成。由于粒子旨在代表大量暗物质粒子或恒星群,这些二元系统是物理上不合理的。为了防止这种情况,使用了一个软化的牛顿力定律,它在短距离上不会像反平方半径那样发散。大多数模拟通过在有限大小的单元上运行模拟很自然地实现了这一点。重要的是以这样的方式实现离散化过程,以至于粒子总是对自己施加消失的力。
软化是 N 体技术中使用的一种数值技巧,用于防止粒子彼此靠得太近时数值发散(力变为无穷大)。这是通过对每个粒子的规则化引力势能进行修改来实现的
N 体模拟提供了关于大尺度暗物质分布和暗物质晕结构的发现。根据冷暗物质的模拟,大尺度上暗物质的总体分布并不完全均匀。相反,它显示出类似网络的结构,由空洞、墙、丝和晕组成。此外,模拟表明,晕的集中度与质量、初始波动谱和宇宙学参数等因素之间的关系与晕的实际形成时间有关。特别是,质量较低的晕倾向于更早形成,因此由于它们形成时宇宙的较高密度,它们的集中度更高。晕的形状被发现偏离完美的球形。通常发现晕是拉长的,并且越来越向中心变成长轴状。然而,暗物质与重子之间的相互作用会影响暗物质晕的内部结构。需要模拟暗物质和重子来研究小尺度结构。
许多模拟只模拟冷暗物质,因此只包括引力。将重子、轻子和光子纳入模拟会大大增加它们的复杂性,通常必须对基础物理进行激进的简化。然而,这是一个极其重要的领域,许多现代模拟现在正试图理解在星系形成过程中发生的过程,这可能解释了星系偏差。
Reif 和 Tate 证明,如果 n 体可达性问题定义如下—给定满足固定电静态势法则的 n 个物体,确定一个物体是否在给定的时间界限内到达目标球,我们要求 poly(n)位的精度,目标时间是 poly(n),则该问题属于 PSPACE。
另一方面,如果问题是物体最终是否到达目标球,那么这个问题是 PSPACE-hard。这些界限基于光线追踪获得的类似复杂性界限。
N 体模拟的最简单实现是轨道物体的朴素传播;朴素意味着作用在轨道物体上的唯一力是它们彼此施加的引力。在面向对象的编程语言中,如 C++,一些样板代码对于建立所需的基本数学结构以及数据容器非常有用。