Sounds like an interesting project mate
Just curious though: DEM is a particle based approach, so how is it applied to rigid body simulations? Or have I got the wrong end of the stick here?
Are you using stream processing to accelerate the simulations? DEM always struck me as an ideal candidate for GPGPU acceleration.
The definition of what is a DEM seems to vary quite wildly. Typically you will see spheres being used in the system. In that sense it *could* be considered a particle based approach, however, the spheres tend to have mass and volume, therefore it becomes a rigid body problem. We need to consider friction and the collision interaction of a system of bodies with radii.
In my case I am proposing that in situations where very exacting movement is perhaps not as important as the general trend of movement of the overall system, using a closed loop physics engine in the design of a DEM could prove very beneficial. Suddenly using elements other than spheres becomes very easy, the inclusion of triangulated surfaces to block movement also becomes very easy. However this introduces problems instantly as they are designed for near real time calculations, so they tend to be very restrictive on the number of rigid bodies that can exist in a simulation at any one time.
To this end I have found myself spending the past few months working out how many individual simulations, each running in its own instance of an engine, could interact in a distributed manner to form one large system. It sounded easy enough when I started, but have found it to be quite a difficult challenge.
Personally, i am not using stream processing at the moment, the scale of what i'm doing (1,000,000+ individual spheres to be considered in a system) doesnt lend itself to even the best NVIDIA can offer in their top end TESLA, the hardware is still to limited from a memory point of view.
However, I have no doubt that you will see most of the physics engines progress rapidly to making good use of OpenCL or CUDA to exploit stream processing. Currently PhysX works (in part and on a small scale) on GPUs using CUDA. Supposedly the rigid body portion will also work in the next iteration of the SDK. Other engines such as Bullet are looking into CUDA and OpenCL also.
My argument has always been that the library based approach to homogenous things like contact detection or rendering (OpenGL, DirectX) has consistently proven itself to ultimately be the better approach. To this end, I firmly believe that scientists should pay more attention to physics engines, as they do so, they should be dragged purely out of the realm of gaming and into the realm of ultra realism for pure simulation applications. Why do researchers insist on re-implementing something as generic as contact detection between bounding areas, when really there shoul be one refined library that everybody uses. Its only physics afterall!
Sorry op, that was all a bit OT. Out of interest (to the OP), are you considering doing a PhD, or was it just a general question? If so, what area are you looking at and will it be funded or self funded?