Skip to main content
Sandbox Physics
Spinning black holes and boson clouds

Recomputing a published superradiance amplification table

Sandbox Physics ·

We downloaded the scalar amplification table that Brito, Cardoso and Pani distribute, and recomputed its spin 0.990.99, l=m=1l=m=1 slice with an independent solver. Of 100 rows, 99 agree with a median relative difference of 4.9×10−104.9\times10^{-10} and a largest difference of 9.0×10−79.0\times10^{-7}, well inside the authors' stated precision of one part in 10510^5. The remaining row sits exactly at the threshold, where the true value is zero. A second script then shows that the short hydrogenic formula for cloud growth agrees with an exact solution to within 10 percent only in narrow bands of coupling, and nowhere at spin 0.990.99.

Open the black hole superradiance Lab

This guide lists every input, command, output and failure case so that you can repeat the check. The physics behind it is in conserved flux, physical units and a first growth estimate and solving for the bound cloud's growth rate reproducibly.

What the authors published

The CENTRA gravitation group hosts amplification factors for scalar, electromagnetic and gravitational waves scattered by Kerr black holes. CENTRA/GRIT, amplification factors The page says the routines are freely available and asks users to refer to the original work, the review by Brito, Cardoso and Pani. Brito, Cardoso and Pani, Superradiance, §4.7

Table 5.1 The file used here.
ItemValue
Archivesuperradiance_spin_1.zip
File insidesigma_VS_om_a_s0l1m1.dat
Columnsa/Ma/M, MωM\omega, ZZ
UnitsG=c=M=1G=c=M=1
Stated precisionone part in 10510^5, archive readme
Rows with a=0.99a=0.99100, from Mω=0.00868M\omega=0.00868 to 0.8680.868

ZZ is the fractional energy gain of the reflected wave, Z=dEout/dEin−1Z=\mathrm dE_{\mathrm{out}}/\mathrm dE_{\mathrm{in}}-1. The archive also contains a Mathematica notebook. We did not open it, so nothing here depends on the authors' code.

We do not redistribute the archive. Its SHA-256 digests are recorded in slice-inputs.json so that you can confirm you have the same bytes.

Step 1: download and verify

Keep the download in its own empty folder, and the scripts in another.

mkdir -p superradiance-check/author-data superradiance-check/scripts
cd superradiance-check/author-data
curl -L -o superradiance_spin_1.zip https://centra.tecnico.ulisboa.pt/media/cms_page_media/147/superradiance_spin_1.zip
shasum -a 256 superradiance_spin_1.zip
unzip superradiance_spin_1.zip
shasum -a 256 sigma_VS_om_a_s0l1m1.dat

The two digests should be:

2c03d43e8d417fad30c2128bb202836411a384dac99d2dcd1a3679f6574aff30  superradiance_spin_1.zip
e03e70b3b2af6c8112487212f8dcb04c9d5bfa46837685580ad65694865333af  sigma_VS_om_a_s0l1m1.dat

If either differs, the host has changed the file. Stop and compare before trusting any result below. The run script also checks the table digest and records whether it matched.

Step 2: get the scripts and run them

Save these files into the scripts folder:

  1. spheroidal_eigenvalue.py, the angular eigenvalue.
  2. kerr_scalar_scattering.py, the scattering solver.
  3. low_frequency_amplification.py, the analytic small-frequency formula.
  4. reproduce_amplification_slice.py, the comparison driver.
  5. slice-inputs.json, the run settings.

Then run, from the scripts folder:

python3 reproduce_amplification_slice.py ../author-data/sigma_VS_om_a_s0l1m1.dat slice-inputs.json slice-outputs.json

The script exits with status 0 when no row fails and 1 otherwise. Our output is slice-outputs.json. We used Python 3.9.6, NumPy 2.0.2 and SciPy 1.13.1; the versions are written into the output file.

What the solver does

The solver shares no code with the authors. For each frequency it:

  1. computes the spheroidal eigenvalue for c2=(aω)2c^2=(a\omega)^2 as the eigenvalue of a 24×2424\times24 matrix;
  2. starts at r++10−3(r+−r−)r_+ + 10^{-3}(r_+-r_-) from an eight-term series that falls purely into the horizon;
  3. integrates the radial equation outward with an eighth-order Runge-Kutta method, relative tolerance 10−1110^{-11}, to r=max⁡(250,80/ω)r=\max(250,80/\omega);
  4. matches the result to twelve-term incoming and outgoing series and reads off Z=∣Rout/I∣2−1Z=|R_{\mathrm{out}}/I|^2-1.

A row passes when the computed ZZ is within 10−510^{-5} of the published value, relative. Rows whose published value is below 10−1210^{-12} in magnitude are reported separately as round-off rows, since a relative difference has no meaning there.

Results

Table 5.2 Checks on the spin 0.990.99 slice.
CheckResult
Rows compared99, no failures
Round-off rows1, at Mω=0.43380M\omega=0.43380
Median relative difference4.9×10−104.9\times10^{-10}
Largest relative difference9.0×10−79.0\times10^{-7}, at Mω=0.00868M\omega=0.00868
Sign of ZZagrees in every row
Flux balance at horizon and infinitymismatch at most 4.2×10−114.2\times10^{-11}
Wronskian at six radii, Mω=0.3M\omega=0.3spread 3.6×10−103.6\times10^{-10}
Outer radius doubled at three frequencieschange at most 4.5×10−114.5\times10^{-11}
Table 5.3 Selected rows.
MωM\omegaPublished ZZComputed ZZ
0.008680.008682.733045×10−72.733045\times10^{-7}2.733047×10−72.733047\times10^{-7}
0.095440.095442.380891×10−42.380891\times10^{-4}2.380891×10−42.380891\times10^{-4}
0.381750.381753.662446×10−33.662446\times10^{-3}3.662446×10−33.662446\times10^{-3}
0.433800.433807.1×10−157.1\times10^{-15}00
0.442480.44248−4.521665×10−3-4.521665\times10^{-3}−4.521665×10−3-4.521665\times10^{-3}
0.529240.52924−0.9300786-0.9300786−0.9300786-0.9300786

