先预测,再取得一份状态
在线性近似下,从到,EdS功率应增长约倍。先把这个预测写下来;它没有包含有限网格的偏差。
想自己导出时,在Lab选“一张片的折叠”,把振幅降到,等新计算完成,再暂停并导出当前JSON。每一帧有自己的尺度因子,读文件里的数,不用滑块显示值替代它。当前状态导出和完整原生二进制是两种格式,本教程读取前者。
公开包里的示例使用同一设定,在原生第帧保存,。这份示例用Node运行已冻结的Lab模型和当前状态导出函数生成;你也可以换成自己从Lab下载的当前JSON。完整模型从走到共步,这一帧对应第步;参考程序则只积分到文件指定的时刻。
对应阅读:Original finite-mesh calculations and independent small-wave Python replay · Springel (2005), The cosmological simulation code GADGET-2, astro-ph/0505010v1
在新的目录里运行
下载本页的独立复算包并解压。它包含Python参考程序、示例JSON、预期结果与文件清单;不包含浏览器Engine、原论文或TNG快照。验收环境是Python 3.12.12、NumPy 2.3.5、SciPy 1.17.1。
先在自己的虚拟环境安装requirements.txt中的固定版本,再运行下列命令。输出目录要使用新名字,以免覆盖前一次结果。用自己的当前JSON时,只替换输入文件名;强非线性状态可能需要更多求力次数,不能把这个小波例子的耗时当作所有状态的承诺。
程序产生result.json和独立末态的双精度数组。先检查程序成功结束、尺度因子与输入一致、版本信息符合预期,再看误差;成功的复算会在这两个文件中留下有限的数值结果。
python replay.py small-wave-current.json --out my-new-result对应阅读:Original finite-mesh calculations and independent small-wave Python replay · Springel (2005), The cosmological simulation code GADGET-2, astro-ph/0505010v1
它怎样做到独立
初始位置与动量直接取自导出文件中的完整精度数组,不从界面文字反推,也不再随机生成一份初值。这样两个结果之间的差异不会混入不同的起跑位置。
参考程序使用NumPy的重复索引累加来分配CIC质量,在Fourier空间乘上四点梯度的离散波数,再把力取回粒子;浏览器则先反变换势,再在实空间作四点差分。两者求同一种有限网格力,用的程序路径不同。
时间推进换成SciPy的自适应DOP853。以作自变量时,用链式法则把尺度因子方程乘以,得到下式。相对与绝对容差分别是和。它独立检验时间推进;同一个粗网格的物理分辨率仍然相同。
对应阅读:Original finite-mesh calculations and independent small-wave Python replay · Springel (2005), The cosmological simulation code GADGET-2, astro-ph/0505010v1 · SciPy solve_ivp official reference and installed 1.17.1 documentation
亲手从位置算一次功率
打开初、末态数组,按上一章的定义直接求模式。下面的短代码能用于形状为的位置数组,结果以计。不要先把坐标取成三位有效数字,也不要替规则点阵扣Poisson噪声。
已验收示例的初始功率是。原生末态为,独立参考为;它们的功率相差约的相对量。原生位置与参考位置的均方根差约个盒长。
如此小的数值差异,只说明这条小波在同一有限网格力下的两种推进相符。它没有把节点之间的引力变成无限分辨率,也没有证明晚期强非线性结点同样准确。
import numpy as np
def power(positions):
phase = positions @ np.array([1, 0, 0])
amplitude = np.mean(np.exp(-2j * np.pi * phase))
return 20.0**3 * abs(amplitude)**2对应阅读:Original finite-mesh calculations and independent small-wave Python replay · Springel (2005), The cosmological simulation code GADGET-2, astro-ph/0505010v1
为什么两者都没长到解析预测
原生功率增长比约,独立参考约,都低于EdS的。参考相对解析增长低约。这与原生和参考之间只有约的差异,是两个不同的比较。
第一个比较含有限网格、半格点阵响应及微小非线性修正;第二个主要检查两套程序怎样求同一种力、怎样推进运动。前面的、末时刻校准已有空间细化证据,而本教程是、末时刻约,数值不必逐位相同。
做下一次实验时,一次只改一个问题:保持力网格与初值,收紧积分误差,观察参考是否稳定;若要追问连续引力的准确度,则需细化粒子和网格,并保持连续初始扰动一致。每种比较都要回答清楚:这次在检验求力,还是在检验推进。
对应阅读:Original finite-mesh calculations and independent small-wave Python replay · Springel (2005), The cosmological simulation code GADGET-2, astro-ph/0505010v1
把质量和周期也查一遍
示例全程最大的原始沉积质量相对误差约。这个数在扣平均背景以前检查,没有靠事后归一化改成一。把初始位置整体挪整数个盒长,参考力的最大变化约;初始总平均力也接近零。
这些检查各自回答具体问题:质量是否漏分,周期权重是否一致,内部引力有没有净推走整盒质心。它们与增长、轨迹比较合起来,才构成这次小波复算的证据。精度阈值及完整环境记录都在包中,换自己的状态时应保留新的结果。
对应阅读:Original finite-mesh calculations and independent small-wave Python replay · Springel (2005), The cosmological simulation code GADGET-2, astro-ph/0505010v1