PySPH: A Python-based Framework for Smoothed Particle Hydrodynamics