The largest gain in the slice is 0.3660.366 percent at Mω=0.382M\omega=0.382, consistent with the review's statement that scalar waves gain at most about 0.40.4 percent. Above the threshold the hole absorbs almost the whole wave: ZZ approaches −1-1.

Two independent limits back up the solver. With the spin set to zero, ZZ is negative at every frequency tried: −1.69×10−5-1.69\times10^{-5} at Mω=0.05M\omega=0.05, −0.0344-0.0344 at 0.20.2 and −0.998-0.998 at 0.50.5. A non-rotating hole only absorbs. At small frequency the analytic formula of the review, its Eqs. (4.103)-(4.104), approaches the table: the ratio of formula to table is 0.9900.990 at Mω=0.0087M\omega=0.0087 and falls to 0.7720.772 by Mω=0.095M\omega=0.095, as expected for a leading-order expansion.

Step 3: where the hydrogenic growth formula holds

The cloud growth rate has a short formula, Eq. (5.27) of the review, valid for small coupling. To see where it holds, save kerr_bound_states.py and compare_hydrogenic_growth.py next to the other scripts and run

python3 compare_hydrogenic_growth.py hydrogenic-comparison-outputs.json

It solves the continued fraction for spins 0.50.5, 0.70.7, 0.90.9 and 0.990.99 and couplings from 0.050.05 in steps of 0.010.01 until the cloud stops growing, and first checks itself against Dolan's Table I. All six maxima agree to within 0.30.3 percent. Dolan, Instability of the massive Klein-Gordon field on the Kerr spacetime, Table I Our output is hydrogenic-comparison-outputs.json.

Table 5.4 Couplings where the hydrogenic rate is within 10 percent of the exact rate.
SpinWithin 10 percentLargest overestimate
0.50.5α=0.10\alpha=0.10 to 0.120.121.151.15
0.70.7α=0.18\alpha=0.18 to 0.190.191.411.41
0.90.9α=0.30\alpha=0.302.242.24
0.990.99none4.734.73

Read this table with care. The agreement bands lie just below each cut-off, where the two curves cross on their way to zero; they are not a regime in which the formula is accurate. At the smallest coupling computed, α=0.05\alpha=0.05, the formula still overestimates by 1515 to 5353 percent, more at higher spin. The real part of the frequency is far better: within 0.40.4 percent everywhere. The formula is a fair guide to which couplings grow and a poor guide to how fast.

Failure cases and guarded traps

The first and the last two items happened in our runs. The second and third are guarded in the code.

  1. The threshold row. At Mω=mΩHM\omega=m\Omega_H the exact gain is zero. The table's 7.1×10−157.1\times10^{-15} and our 00 are both round-off, so the row is reported but not scored.
  2. The extremal limit. The solver's horizon series and tortoise coordinate need r+≠r−r_+\neq r_-, so it refuses a=1a=1 instead of returning a number.
  3. The wrong angular parameter. For the bound cloud the spheroidal parameter is a2(ω2−μ2)a^2(\omega^2-\mu^2), a complex number. The bound-state solver computes it from the complex frequency at every step, rather than reusing the real scattering value (aω)2(a\omega)^2.
  4. The wrong level. At a=0.55a=0.55 and α=0.47\alpha=0.47 the hydrogenic starting guess converges to the first overtone, MωR=0.4622M\omega_R=0.4622, instead of the ground state, MωR=0.45190M\omega_R=0.45190. Continuing from a neighbouring solution fixes it.
  5. Slow convergence at small coupling. At a=0.99a=0.99 and α=0.05\alpha=0.05 the continued fraction still changes by 1.2×10−41.2\times10^{-4} when made four times deeper.

What this check does not show

It covers one file, the massless scalar with l=m=1l=m=1, at one spin. It says nothing about the electromagnetic or gravitational tables, nor about other spins in the same file, though the script can be pointed at them by changing the spin in the inputs. Agreement with the authors' table shows that two independent codes solve the same equation the same way; it is not an observation of superradiance. The Lab's gain chart uses the same solver, so this guide is also its test. Try it in the black hole superradiance Lab.

Try it in the Lab

Set spin 0.99 and frequency 0.38, and compare the gain readout with the table row you recomputed. Open the black hole superradiance Lab

Sources

  1. CENTRA/GRIT, amplification factors
  2. Brito, Cardoso and Pani, Superradiance, §4.7
  3. Dolan, Instability of the massive Klein-Gordon field on the Kerr spacetime, Table I

Keep reading

What this page links to directly

Spinning black holes and boson clouds · Reading path

From an amplified wave to a growing cloud

  1. ArticleWhy can a spinning black hole make the waves around it ever stronger?
  2. ArticleWaves, spin and the scales of a Kerr black hole
  3. ArticleConserved flux, physical units and a first growth estimate
  4. ArticleSolving for the bound cloud's growth rate reproducibly
  5. You are hereRecomputing a published superradiance amplification table
  6. ArticleHow self-interactions change boson-cloud limits from spins and gravitational waves
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