Basic ideas

The main assumption underlying the PPM library is that the systems being simulated are formulated as particle or hybrid particle-mesh algorithms. Structured, uniform Cartesian meshes are thus assumed to be sufficient. As a result, the physical and computational domains are rectangular or cuboidal in two and three dimensions, respectively, with simple boundary conditions at the outer faces. Complex geometries are handled by immersed boundaries, through the use of source terms in the corresponding field equations, or through boundary element techniques.


The simultaneous presence of particles and meshes requires several different concurrent domain decompositions. All of them are assumed to decompose the computational domain into rectangular or cuboidal sub-domains with a sufficient granularity to secure adequate load balance while limiting the number of sub-domains to a mininum. The concurrent presence of different decompositions allows to perform each step of the computational algorithm in its optimal environment with respect to load balance and the computation-to-communication ratio. For the actual computations, the individual sub-domains are treated as independent problems and extended with ghost mesh layers and ghost particles to allow for communication between them.


The library is split into two parts: PPM_core and PPM_numerics. The first part takes care of data allocation, domain decomposition, I/O, mappings, etc. The second part houses the solvers and other numerical operations such as the multigrid solver, Fast Multipole Method, Fast Fourier Transform, time integrators, Group Marching Method, etc.


PPM Core


PPM Numerics