PySPH (https://pysph.readthedocs.io) is a Python-based, open-source framework for performing particle-based simulations built by our research group at the Department of Aerospace Engineering, IIT Bombay. While the focus is currently on the Smoothed Particle Hydrodynamics (SPH) method, the framework could be used for other particle-based methods as well.
A major challenge with modern computational research is the lack of reproducibility. The goal of PySPH is to make it easy to perform SPH simulations without sacrificing performance. We believe that this makes it easier to reproduce numerical results.
PySPH is different from other frameworks in that one can implement a complete SPH simulation in pure Python. This high-level Python code is automatically converted to high-performance code that can make use of multiple CPU cores, or be seamlessly executed on multiple computers using MPI. Recently, we have added support for seamless execution on a GPU as well.
There are several challenges while building such a framework and in this talk I will first provide a broad outline of the general challenges with computational science today and introduce the SPH method. I will then discuss how PySPH evolved over the years to become a general purpose tool. I will also show several examples of tools we built as a result of this effort. For example, an interface to the Zoltan library that makes it easy to perform distributed computing, transpilation tools to generate high performance code from high-level Python, and a handy automation package to reproduce entire computational papers with a single command. All of our tools are open source, and strive to employ good software engineering practices.
Prabhu Ramachandran is a faculty member at the department of Aerospace engineering, IIT Bombay. He primarily works on particle methods for fluid flow simulation and applied scientific computing.
Along with his students, he has been building an open source framework for particle simulations called PySPH (https://pysph.rtfd.io). He is the creator, and lead developer of the Mayavi Python package for 3D visualization (https://github.com/enthought/mayavi). He has been actively involved with the
FOSS and Python communities for the past two decades. He is a PI of the FOSSEE project (https://fossee.in). For more information see https://www.aero.iitb.ac.in/~prabhu