miluphcuda is a 3D Smoothed Particle Hydrodynamics (SPH) code, mainly developed for modeling astrophysical collision and impact processes. It supports several rheology models for elasto-plastic solid bodies, as well as granular-like materials.
- miluphcuda is the CUDA port of the original miluph code.
- miluphcuda runs on single Nvidia GPUs with compute capability 5.0 and higher.
For an overview and quick start guide continue reading, for further details see the documentation.
- hydro and solid body modeling
- arbitrary number of interacting materials
- several material strength models for elasto-plastic flow
- fragmentation model for brittle-failure (Grady-Kipp)
- porosity models (P-alpha, epsilon-alpha, Sirono)
- self-gravity (via Barnes-Hut tree)
- various equations of state including tabulated (e.g., ANEOS)
- Install dependencies and compile (see below).
- Run one or more of the scenarios in
examples/
. You find detailed instructions there in the respectiveUSAGE.md
.
For generic simulations, based on your own initial conditions and/or material model choices, see Usage below.
Download the latest version of the code or clone the github repo.
After installation of the required dependencies (see below), compile via the Makefile
:
- run
configure.sh
which performs some tests and system-dependent configuration - run
make
to produce themiluphcuda
executable
It may be necessary to make some changes to the Makefile
even if configure.sh
succeeds.
Compiler errors will let you know if that happens.
Note: Many important options for the material model and numerics are set at compile time in parameter.h
,
i.e., you have to run the Makefile
(but not configure.sh
) again once you make changes there.
CUDA
Install the CUDA Toolkit to compile and run code on the GPU.
libconfig
Used for parsing the material config file.
To ensure best functionality, install the latest version:
- unpack the .tar.gz archive
- sudo ./configure
- sudo make
- sudo make install
HDF5
If you want to use HDF5 for input and/or output files, install libhdf5
and libhdf5-dev
.
The basic usage philosophy for miluphcuda is:
- Basic simulation-wide settings, mainly for the material model and numerics, are specified in
parameter.h
at compile-time.
See comments there for details. - Material-specific parameters, mainly for the material model and equation of state, are set
in a material config file (typically
material.cfg
) and processed at run-time.
Seematerial-config/CREATE-MATERIAL-CONFIG.md
for details on the file structure and available settings.
A collection of parameters for various materials is available inmaterial-config/material_data/
. - All other main options are controlled via cmd-line flags. Check
./miluphcuda -h
once compiled.
For each simulation, you need:
- an input file which specifies the initial conditions (SPH particle distribution and their properties),
check
./miluphcuda --format
for the required format - a material config file, typically
material.cfg
, see above - suitable cmd-line options for miluphcuda, check
./miluphcuda -h
Specifically the examples/
, but also the test_cases/
provide various scenarios and use-cases.
in somewhat arbitrary order:
Christoph M. Schaefer, Sven Riecker, Oliver Wandel, Thomas I. Maindl, Samuel Scherrer, Janka Werner, Christoph Burger, Marius Morlock, Evita Vavilina, Michael Staneker, Maximilian Rutz.
- A versatile smoothed particle hydrodynamics code for graphic cards
- A smooth particle hydrodynamics code to model collisions between solid, self-gravitating objects
The code is also listed in the ACSL.