Skip to main content
Sandbox Physics

L4 · Method and paper reading

Recompute a disk image and spectrum from saved intersections

Sandbox Physics ·

A disk image and its spectrum can be rebuilt from the same emitting points. Give each point a temperature and a frequency shift, then add its intensity with the area it occupies on the observer's sky. This guide follows one saved simulated intersection, one finite image cell and the complete fixed-aperture spectrum.

The downloadable tutorial supplies the two reference-rate states with inner edges at six and nine gravitational radii. Each has its own saved intersections and weights, three viewing directions and two integration levels. The calculation rebuilds local emission and weighted transport. Photon trajectories and the first opaque disk encounter remain frozen inputs. Read the first opaque encounter before changing what an intersection means.

Run the two supplied states

The archive is 6,974,583 bytes. Its SHA256 is:

be1f5c1ea1120b58a54d423d116590fc95c9599d39dc5f1172a7cd7c36d1a122

Extract it and open a terminal in the extracted root, beside collection.json and source/. Python 3.12 or later is sufficient; the reader uses only the standard library. Run:

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

Both result.json files should report PASS_PORTABLE_EMISSION_AND_TRANSFER. Choose new output folders each time; existing records are preserved. These numerical inputs and Python code have been run in clean processes for both states, all three views at zero, sixty and seventy-five degrees, both levels and every one of the 257 original frequencies. The portable calculations passed their source comparisons and physical checks.

Both states use M=2×1031 kgM=2\times10^{31}\,\mathrm{kg}, inward rate M˙=1014 kg s−1\dot M=10^{14}\,\mathrm{kg\,s^{-1}}, distance D=1020 mD=10^{20}\,\mathrm{m} and colour hardening fcol=1.7f_{\rm col}=1.7. The emitting disk extends to six thousand gravitational radii. These are prescribed simulation inputs.

Keep geometry and expected answers apart

Open collection.json first. It names every array, shape, unit, column and source identity. For each state, input.npz contains endpoint geometry, first-hit status, original positive area weights, cell areas and the original frequency grid. The separate expected.npz contains reference radiometry and saved display arrays.

endpointIds gives view, ray, status and selected crossing order. endpointCoordinates gives the screen angle, path angle, emission radius and inverse-radius derivative. weightIds connects an endpoint to an integration level and a finite cell. A single endpoint can have more than one weight row. Follow those references instead of assuming that a row is a camera pixel.

A known nonhit emits zero. Its frequency ratio and effective temperature are not applicable, so the generated record marks them NaN and retains the original status. Undefined input coordinates keep their original NaN words. The surface-normal cosine remains reference-only. The emitter's arguments contain geometry. A separate controller compares each new return with its reference.

Follow endpoint 54626 from radius to intensity

Use the six-radius state at sixty degrees and fine level, index one. Endpoint 54626 is a HIT on ray 129. Its saved emission radius is r=12.0021r=12.0021, and its screen impact parameter is b=12.9414b=12.9414. Here distances in the formulas are numerical ratios to the gravitational radius rg=GM/c2r_g=GM/c^2, where GG is Newton's constant and cc is light speed. The two radii describe different places: one on the gas disk, one on the observer's screen.

Convert the emission radius to metres as R=r(GM/c2)R=r(GM/c^2). With inner radius RinR_{\rm in}, the prescribed one-face surface flux and effective temperature are

F(R)=3GMM˙8πR3(1−RinR),Teff=(FσSB)1/4.\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}

σSB\sigma_{\rm SB} is the Stefan–Boltzmann constant. This is the Newtonian zero-inner-torque law derived in Zimmerman et al., astro-ph/0408209v1, section 2. Where a thin disk heats follows that step from torque work. The downloaded code preserves the radius grouping above, including near the weak inner edge.

Next use the original screen angle χ=3.14866 rad\chi=3.14866\,\mathrm{rad} and inclination ii, measured from the disk normal. In the supplied coordinate convention,

