The subject of this CS 490 exercise is the n-body gravitational simulation problem. My intention was to design a custom software package to explore the interaction effects of multiple point masses under a variety of initial conditions. Variable parameters for the simulation include:
number of bodies
number of clusters
spatial and mass distribution
spatial dimension and structure
initial linear and angular velocity
and several others...
The project provided me with a great opportunity to explore issues of scientific computing as well as software architecture and user interface issues.
The current software package allows the user to navigate a viewpoint through a 3D virtual space and
define multiple clusters of point masses using an
intuitive graphical user interface.
In order to exploit the inherently parallel nature of this problem, I structured the program as a multithreaded application with one main program thread, a control thread, and two numerical integration threads. Additionally, the potential to spawn an arbitrary number of integration threads is provided for.
As part of this effort, I also researched the astrophysical background behind the topic, as well as several numerical integration techniques such as 4th order Runge Kutta and an implicit integration scheme for long term simulation developed by the Crimean Astrophysical Observatory, Simeiz, Ukraine. In addition, I devised a heirarchical spatial subdivision technique for computing forces efficiently. Unfortunately due to time constraints, the latter two features have not yet been implemented in the software.
The software for this project is a free standing
Window NT executable, and was developed using
Microsoft Visual C++ 5.0 and the OpenGL based WorldToolKit API from Sense8 Corporation.