I've made an n-body simulator called Graviton and wrote a paper on it, which was submitted to our national astronomy competition.

List of features:

  1. Runge-Kutta integration
  2. Minimal mode with no graphics
  3. Orbit display
  4. More bodies and accurate data from HORIZONS in the default solar_system file
  5. A user module and a primitive event system, where the user may override various event handlers for information extraction and custom reports
  6. Enhanced reports (ETA calculation, important dates, timers, extensible via the user module)
  7. Improved control over the simulation (via CLI arguments)
  8. Persistence

In addition to all these features, I've ran a lot of tests for the astronomy project. One of the tests I've ran was simulating from the year 2006, 23 years, into the year 2029, in order to compare my results (the distance between Earth and the asteroid 99942 Apophis) with NASA's. I'm satisfied with the software, as my results deviate from NASA's only by ~0.5%.

The code is available on my GitHub: github.com/corazza/Graviton.