Welcome, Guest

Author Topic: OpenCL accelerated solar system  (Read 3352 times)

moozoo

  • *
  • Posts: 8
OpenCL accelerated solar system
« on: January 03, 2014, 01:09:00 AM »
Pet project of mine, might interest some.
https://sourceforge.net/projects/openclsolarsyst/
I'm not planing to build it into anything as fantastic as Universe Sandbox.
Its more a prove of concept of using GPU's to create a accurate model of the Solar System that runs very fast and accurate.

vh

  • formerly mudkipz
  • *****
  • Posts: 1140
  • "giving heat meaning"
Re: OpenCL accelerated solar system
« Reply #1 on: January 03, 2014, 01:01:37 PM »
very interesting. universe sandbox 3 (the new version) uses opencl too. i haven't taken a good look yet but are you using barnes-hut to approximate computations?

moozoo

  • *
  • Posts: 8
Re: OpenCL accelerated solar system
« Reply #2 on: January 06, 2014, 09:19:53 PM »
>are you using barnes-hut to approximate computations

Some things
1) The entire asteroid belt only weighs %4 of the mass of the moon and 1/2 of that mass is contained in the four biggest ones   (Ceres, Vesa, Pallas, Hygiea)
2) An typical asteroid has a small hills sphere so asteroid to asteroid interactions are extremely small.
3) The number of asteroids for which we know the mass is very small. However an approximation (guess) can be made from their absolute magnitude (see the  Palermo document) . JPL's DE403 lists 300 odd

So I treat the majority of the asteroids as mass less.

Instead of a full O(n2) calculation it is a O(n*m) where n is really big (510,000) and m is quite small (i.e. 16 to 384)
With a high end GPU (graphic card) this runs at an acceptable rate i.e. >50fps (steps per second)

I'm trying to make it run as accurately as possible.
It currently predicts most of the close encounters listed at the NASA NEO web site including Apophis in 2029 (out by two days, but I think that might be a limitation of the precision of the MPC data)

I would like to detect all close encounters for asteroids and switch on their masses during the encounter.
For that I will need to implement an octree. But only for encounter detection.