---
title: "从保存的交点重算盘像与光谱"
description: "从一个保存的盘面交点开始，用便携 Python 教程重算局部发射、有限小区和完整孔径光谱。"
canonical_url: "https://sandboxphysics.com/zh/stories/accretion-disks/recompute-frozen-disk-light/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/accretion-disks/recompute-frozen-disk-light/"
last_modified: "2026-11-12"
---

L4 · 方法与论文阅读

# 从保存的交点重算盘像与光谱

Sandbox Physics · 2026-11-12

给每个发光交点算出温度和频移，再按它在观察者天空所占的面积相加，就能同时得到盘像和光谱。下面选一个实际保存的模拟端点，先看它怎样进入一小格图像，再加成固定孔径光谱。

[下载教程包](https://sandboxphysics.com/downloads/black-hole-light/ac49-frozen-transfer-tutorial-v3.zip)。其中有内缘六引力半径和九引力半径两种原参考吸积率状态，各自保留交点表与面积权重，也都包括三个视角和两级积分。教程重新计算局部发射和加权传输；光路与首次不透明交点沿用保存的结果。关于一次交点为什么有这种含义，可先读[最先遇到的不透明盘面](https://sandboxphysics.com/zh/stories/accretion-disks/first-opaque-disk-crossing/)。

## 先运行已有的两种状态

下载包共 6,974,583 字节，SHA256 为：

```
be1f5c1ea1120b58a54d423d116590fc95c9599d39dc5f1172a7cd7c36d1a122
```

解压后，在同时有 collection.json 和 source/ 的目录打开终端。用 Python 3.12 或更新版本即可，读者程序只用标准库。依次执行：

```
python3 -I -B source/isolated_entry.py source/recompute.py --package . --case rin6-reference-rate --collection-sha256 ad1a4b0d345c179093accdce888d5ee8a49eda9348cfe5aa58d61f6bd67483e1 --output rin6-recomputed
python3 -I -B source/isolated_entry.py source/recompute.py --package . --case rin9-reference-rate --collection-sha256 ad1a4b0d345c179093accdce888d5ee8a49eda9348cfe5aa58d61f6bd67483e1 --output rin9-recomputed
```

两份 result.json 成功时都应写出 PASS\_PORTABLE\_EMISSION\_AND\_TRANSFER。每次选新的输出目录，旧记录会保留下来。这套代码已在独立 Python 进程中重算两种状态、零度／六十度／七十五度三个视角、两级积分和全部二百五十七个原频率，源比较与物理检查均通过。

两种状态共同规定质量 $M=2\times10^{31}\,\mathrm{kg}$、向内吸积率 $\dot M=10^{14}\,\mathrm{kg\,s^{-1}}$、距离 $D=10^{20}\,\mathrm{m}$ 和颜色硬化因子 $f_{\rm col}=1.7$。发光盘的外缘在六千引力半径。这些都是模拟输入。

## 哪些数据进入计算，哪些只供比较

先打开 collection.json，看数组名、维度、单位、列含义与来源身份。每种状态的 input.npz 装几何、首次交点状态、原正面积权重、小区面积与原频率表；独立的 expected.npz 装参考辐射量和保存的显示数组。

endpointIds 依次给出视角、光线、状态和所选交点次序。endpointCoordinates 记录屏幕方位角、光路转角、发射半径及逆半径导数。weightIds 则把端点连到某一级积分和某个有限小区。同一个端点可以出现在多条权重行里，不能把每行直接当一个相机像素。

确定没有遇到发光盘面的方向供光为零，频率比和有效温度标为不适用，以 NaN 配原状态表示。输入中未定义的坐标保留原 NaN 字节。盘面法线方向余弦只供对照；发射函数的参数里没有参考辐射量。

## 沿端点 54626 从半径算到强度

选六引力半径状态、六十度视角和细一级积分，级别编号为一。端点 54626 属于光线 129，状态为 HIT。它的发射半径是 $r=12.0021$，屏幕影响参数是 $b=12.9414$。下面公式中的距离都用引力半径 $r_g=GM/c^2$ 缩放；$G$ 是引力常量，$c$ 是光速。前一个半径落在气体盘面，后一个描述观察者屏幕上的位置。

先按 $R=r(GM/c^2)$ 换成米。规定的牛顿零内缘力矩供能律给出单面表面通量，再由它求有效温度：

$$
\begin{aligned}F(R)&=\frac{3GM\dot M}{8\pi R^3}\left(1-\sqrt{\frac{R_{\rm in}}{R}}\right),\\T_{\rm eff}&=\left(\frac{F}{\sigma_{\rm SB}}\right)^{1/4}.\end{aligned}
$$

$R_{\rm in}$ 是内缘的米制半径，$\sigma_{\rm SB}$ 是斯特藩–玻尔兹曼常量。[Zimmerman 等的 astro-ph/0408209v1 第 2 节](https://arxiv.org/pdf/astro-ph/0408209v1)推导了这条供能律。[薄盘在哪里发热](https://sandboxphysics.com/zh/stories/accretion-disks/thin-disk-torque-temperature/)从力矩做功走到这一步。代码保留上面的半径乘法分组，内缘附近也一样。

再读原屏幕方位角 $\chi=3.14866\,\mathrm{rad}$；倾角 $i$ 从盘面法线量起。本材料采用的坐标方向给出

$$
\begin{aligned}\lambda&=-b\cos\chi\sin i,\\g&=\frac{\sqrt{1-3/r}}{1-r^{-3/2}\lambda}.\end{aligned}
$$

用 SI 单位说，$\lambda=L_zc/(E_\infty r_g)$，其中 $L_z$ 是光子绕盘轴的角动量，$E_\infty$ 是它在无穷远处的能量；$g$ 是到达频率除以发射频率。这个端点重新算出 $T_{\rm eff}=1.95248\times10^6\,\mathrm{K}$、$g=1.18562$。沿这个方向到达的光蓝移了，本地温度仍属于发光的气体。

若局部各方向等强度发光，远方的总比强度为

$$
I_{\rm bol,obs}=\frac{g^4F}{\pi}.
$$

这里得到 $5.18308\times10^{17}\,\mathrm{W\,m^{-2}\,sr^{-1}}$。按频率看，两种等价写法是

$$
\begin{aligned}I_{\nu,\rm obs}&=\frac{g^3}{f_{\rm col}^4}B_{\nu/g}(f_{\rm col}T_{\rm eff})\\&=\frac{1}{f_{\rm col}^4}B_\nu(gf_{\rm col}T_{\rm eff}).\end{aligned}
$$

$B_\nu$ 是普朗克能量比强度，代码使用 SI 形式。像的三个原通道分别取 $10^{16},10^{17},10^{18}\,\mathrm{Hz}$。中间通道的值是 $0.740035\,\mathrm{W\,m^{-2}\,sr^{-1}\,Hz^{-1}}$。热谱和颜色硬化可先看[把不同温度圆环加成一条光谱](https://sandboxphysics.com/zh/stories/accretion-disks/adding-disk-blackbody-spectra/)，三次方和四次方因子接着读[频率和亮度的改变](https://sandboxphysics.com/zh/stories/accretion-disks/photon-frequency-and-brightness/)；[Li 等的附录 E](https://arxiv.org/pdf/astro-ph/0411583v2#page=54)给出强度传输的原典定义。

## 把原权重加进第 345 格

权重行 59420 把这个端点连到细积分的第 345 格。它是观察者屏幕上的一个扇区：影响参数从十到十四，角度占整圆三十分之一。面积为 $A_c=10.0531\,r_g^2$，其中有 42 条原正权重。

![一个有限屏幕小区内的原积分采样点，标出所选的发光端点](https://sandboxphysics.com/_astro/finite-cell.zh.Bs6_0_EP.svg)

屏幕第 345 格的原积分采样点，橙色标出端点 54626。这是一个有限像平面扇区，不是精细相机像素。 [打开完整图像](https://sandboxphysics.com/_astro/finite-cell.zh.Bs6_0_EP.svg)

用 $q$ 编号权重行，$e(q)$ 是它对应的端点，$k$ 表示一个像通道。先求小区强度积分，再除以小区面积：

$$
\begin{aligned}J_{c,k}&=\sum_{q\to c}w_q I_{e(q),k},\\\overline I_{c,k}&=\frac{J_{c,k}}{A_c}.\end{aligned}
$$

所选权重为 $0.164410\,r_g^2$，给总强度积分贡献 $8.52153\times10^{16}\,\mathrm{W\,m^{-2}\,sr^{-1}}\,r_g^2$。把 42 行都加上，小区积分为 $5.22431\times10^{18}\,\mathrm{W\,m^{-2}\,sr^{-1}}\,r_g^2$。再除以面积，平均强度为 $5.19672\times10^{17}\,\mathrm{W\,m^{-2}\,sr^{-1}}$。

这里要用当前状态自己的小区面积与径向分区。六引力半径和九引力半径状态的数组形状相同，物理边界却不同。这个平均值描述的是整块有限区域。

## 同一批发射怎样进入完整光谱

在原来的二百五十七个频率逐一求强度，再按全部适用的原权重相加。取 weightAreaRg2 中的面积数值，每个面积单位对应 $(r_g/D)^2$ 球面度，接收到的通量就是

$$
F_{\nu,\rm obs}=\left(\frac{r_g}{D}\right)^2\sum_q w_q I_{\nu,e(q)}.
$$

这里使用原方形孔径，两个屏幕方向都从中心向外延伸一百四十四个引力半径。像平面面积已经包含观察几何，再乘平盘余弦会改掉这次计算。中央图像只显示二十四个引力半径，是裁画面，不改这次求和。

![两档给定内缘在基准吸积率下的实际重算光谱，使用同一完整孔径](https://sandboxphysics.com/_astro/accepted-spectra.zh.rdnB31ad.svg)

参考吸积率、六十度、细积分下实际重算的两条光谱。图中只展示一个频率窗口，文件保留完整原频率表。 [打开完整图像](https://sandboxphysics.com/_astro/accepted-spectra.zh.rdnB31ad.svg)

六引力半径状态的细积分总通量下界为 $5.58286\times10^{-12}\,\mathrm{W\,m^{-2}}$，九引力半径状态为 $3.57953\times10^{-12}\,\mathrm{W\,m^{-2}}$。它们是固定有限孔径收到的模拟通量。图里画 $\nu F_\nu$，频率窗口为 $10^{14}$ 到 $10^{19}\,\mathrm{Hz}$；对数坐标只是看图方式，频率积分和检查仍用完整原表。

未解析的窄临界带另有供光上界，图像与光谱只加已确定的供光。重追光路或新选首次不透明交点，必须另做相应计算与验证。这里固定交点，用规定的牛顿供能接史瓦西传播。

## 看懂检查，再试故意失败的例子

正常温度、强度和加权输出与同源参考值比较，相对容差为 $10^{-12}$；频率比用 $10^{-10}$。这是算术重放容差。零力矩内缘附近，F64 数值相同，不表示连续模型温度处处一样准确。光谱零值和次正规尾部沿用一千一百位十进制正项点积 IEEE 区间，以重算的 F64 强度和原 F64 权重为条件。ULP 是相邻可表示数的间隔，检查报告绝对 ULP 和无法达到的相对精度。九引力半径状态没有另行证明的十进制条件误差界。

物理检查保留两级空间与光谱 $L^1$ 限制 $10^{-3}$、未知供光比例 $10^{-4}$、光谱与总通量一致性 $10^{-8}$、一百二十九／二百五十七频率一致性 $10^{-3}$，以及精确面积和立体角限制 $10^{-12}$。看一条检查时，把实际值和阈值放在一起。源身份、算术或物理检查首次失败就停，并保留全部已返回前缀。

运行小型反例：

```
python3 -I -B source/isolated_entry.py source/isolated_fixtures.py --package . --collection-sha256 ad1a4b0d345c179093accdce888d5ee8a49eda9348cfe5aa58d61f6bd67483e1 --output tutorial-fixtures
```

**参考图像被改坏，为什么新图像不跟着变？** 小样例先写坏参考，再开始一次新计算。只接收几何的发射程序和原权重仍算出相同图像，最后由独立比较明确拒绝坏参考。若损坏的是真实下载文件，文件身份检查也会拒绝它。

**把六引力半径表中小于九的交点删掉，就有九引力半径图像了吗？** 光路可以先穿过更大的内孔，再遇到后面的盘面。已有九引力半径状态因此使用自己的首次交点表。任意新内缘都需要重新获得合格的选择结果。

**两种接收通量该严格按内缘半径反比吗？** 那个缩放属于特定的牛顿总功率比较。某个有限孔径收到多少光，还取决于哪些方向碰到盘、各自经过怎样的频移。这里要比较实际的完整求和。

**别人要检查你的结果，该留下哪些文件？** 保留 result.json、生成的 NPZ、两份原始返回文件和尾部检查，再配上精确的集合哈希。有失败时，也能找到第一次出错的位置。正文数值为便于阅读作了四舍五入，完整精度另存于[配套例题文件](https://sandboxphysics.com/downloads/black-hole-light/ac49-tutorial-worked-examples.json)。

## 来源

1. [Zimmerman 等的 astro-ph/0408209v1 第 2 节](https://arxiv.org/pdf/astro-ph/0408209v1)
2. [Li 等的附录 E](https://arxiv.org/pdf/astro-ph/0411583v2#page=54)

## 继续阅读

吸积盘怎样发光 · 阅读路径

### 吸积盘怎样发光

1. [文章 **黑洞周围的气体为什么会发光**](https://sandboxphysics.com/zh/stories/accretion-disks/why-accretion-disks-shine/)
2. [文章 **薄盘在哪里发热**](https://sandboxphysics.com/zh/stories/accretion-disks/thin-disk-torque-temperature/)
3. [文章 **把不同温度的圆环加成一条光谱**](https://sandboxphysics.com/zh/stories/accretion-disks/adding-disk-blackbody-spectra/)
4. [文章 **光走到远方，频率和亮度怎样改变**](https://sandboxphysics.com/zh/stories/accretion-disks/photon-frequency-and-brightness/)
5. [文章 **一条光路先碰到哪一面盘**](https://sandboxphysics.com/zh/stories/accretion-disks/first-opaque-disk-crossing/)
6. [当前页面 **从保存的交点重算盘像与光谱**](https://sandboxphysics.com/zh/stories/accretion-disks/recompute-frozen-disk-light/)
7. [文章 **怎样读一篇薄盘光谱论文**](https://sandboxphysics.com/zh/stories/accretion-disks/reading-thin-disk-spectrum-paper/)

还有 1 组

### 用到同一实验的其他文章

本文用到、其他系列也在用的实验，后面跟着那些系列里的文章。

1. [实验 **黑洞吸积盘的光**](https://sandboxphysics.com/zh/labs/black-hole-light/)
2. [文章 **引力坍缩不需要一颗完美的球形恒星**](https://sandboxphysics.com/zh/stories/astronomy-gravity/penrose-trapped-surfaces/)
