computational plasma physics

PIC: A callback-centric particle-in-cell framework

arXiv:2607.13507

summary

PIC is a Python-based electromagnetic particle-in-cell framework that uses a callback-centric architecture to let users attach custom Python functions at any stage of the simulation loop, enabling flexible physics, diagnostics, and in‑situ analysis while keeping performance-critical parts in C extensions, Numba, and MPI.

Abstract

We present PIC, a Python-based electromagnetic particle-in-cell framework built around a callback-centric architecture. Existing PIC codes typically tie high performance to static, pre-compiled timestep loops, hindering implementation of custom physics, diagnostics, or output logic. PIC breaks this coupling by exposing every stage of the loop as a named stage (hook), permitting attaching arbitrary Python functions that operate on the full simulation state, enabling custom algorithms and in-situ analysis without modifying the core algorithms. Under this flexible framework, performance-critical kernels are written in C extensions and Numba, fields and particles are stored in NumPy arrays, and MPI parallelism is paired with graph partitioning to support dynamic load balancing and non-rectangular domains. Although PIC is designed as general-purpose, it has special focus on intense laser-plasma interactions. Future work will extend the framework to GPU acceleration and additional physics modules including implicit solvers and nuclear physics.

11 pages, 10 figures

Topics & keywords

$λ$PIC: A callback-centric particle-in-cell framework · wovepaper