PySDM is built around a Pythonic implementation of the Super-Droplet Method Monte-Carlo scheme for coagulation (Shima et al. 2009). The package features two number-crunching backends: multi-threaded CPU backend using Numba and a CUDA GPU backend using ThrustRTC and CURandRTC. PySDM ships with a set of examples shipped as Jupyter-notebooks, and covering simulation setups spanning box-model cases, adiabatic parcel simulations, single-column and two-dimensional kinematic frameworks (see animation below). Documentation of the package covers the API as well as tutorials exemplifying usage of PySDM from Python, Julia and Matlab. Development of PySDM is hosted on GitHub.
PySDM v1 constituted the MSc thesis of Piotr Bartman (Jagiellonian University, 2020) who had developed PySDM API, adaptive numerical solvers and package architecture. Features and examples of PySDM v1 are summarised in a Bartman et al. 2022 JOSS paper. Subsequent developments had been largely spearheaded by Emily de Jong and Clare Singer during their PhD studies at the Caltech CliMA team, and are summarised in the de Jong, Singer et al. 2023 JOSS paper. The original collisional breakup scheme (maintaining the key constant-state-vector size trait of SDM) had been defined and validated in de Jong et al. 2023 GMD paper (with section 3 based on MSc thesis of Oleksii Bulenok (Jagiellonian University, 2023)). The original adaptive time-stepping scheme for SDM introduced in PySDM v1 has been the topic of further research by Emma Ware which has been summarised in Ware et al. 2025 arXiv preprint.