IPPL Manual

Independent Parallel Particle Layer

User and developer manual for the IPPL C++ particle and field library.

IPPL, the Independent Parallel Particle Layer, is a C++20 library for performance-portable particle, field, and particle-mesh simulations. It provides dimension-independent building blocks for Eulerian, Lagrangian, and hybrid methods on CPUs and GPUs.

This manual is written for two audiences: library users who want to build simulations with IPPL, and library developers who extend the core data structures, solvers, and communication layer.

IPPL logo

IPPL uses Kokkos for performance portability, MPI for distributed memory communication, and HeFFTe for scalable FFTs. Current published work includes the ALPINE/IPPL particle-in-cell mini-app scaling study [1] and the massively parallel free-space spectral Poisson solver [2].

Reading paths

For users:

  1. Start with 2  Overview and 4  Getting Started.
  2. Read 6  Core Concepts, then the data model chapters on fields and particles.
  3. Move to FFT, Poisson, Maxwell, or FEM depending on the application.
  4. Use 16  Examples as executable documentation.

For developers:

  1. Read the user path first.
  2. Continue with 14  Communication and 15  Performance Portability.
  3. Use 17  Developer Guide and 18  API Reference while changing the source.