Skip to content
/ empyrean Public

N-Body Simulator with CUDA compute and OpenGL visualization support

License

Notifications You must be signed in to change notification settings

dhmnr/empyrean

Repository files navigation

Contributors Forks Stargazers Issues BSD3 License


empyrean

N-Body Simulator with CUDA compute and OpenGL visualization support


Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Usage
  3. Building
  4. Contributing
  5. License
  6. Contact
  7. Acknowledgments

About The Project

The Gravitational N-Body Simulator is a computational physics project designed to simulate the complex interactions between multiple celestial bodies under the influence of gravity. This project aims to provide a versatile tool for scientists, researchers, and astronomy enthusiasts to better understand the dynamics of celestial systems, from simple two-body interactions to intricate multi-body systems like galaxies and star clusters.

(back to top)

Features

  • Simulation is decoupled from visualization, allowing for extremely small integration steps. Which provids realistic N-Body simulation
  • Exploiting the embarrasingly parallel nature of the N-body problem, Most of the work is offloaded to GPU by using CUDA kernels for mathematical calculations
  • CUDA kernels directly write to OpenGL vertex buffer objects in GPU memory, avoding extremely costly Host to Device and Device to Host data copies
  • Provide a simple YAML initializer support for configuring initial state

(back to top)

Roadmap

Simulation Core

The core of empyrean, handles the physics calculations and simulation loop.

  • Add support for more integretors (Verlet, Runge-Kutta IV, etc)
  • Optimize reduction in CUDA kernels (Ref)
  • Add Barns-Hut approximation algorithm
  • Implement SI prefixes and scale units automatically

Rendering and Visualization

The rendering component handles the visualization of the particles and the simulation.

  • Render anti-aliased circular points
  • Add more camera controls
  • Support pause/resume and controlling simulation speed
  • Support Vulkan
  • Display FPS and other details on window
  • Provide a user interface widget before rendering to control simulation parameters
  • Motion blur for fast moving points

Common

  • Add documentation

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Dheemanth Manur - [email protected]

Project Link: https://github.com/dhmnr/empyrean

(back to top)

Acknowledgments

(back to top)

About

N-Body Simulator with CUDA compute and OpenGL visualization support

Resources

License

Stars

Watchers

Forks

Packages

No packages published