For the simulation of granular media, i.e. multi-particle systems, canonical methods such as the Finite Element Method or the Finite Volume Method cannot be used, since the medium to be simulated lacks continuousness. For that reason methods that are not based on meshes are employed, which are based on data structures that completely lack adjacency. The so-called Discrete Element Method (DEM), which is one of these methods, is used to carry out this simulation. The goal of this research is to link the simulation of a multi-particle system and the simulation of a surrounding fluid in order to simulate dispersions. Dispersions are mixtures of solid particles and fluids, i.e. gases and liquids.
As computational fluid dynamics is very CPU-expensive and therefore time-consuming for large scale problems, it is usually carried out as a parallel computation on supercomputers or clusters. During such a computation the simulation domain is divided up into subdomains which are processed by the different nodes in parallel. Therefore it stands to reason to structure the particle simulation in the same manner. So at the beginning the work is focused on developing and implementing an efficient particle simulation program. As the positions of the particles and thus their distribution in the system can change, an adaptive domain subdivision is necessary to follow changes in the structure of the system. This provides for an optimal and even work distribution among the different processors. One flexible approach uses recursive domain subdivision that yields data structures with tree-based topology.
Even though parallelization reduces computation times, its influence on a program's performance is often overestimated compared to optimizing the structure of the program itself: A disadvantageously implemented program can be made to run only twice as fast if it is parallelized on two machines, whereas optimizing the data layout and bundling operations upon them can achieve a reduction of the computation time to less than one tenth of the original run time. To evaluate the effects of these optimization strategies profiling programs are used that provide an insight into the behaviour of the program, especially its use of cache memory. To additionally reduce computation time a mechanism controlling the size of the time steps can be used that allows for the size of these time steps to be varied depending on the state of the system.
The demand for flexibility and extensibility of the simulation program suggests an implementation in C++, thus enabling the application of object oriented structures. Through the use of expression template functions for the numerical calculations a computational efficiency is achieved that can hold its own compared to the efficiency of Fortran77, the language that has dominated numerical applications so far, while at the same time making it a lot easier to read the emerging code.
Information about the particle
simulation software Pasimodo, which is developed in the framework of this