OpenSPH
OpenSPH copied to clipboard
C++ SPH/N-body library and standalone GUI application, mainly designed for astrophysical simulations
OpenSPH

Screenshots
See also the render gallery.






About
OpenSPH is a library and a GUI application for hydrodynamic and N-body simulations. It uses SPH discretization in space and currently is specialized for simulations of asteroid impacts. The code is being developed on Astronomical Institute of Charles University. It aims to provide a fast, versatile and easily extensible SPH solver utilizing modern CPU features (SSE/AVX instruction sets).
Quick start
Windows
OpenSPH can be easily installed using the MSI installer.
Debian and Ubuntu
The latest version can be downloaded as a Debian buster package. Install it via:
sudo dpkg -i opensph_0.4.1-1.deb
The package contains three executables:
-
opensph
- main program with graphical interface -
opensph-cli
- command-line utility allowing to run simulations set up byopensph
-
opensph-info
- command-line utility for quick inspection of metadata of OpenSPH output files
Arch Linux
OpenSPH package can be build from AUR, using e.g. trizen:
trizen -S opensph
FreeBSD
The code is in the FreeBSD ports collection (big thanks to Yuri) and can be installed using:
pkg install OpenSPH
Getting the source code
The code can be downloaded from GitLab repository. Using git, you can clone the code with
git clone https://gitlab.com/sevecekp/sph.git
cd sph
To get the latest (experimental) version, switch to develomnent branch using
git checkout devel
Compilation
The code uses many c++14 features, so a reasonably new version of a C++ compiler is necessary. The compilation has been tested on gcc 6.3.1 and clang 4.0.0. Prerequisities of the code are:
- git (to get the code from the repository, skip if you already have the code)
- up-to-date version of gcc or clang compiler
- wxWidgets, needed for graphical interface of the code
- cmake (version >= 3.5)
Another optional dependencies of the code are:
-
Intel Threading Building Blocks (version >= 2021.4) - generally improves performance of the code (enabled by
-DWITH_TBB=ON
) -
Eigen - provides additional methods for setting up initial conditions (enabled by
-DWITH_EIGEN=ON
) -
ChaiScript - allows to read and modify particle data from a script (enabled by
-DWITH_CHAISCRIPT=ON
) -
OpenVDB (version >= 8.1) - used for converting particles to volumetric data, usable by renderers (enabled by
-DWITH_VDB=ON
)
The compilation should be as easy as
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
By default, OpenSPH uses a custom thread pool for parallelization. It is possible to use Intel TBB library instead, using:
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TBB=ON ..
Alternatively, the code can be compiled using qmake build system.
Running a basic simulation
Simulations can be easily set up in the graphical application opensph
, using a node-based editor.
To use one of the simulation templates, click 'Project -> New session' and select
one of the presets. Alternatively, see the category 'presets' on the right side of the
editor.
To start a simulation, either select 'Start run' from the 'Simulation' menu, or right-click
any node and select 'Evaluate'.
For simulations of asteroid impacts, select the 'collision' or the 'fragmentation and reaccumulation' preset. The default simulation uses the following:
- Equation of motion consists of a stress tensor divergence (SolidStressForce) and an artifial viscosity term (StandardAV)
- Density evolution is solved using continuity equation (ContinuityEquation)
- Hooke's law as a constitutive equation
- von Mises criterion to account for plastic yield (VonMisesRheology)
- Grady-Kipp model of fragmentation with scalar damage quantity (ScalarDamage)
- Tillotson equation of state (TillotsonEos)
- Adaptive smoothing length (AdaptiveSmoothingLength)
- Basalt material parameters
Particle renderer
OpenSPH contains useful tools for visualization of particles. It allows rendering
individual spherical particles as well as rendering of isosurface, reconstructed
from particles. The color palette can be specified from arbitrary state quantities,
making it easy to visualize particle velocities, internal energy, etc.
The surface of bodies can be also textured with an arbitrary bitmap image.
Besides the orthographic and perspective projection, a fisheye
camera for fulldome animations and a spherical 360° camera can be used.
Examples of library usage
It is certainly possible to use to library without the GUI executable and use the SPH or N-body solvers in other applications. There examples explain how to do that.
Code documentation
See documentation
Changelog
See changelog
Bug reports, ideas, question
Feel free to contact me at [email protected]. Any feedback is highly appreciated.