λ=−bcos⁡χsin⁡i,g=1−3/r1−r−3/2λ.\begin{aligned}\lambda&=-b\cos\chi\sin i,\\g&=\frac{\sqrt{1-3/r}}{1-r^{-3/2}\lambda}.\end{aligned}

In SI terms, λ=Lzc/(E∞rg)\lambda=L_zc/(E_\infty r_g), with axial photon angular momentum LzL_z and energy at infinity E∞E_\infty. The frequency ratio gg compares arrival to emission. At this endpoint the new calculation returns Teff=1.95248×106 KT_{\rm eff}=1.95248\times10^6\,\mathrm{K} and g=1.18562g=1.18562. The light is blueshifted along this direction; the local temperature still belongs to the gas.

For isotropic local emission, the arriving bolometric intensity is

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

It is 5.18308×1017 W m−2 sr−15.18308\times10^{17}\,\mathrm{W\,m^{-2}\,sr^{-1}} here. For the monochromatic intensity, the two equivalent forms are

Iν,obs=g3fcol4Bν/g(fcolTeff)=1fcol4Bν(gfcolTeff).\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νB_\nu is Planck's energy intensity per frequency. The code uses its SI form. The original three image channels are at 1016,1017,1018 Hz10^{16},10^{17},10^{18}\,\mathrm{Hz}. At the middle frequency this point gives 0.740035 W m−2 sr−1 Hz−10.740035\,\mathrm{W\,m^{-2}\,sr^{-1}\,Hz^{-1}}. Adding differently heated rings explains the thermal spectrum and colour hardening. Frequency and brightness shifts explains the cubic and fourth-power factors; Li et al., Appendix E gives the underlying intensity transport convention.

Add the original weights in cell 345

Weight row 59420 connects this endpoint to cell 345 at fine level. The cell lies on the observer's screen between impact parameters ten and fourteen, over one of thirty angular sectors. Its area is Ac=10.0531 rg2A_c=10.0531\,r_g^2. Its 42 original positive weight rows sample that finite region.

Original quadrature samples in one finite screen cell, with the selected emitting endpoint highlighted

Original quadrature positions in screen cell 345, with endpoint 54626 highlighted. The cell is a finite image-plane sector, not a resolved camera pixel.

Open the full figure

Let qq index weight rows, e(q)e(q) their endpoint and kk an image channel. The integrated cell intensity and its mean are

Jc,k=∑q→cwqIe(q),k,I‾c,k=Jc,kAc.\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}

The selected weight is 0.164410 rg20.164410\,r_g^2, so its bolometric contribution is 8.52153×1016 W m−2 sr−1 rg28.52153\times10^{16}\,\mathrm{W\,m^{-2}\,sr^{-1}}\,r_g^2. Adding all 42 rows gives the cell integral 5.22431×1018 W m−2 sr−1 rg25.22431\times10^{18}\,\mathrm{W\,m^{-2}\,sr^{-1}}\,r_g^2. Dividing by the cell area gives mean intensity 5.19672×1017 W m−2 sr−15.19672\times10^{17}\,\mathrm{W\,m^{-2}\,sr^{-1}}.

Use the selected state's own cell area and radial panels. The six- and nine-radius grids have the same array shapes, but their physical boundaries differ. The mean intensity describes the whole finite cell.

Sum the same emission over the spectral aperture

At each of the 257 supplied frequencies, evaluate the same emitter and add every applicable original weight. Use the numerical area values in weightAreaRg2; one such area unit occupies (rg/D)2(r_g/D)^2 steradians. The received flux is

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

The sum covers the original square extending 144 gravitational radii along each screen axis. The image-plane measure already supplies the viewing geometry; an additional flat cosine would change the calculation. The saved central image crop extends only 24 radii and leaves this sum unchanged.

Actual recomputed reference-supply spectra at the two prescribed inner edges, through the same full aperture

Actual recomputed reference-rate spectra at sixty degrees and fine level. The graph shows a frequency window; the supplied arrays retain the full original grid.

Open the full figure

