# Welcome to the PySPH documentation!

PySPH is an open source framework for Smoothed Particle Hydrodynamics (SPH) simulations. Users can implement an SPH formulation in pure Python and still obtain excellent performance. PySPH can make use of multiple cores via OpenMP or be run seamlessly in parallel using MPI.

Here are some videos of simulations made with PySPH.

PySPH is hosted on github. Please see the github site for development details.

## Overview

- Overview
  - Features
  - SPH formulations
  - Credits
  - Research papers using PySPH
  - Citing PySPH
  - History
  - Support
  - Changelog

## Installation and getting started

- Installation and getting started
  - Quick installation
  - Installation with MPI
  - Using the configuration file
  - Dependencies
  - Installing the dependencies on GNU/Linux
  - Installing the dependencies on Ubuntu 18.04
  - Installing the dependencies on Mac OS X
  - Installing the dependencies on Windows
  - Using a virtualenv for PySPH
  - Downloading PySPH
  - Building and Installing PySPH
  - Issues with the pip cache
  - Running the tests
  - Running the examples
  - Possible issues with the viewer
- Learning the ropes
  - Imports
  - Organization of the `pysph` package
  - Functions for loading/generating the particles
  - Setting up the PySPH framework
  - Running the example
  - Visualizing and post-processing
  - Doing more
  - Debugging when things go wrong
- A more detailed tutorial
  - Imports
  - Setting up the PySPH framework
  - Specifying the interactions

## The framework and library

- The PySPH framework
  - The dam-break problem
  - A non-PySPH implementation
  - PySPH implementation
- Writing equations
  - Overview
  - Conventions followed
  - Writing the reduce method
  - Adaptive timesteps
  - Illustration of the `loop_all` method
  - Calling user-defined functions from equations
  - Calling arbitrary Python functions from a Group
  - Conditional execution of groups
  - Controlling the looping over destination particles
  - Writing integrators
  - Different equations for different stages
  - Examples to study
- Writing inlet oulet manager
  - Overview
- Using StarCluster with PySPH
  - Installing StarCluster
  - Configuring StarCluster
  - Setting up PySPH for StarCluster
  - Running PySPH scripts on a cluster
- Using the PySPH library
  - Working With Particles
  - Nearest Neighbour Particle Searching (NNPS)
  - Parallel NNPS with PyZoltan
  - Putting it together: A simple example
  - Summary
- Contribute to docs
  - How to build the docs locally
  - How to add the documentation

## Gallery of PySPH examples

- Gallery of PySPH examples

## Reference documentation

Autogenerated from doc strings using sphinx’s autodoc feature.

- PySPH Reference Documentation
  - Module application
  - Module controller
  - SPH equations
  - Integrator related modules
  - SPH Kernels
  - Module nnps: Nearest Neighbor Particle Search
  - Module parallel_manager
  - Module particle_array
  - Module scheme
  - Module solver
  - Module solver tools
  - Module boundary conditions
  - Module solver_interfaces
  - Miscellaneous Tools for PySPH
- Solver Interfaces
  - CommandManager
  - Controller
  - Blocking and Non-Blocking mode
  - Interfaces
  - Adding Interface to Solver
  - Commandline Interface
  - XML-RPC Interface
  - Multiprocessing Interface
  - Example

### Indices and tables

- Index

- Module Index

- Search Page