In this repo there is my combined attempt to learn some Go programming and n-body simulation.
Simulation of 2 * 10^4 particles, all with the same mass. Initially they are placed uniformly at random on the area of a circle with radius 5 and angular velocity of 0.015π rad/s.
The angular velocity is low enough so that the disk collapses on itself.
collapsing_disc.mp4
Simulation of 2 * 10^4 particles on a rotating disc.
The gravity is not enough to keep the disc tight and it expands.
output.mp4
Three particles with different mass orbiting (similar to moon-earth-sun system). The smaller particle has a mass of 10^3, the medium particle 10^5 and the central particle 10^8.
Eventually the smaller mass gets too close to the larger one and is blown away.
three_masses.mp4
It runs an algorithm quadratic in the number of particles to calculate the force that one particle exerts on all the other ones. It runs multiple workers in parallel. It requires no external dependency
Clone the repo, and then
go run .
This will simulate the requested steps and render the frames in .png (one frame per simulation step). To create a video of your simulation (requires ffmpeg
):
./make-video