Balzer M., Kleinert J., Obermayr M.
in Particle-Based Methods III: Fundamentals and Applications – Proceedings of the 3rd International Conference on Particle-based MethodsFundamentals and Applications, Particles 2013 (2013) 920-930.
In numerous industrial applications there is the need to realistically model granular material. For instance, simulating the interaction of vehicles and tools with soil is of great importance for the design of earth moving machinery. The Discrete Element Method (DEM) has been successfully applied to this task [1, 2]. Large scale problems require a lot of computational resources. Hence, for the application in the industrial engineering process, the computational effort is an issue. In DEM parallelization is straight forward, since each contact between adjacent particles is resolved locally without regard of the other contacts. However, modelling a contact as a stiff spring imposes strong limitations on the time step size to maintain a stable simulation. The Non-Smooth Contact Dynamics Method (NSCD), on the other hand, models contacts globally as a set of inequality constraints on a system of perfectly rigid bodies . At the end of every time step, all inequality constraints must be satisfied simultaneously, which can be achieved by solving a complementarity problem. This leads to a numerically stable method that is robust with respect to much larger time steps in comparison to DEM. Since a global problem must be solved, parallelization now strongly depends on the numerical solver that is used for the complementarity problem. We present our first massively parallel implementation of NSCD based on the projected Gauß-Jacobi (PGJ) iterative scheme presented in . Focusing on one-sided asynchronous communication patterns with double buffering for data exchange, global synchronizations can be avoided. Only weak synchronization due to data dependencies of neighboring domains remains. The implementation is based on the Global address space Programming Interface (GPI), supplemented by the Multi Core Threading Package (MCTP)  on the processor level. This allows to efficiently overlap calculation and communication between processors.