The fine bolometric lower flux is 5.58286×10−12 W m−25.58286\times10^{-12}\,\mathrm{W\,m^{-2}} for the six-radius state and 3.57953×10−12 W m−23.57953\times10^{-12}\,\mathrm{W\,m^{-2}} for the nine-radius state. These are simulated received fluxes through that finite aperture. The plot shows νFν\nu F_\nu over 101410^{14} to 1019 Hz10^{19}\,\mathrm{Hz}; its logarithmic axes are a viewing choice. Frequency integration and all checks still use the original full grid.

The narrow unresolved critical band contributes a separately bounded unknown amount. The known-lower image and spectrum add the light from resolved directions. Retracing paths or making a new first-opacity decision requires a separate calculation and qualification. Here the prescribed Newtonian heating supplies emission at the frozen Schwarzschild intersections.

Read the checks and try the failure examples

The reader compares normal temperature, intensity and weighted outputs with the accepted same-source values at relative tolerance 10−1210^{-12}; frequency shift uses 10−1010^{-10}. These are arithmetic replay tolerances. Near a zero-torque inner edge, F64 agreement does not imply uniform accuracy for the continuum temperature. Zero/subnormal spectral tails instead use the original 1100-digit conditional positive-dot IEEE interval, conditional on the recomputed F64 intensities and original F64 weights. A ULP is the spacing between adjacent representable numbers; the audit reports absolute ULPs and unattainable relative precision. No independent Rin9 Decimal conditioning bound is claimed.

The separate physical checks retain the two-level spatial and spectral L1L^1 limit of 10−310^{-3}, unknown-light ratio 10−410^{-4}, spectrum/bolometric agreement 10−810^{-8}, 129/257-frequency consistency 10−310^{-3}, and exact-area/solid-angle limit 10−1210^{-12}. Read a returned gate's actual value and limit together. A source, arithmetic or physical failure stops at its first error and keeps the returned prefix.

Run the deliberate small examples with:

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

Why does a changed reference image leave the fresh image unchanged? The small fixture writes a bad expected image before starting a new calculation. The geometry-only emitter and original weights still generate the same actual image; the downstream comparison then rejects the reference. Damaging a real downloaded file also triggers its identity checks.

Can the nine-radius image be made by deleting six-radius endpoints inside nine? A path can pass through the larger inner hole and meet the disk later. The supplied nine-radius state therefore has its own first-hit table. An arbitrary new inner edge needs a newly qualified selection.

Should the two received fluxes have the exact inverse-inner-radius ratio? That scaling describes a particular Newtonian total-power comparison. A received finite-aperture flux also depends on which directions reach the disk and on their frequency shifts. Compare the actual sums above.

Which files let someone inspect your result? Keep result.json, the generated NPZ, both raw returned journals and the tail audits, together with the exact collection hash. They identify the data, calculation and first failure if one occurs. Full-precision teaching values are in the companion worked-example file; the numbers in the prose are rounded for reading.

Sources

  1. Zimmerman et al., astro-ph/0408209v1, section 2
  2. Li et al., Appendix E

Keep reading

What this page links to directly

How accretion disks shine · Reading path

How accretion disks shine

  1. ArticleWhy gas around a black hole shines
  2. ArticleWhere a thin disk heats
  3. ArticleAdding the spectra of differently heated rings
  4. ArticleHow frequency and brightness change on the way out
  5. ArticleWhich disk surface a light path meets first
  6. You are hereRecompute a disk image and spectrum from saved intersections
  7. ArticleHow to read a thin-disk spectrum paper
1 more group

Other articles that use the same experiments

Each experiment from this article that another series also uses, followed by the articles there.

  1. LabBlack Hole Light Lab
  2. ArticleWhy collapse does not need a perfectly spherical star
Something broken, confusing, or missing on this page?Tell us
What kind of feedback?

Sent with this page’s address, its Lab ID, the site language and your device type. Please leave out personal details. Feedback is kept for up to 12 months.Privacy policy