图4. 从上到下是宇宙演化的过程中同一块区域在不同时间的密度演化。图中的亮度对比反映了物质密度的分布,这里并不是真实的颜色。(图片来源:Katrin et al. 2015) 下面就来看一下数值模拟中结构形成的历史。图4最上边是宇宙年龄14亿岁的时候(z=4.0,也就是今天宇宙尺度的1/5时),而最下边的是宇宙今天的样子,也就是年龄138亿左右(z=0)。从这六个时间切片可以看出,宇宙在初始密度稍微高的地方开始不断聚集,空旷的区域也更加明显。在密度最大的地方,物质形成了星系团这样巨大的结构(Mpc尺度),这个结构中物质的动能和引力势能平衡,密集程度不再明显。但是它作为一个大势井,外部的物质还会不断地落入、合并。 接下来我们讨论一下丝状结构,这个结构在星系的观测(图1)和模拟中(图4)都是存在的。首先想象一个均匀对称的球体,在自引力的作用下发生塌缩,塌缩的速度在各个方向自然也是对称的,所以最终形成的结构大致也是球对称的。现在考虑一个棒状系统的塌缩,因为加速度是按照距离平方减小,所以在棒的长轴方向的加速度大大弱于短轴,结果自然是短轴塌缩更快,而长轴方向塌缩较慢。宇宙结构的种子大致是一个高斯随机场,这意味着存在各种可能的结构,早先类似棒状的系统在今天看来就像是一条条的丝线。因此宇宙结构的图景就是像一张巨大的网络,在丝线连接的节点上是大的星系团。 5 计算的困境与突破 N体模拟的原理非常简单,就是计算粒子对之间的引力,但是这在计算上的消耗是非常大的。最简单而又准确的方法就是累加所有粒子对之间的引力,然后跟据这一时刻的力去更新粒子速度,进而用当前的速度去更新粒子的位置,在新的位置上重新计算新的力,如此循环往复。但使用这种直接法去计算所引力的计算时间复杂度是粒子数的平方 O(N2),也就是计算100个粒子需要计算10000对,而计算1万个粒子则需要1亿对。所以随着粒子数目增加,很快就会耗尽计算机的资源。20世纪70年代皮布尔斯(Peebles)等就是用这样的方法进行了第一个宇宙学意义上的模拟,当时的粒子数只有1500个(见图5)。
图5. 第一篇宇宙模拟的文章。(图片来源: Groth & Peebles,BAAS,1975,7,425) 随着计算机硬件的发展,cpu的运算能力越来越高,相同时间里计算的粒子数目相应地增加。即便如此,在80年代之前,使用直接计算引力对的方式的模拟所能使用总粒子数依然没有超过1万。真正让宇宙学模拟的粒子数提高所依靠的是算法的改进。到了80年代,引入了粒子网格(Particle-Mesh)近似计算方法,粒子数目上升到万级(图6)。 图6. 同样的初始条件下,左图使用了32768个粒子,atv直播,右图使用了8000个粒子。(图片来源:Efstathiou 1985,ApJS,57,241) 但是这一方法对于粒子高度成团的时候(图6中的黑色区域)是无效的,这时计算引力的树方法(Tree)和自适应网格加密(Adaptive Mesh Refinement)的方法出现使得粒子数目可以进一步增加。到了新千年,CPU主频停止增长,硬件提升的红利也消失了。既然单个核心无法提升,人们转而开始大规模地使用并行的技术。同时结合了各种加速算法之后,到2005年,模拟粒子的数目已经突破百亿(1010)。 (责任编辑:本港台直播) |