Numerical study of energy extraction from rotating (Kerr) black holes via the Penrose process using rocket propulsion. This repository accompanies the paper "On the rarity of rocket-driven Penrose extraction in Kerr spacetime".
Through 252,000 trajectory simulations (112,000 main experimental phases + 140,000 spin-threshold characterization), we establish:
| Finding | Value |
|---|---|
| Broad-scan success rate ( |
~1% |
| Sweet-spot success rate ( |
11--14% |
| Peak success rate ( |
~88.5% |
| Critical spin threshold | |
| Single-impulse efficiency | |
| Continuous thrust efficiency | 2--4% |
Sweet spot parameters: specific energy
A single impulsive burn at periapsis achieves maximum efficiency (~19%) by concentrating all thrust at the point of minimum exhaust energy.
Sustained thrust throughout the ergosphere passage demonstrates path-averaging effects that reduce efficiency to 2--4%.
Within the ergosphere of a Kerr black hole, the stationary Killing vector becomes spacelike, permitting negative-energy states. A spacecraft can exploit this by ejecting exhaust with negative Killing energy
We work in the test-particle limit (
where the exhaust 4-velocity is
Penrose signature: Energy extraction occurs when exhaust Killing energy
penrose_process/
|── continuous_thrust_case.py # Sustained ergosphere thrust
|── single_thrust_case.py # Single impulsive burn at periapsis
|── kerr_utils.py # Kerr metric utilities
|── experiments/
| |── trajectory_classifier.py # Orbit classification
| |── parameter_sweep.py # Grid-based exploration
| |── comprehensive_sweep.py # Full statistical sweeps
| |── thrust_comparison.py # Strategy comparison
| |── ensemble.py # Monte Carlo analysis
| |── run_trajectory_study.py # CLI runner
| `── trajectory_visualization.py # Animated visualizations
|── tests/ # Physics validation tests
`── results/ # Generated output
pip install -r requirements.txtRequirements: Python >= 3.8, numpy, scipy, matplotlib
# Single impulse case
python single_thrust_case.py
# Continuous thrust case
python continuous_thrust_case.py# Quick validation (~2 min)
python experiments/run_trajectory_study.py --mode quick
# Standard study (~10 min)
python experiments/run_trajectory_study.py --mode standard
# Full analysis (~30 min)
python experiments/run_trajectory_study.py --mode fullpython experiments/trajectory_visualization.py --spin 0.95All six figures from the paper can be reproduced using the provided scripts.
# Generate all 6 figures (PDF + PNG)
python experiments/generate_prd_figures.pyThis creates figures/fig1_orbit_classification.pdf through figures/fig6_ultrarel_saturation.pdf.
To regenerate the underlying sweep data from scratch (~120,000 trajectories, 4-8 hours):
# Regenerate JSON data for Figures 5 and 6
python experiments/regenerate_sweep_data.py
# Then generate figures from new data
python experiments/generate_prd_figures.pyOptions for regenerate_sweep_data.py:
--fig5: Only regenerate Figure 5 data (velocity phase transition)--fig6: Only regenerate Figure 6 data (ultra-relativistic saturation)--quick: Quick test mode (50 samples/point instead of 500)--workers N: Number of parallel workers
| Figure | File | Description |
|---|---|---|
| 1 | fig1_orbit_classification.pdf |
Orbit classification in |
| 2 | fig2_ensemble_statistics.pdf |
Penrose success rate vs spin |
| 3 | fig3_thrust_comparison.pdf |
Single-impulse vs continuous thrust |
| 4 | fig4_spin_dependence.pdf |
Spin dependence of extraction window |
| 5 | fig5_thrust_sensitivity.pdf |
Velocity phase transition at |
| 6 | fig6_ultrarel_saturation.pdf |
Efficiency saturation as |
Recommended solver settings for Kerr geodesics:
from scipy.integrate import solve_ivp
solution = solve_ivp(
geodesic_rhs,
t_span=(0, tau_max),
y0=initial_state,
method='DOP853', # 8th-order Dormand-Prince
rtol=1e-10,
atol=1e-12,
)Initial conditions:
-
R. Penrose and R. M. Floyd, Nature Phys. Sci. 229, 177 (1971). doi:10.1038/physci229177a0
-
R. M. Wald, Astrophys. J. 191, 231 (1974). doi:10.1086/152959
-
S. Chandrasekhar, The Mathematical Theory of Black Holes (Oxford University Press, 1983).

