  PySPH is an open-source, Python-based, framework for particle methods in
general and Smoothed Particle Hydrodynamics (SPH) in particular. PySPH allows a
user to define a complete SPH simulation using pure Python. High-performance
code is generated from this high-level Python code and executed on either
multiple cores, or on GPUs, seamlessly. It also supports distributed execution
using MPI. PySPH supports a wide variety of SPH schemes and formulations. These
include, incompressible and compressible fluid flow, elastic dynamics, rigid
body dynamics, shallow water equations, and other problems. PySPH supports a
variety of boundary conditions including mirror, periodic, solid wall, and
inlet/outlet boundary conditions. The package is written to facilitate reuse
and reproducibility. This paper discusses the overall design of PySPH and
demonstrates many of its features. Several example results are shown to
demonstrate the range of features that PySPH provides.
