Simulating Kirkwood Gaps

Phoebe Scaccia

Overview

The Kirkwood Gaps form due to orbital resonances of asteroids in the asteroid belt with the orbit of Jupiter. They occur at 3:1, 5:2, 7:3, and 2:1 orbital period ratios with Jupiter. At these ratios, Jupiter pulls on the asteroids such that their orbits change and they no longer have orbital periods in resonance with Jupiter.

Kirkwood-20060509.png
By Mdf at English Wikipedia - Transferred from en.wikipedia to Commons by Quadell using CommonsHelper ., Public Domain, Link

Goal

The goal of this project is to simulate the formation of the Kirkwood Gaps. Along the way, I will also explore the limitations in modelling complex n-body systems. Here is an example of the results that we should see:

A simulation comparing eccentricity to distance from the sun as time goes by.

Setup

This project was built in Java using the Rice University COMP 310 Ballworld project as its base. I chose to use this because Ballworld provides an easy GUI for displaying the model's progress as well as a existing functionality for complex particle interactions. Of course, the project needed to be heavily modified to scale to large scale systems such as our solar system. The different components (Mars, Jupiter, etc.), could not be individually displayed to scale, as they would be smaller than a pixel in the scale of the solar system. However, their orbital distance from the Sun and relative speeds are to scale. Each Jupiter orbit corresponds to a little more than six Mars orbits, just as in our real solar system.

The basic GUI.

Challenges

Simulating an n-body problem's progress over millions of years is computationally expensive. With 3,003 particles in the system, simplifications and optimizations must be made in order to achieve any results within a reasonable amount of time.

The most costly calculation in this model is displaying the results to the GUI. Reducing the frequency of GUI updates significantly increases computation speed for the actual model. However, the GUI must update at a rate at which the human eye can still track how long it takes for Jupiter to make one orbit in order to calculate the amount of time that has passed during the modeling process. With the final model, the GUI was updated every tenth of a second because Jupiter's orbital period was approximately one eighth of a second.

In order to simplify the 3,003-body problem to a 3-body problem, the asteroids were treated as massless objects. This means that they can still be pulled around by the Sun, Mars, and Jupiter, but they will not interact amongst themselves. This reduces the time complexity from O(n2) to O(n) where n is the number of particles in the system. This means that there are much fewer computations that need to be done and the model can progress much more quickly with more particles.

Tracking

In order to keep track of the progression of the model, I take a screenshot every fifteen minutes. These screenshots were used to make the progression gifs seen in the Results section below.

Additionally, the asteroids are colored differently depending on their initial starting position. Asteroids that started within 3.47e8 km of the Sun are white. Asteroids that started farther than 4.22e8 km from the Sun are magenta. The rest of the asteroids are cyan. These values were chosen because those are the approximate locations of the Kirkwood Gaps. The coloration of the asteroids makes it easy to track any migration as well as approximate the location of where gaps are expected to be formed.

Results

The innermost gap was the most apparent gap that formed. The two outer gaps were a little less obvious. This may be due to the simplification of the model. The third run had the most obvious outer gaps, which makes sense given that it modeled the longest amount of time (3.5 million years).

Run 1

This was my initial run. I ran my code overnight, but it only got to 270,000 years due to an inefficiency in my code that I didn't catch at first. The yellow overlay shows where the gaps are expected to form. However, I did use enough asteroids nor did I run the model for long enough to see the gaps form.

Run to 270,000 years.

Run 2

For my second run, I fixed the inefficiency in my code and added coloring to the asteroids. The color is tied to initial starting position, as discussed in the Tracking section above. This model ran for approximately five hours.

Run to 1,810,000 years.

Run 3

The model ran overnight for approximately ten hours. This is the same model as the previous run, just run for longer. This allowed the gaps that were starting to form in run two to become more apparent.

Run to 3,540,000 years.

Presentation

These slides contain all of the above information in handy, presentation-ready format.