In the last edition of the McGill Hackaton we came up with the idea of doing a project on Black Hole picture simulation, and given all the recent and exciting results from the Event Horizon Collaboration, we couldn't pass up the opportunity to work with this.
What it does
Welcome to our interactive Black Hole photography and lightlike geodesics simulator. This project was developed for the McGill Physics Hackathon 2022! Here we have implemented massless particle propagation simulations around a Schwarzschild Black Hole, following what can be found in the literature, and we combined it with a simple and intuitive interface built with PyQT5.
Using the dynamical equations for a massless particle (photon) in the Schwarzschild metric and the physics of thin accretion disks of compact objects we can code a ray-tracing algorithm in curved spacetime to figure out how the photons emitted by the disk propagate until it hits a "photographic plate" on the distant observer frame looking at the BH. The final result can be seen in the Fig. 2, in which we compute the bolometric flux of light rays (the sum of all frequencies' flux ). One nice feature we can note is the difference in the luminosity of the accretion disk created by the relative movement of gas elements that suffer relativistic beaming and the Doppler effect.
The objective of the interactive window is to give the user the opportunity to play with the Physics of the problem, changing some parameters of the problem, such as the viewing angle, the initial position of the incoming photons and the mass of the Black Hole, and getting a result some pretty nice and intuitive graphs, in a way that you aren't required to fully understand all of the theoretical calculations required to obtain the results, but are still able to understand what they mean.
For more information, check our website.
How we built it
The program was developed using python3. The simulation structure is based on solving the differential equations of motion for massless particles around a Black Hole using scipy's odeint function. The user interface was developed using a package called PyQT5, and for all the figures we used matplotlib.
You can check our git page to take a loot at the code.
Challenges we ran into
- The main reference paper we had for this project proved to be much more complicated to reproduce, with some equations presenting confusing algebraic errors, and not that many explanations to the results shown in it.
- Also, solving all of the differential equations proved to be really tricky in some situations, specially in the regions closer to the Black Hole, giving rise to divergencies.
Accomplishments that we're proud of
We managed to overcome both theoretical and numerical challanges in order to present nice results in the 24-hour period. Also, this was only the second time any of us has working with the creation of a user interface, so it was quite nice to remember and re-learn how to do it.
What we learned
- We were able to learn a lot about numerical calculations and solutions of differential equations. Ever since our Hackathon project from last year, these numerical problems involving relativity have been a really nice challenge to expand our boundary of knowledge regarding numerical solutions of differential equations.
What's next for Imaging a Black Hole: Ray-tracing in curved space-times
We want to polish our simulations a little bit more, and try to find ways to overcome the numrical problems that we faced in a more robust way.