The SKIRT project
advanced radiative transfer for astrophysics
The home of the SKIRT project
© Astronomical Observatory, Ghent University.
SKIRT renderings of the simulated Eris galaxy (Guedes et al. 2011) in optical and far-infrared wavelengths.

Welcome!

The SKIRT project offers state-of-the-art software for simulating radiation transfer in astrophysical systems such as galaxies, circumnuclear disks, or star forming regions. At the project's heart is the C++ SKIRT code, which employs the Monte Carlo technique to emulate the relevant physical processes including scattering, absorption and emission by the transfer medium. The code features a wealth of built-in geometries, radiation sources, transfer medium characterizations, spatial grids, and detectors, in addition to various mechanisms for importing models generated by hydrodynamical simulations. The configuration for a particular simulation is defined in a parameter file that can be constructed through a user-friendly command-line Q&A session, or with an optional graphical interface. Another optional component of the SKIRT project is the "Python Toolkit for SKIRT", or PTS. The Python code in this toolkit can help you prepare, postprocess, and visualize SKIRT-related data, or execute SKIRT simulations in automated contexts.

The SKIRT project is fully open source, including all C++ and Python code and the contents of this web site (see GitHub repositories), and it is publicly available for use under liberal licensing conditions (see Legal Information). The SKIRT code runs all relevant benchmarks (see Benchmarks) and is extensively documented on various levels of expertise (see Documentation Overview). Results of applying SKIRT to various astrophysical models have been reported in many refereed publications (see Publications). We invite you to use the SKIRT project's software for your work, and to interact with other users and/or contribute to the project (see Contributing). Let us know what you think (see Contact).

PS: You can navigate this web site by clicking a tab in the bar at the top, or by selecting one of the menu items that appear when hovering over these tabs.

Key features of the SKIRT code

Model:

  • Configure any one-, two- or three-dimensional geometry without limitation.
  • Employ the extensive built-in library to describe the spatial distribution of primary sources and transfer media.
  • Import components from hydrodynamic simulation snapshots using SPH, AMR, or Voronoi paradigms.
  • Combine multiple sources and multiple media components, each with their own spatial distributions and properties.
  • Combine different media types, including dust, electrons and gas (see below for supported physics).
  • Rely on built-in turn-key dust mixtures or configure your own, including optical properties and size distributions.
  • Include instruments for recording "observed" spectra, images, and spectroscopic data cubes.
  • Include probes for recording data internal to the model, such as cuts through the radiation field.

Physics:

  • Sources emitting continuum and/or line spectra, possibly anisotropic and/or polarized.
  • Wavelengths including X-ray, UV to submm, and radio.
  • Multiple anisotropic scattering, absorption and (re-)emission by the transfer medium.
  • Doppler shifts caused by moving sources and/or media (kinematics) and/or by placing the model at a given redshift.
  • Polarization caused by scattering on spherical dust grains or by emission from aligned spheroidal dust grains.
  • Stochastic heating of and emission by small dust grains in non-equilibrium conditions.
  • Compton and Thomson scattering by electrons.
  • Photo-absorption, fluorescence and bound-electron scattering by cold gas media.
  • Absorption and emission at rotational or electronic transitions for selected species, including OH, HCO+, CO, C and C+.
  • Absorption and emission at 21 cm spin-flip transition in neutral atomic hydrogen
  • Resonant scattering by neutral hydrogen near the Lyman-alpha line.
  • Self-consistent calculation of medium state, secondary emission, and radiation field through iteration (e.g., dust destruction, dust self-absorption, level populations of selected gas species).

Numerics:

  • Monte Carlo method for tracing photon packets through the spatial domain.
  • State-of-the-art acceleration techniques: peel-off, forced scattering, continuous absorption, explicit absorption, ...
  • Photon packet wavelengths sampled from the source spectrum without intermediate interpolation.
  • Separate, configurable wavelength grids for storing the radiation field, for discretizing emission spectra, and for recording output spectra or data cubes.
  • Wide range of modern spatial grids, both regular and adaptive, including grids optimized for 1D or 2D models.
  • Optional output of statistics that help estimate error bars on results.

User interface:

  • Interactive console Q&A session to guide the user through the configuration process.
  • Configuration defined in XML-based parameter files, allowing straightforward manual editing.
  • Optional graphical user interface to create and edit configuration files.
  • Support for commonly used units for reading input and writing output quantities

Performance:

  • Efficient in both memory consumption and processor time.
  • Fully parallelized using multiple threads (shared memory) and/or multiple processes (distributed memory).
  • Excellent scaling from laptop to multi-node cluster.

Code design:

  • Written in standard C++14 with very few other dependencies.
  • Modern object-oriented design with well-defined programming interfaces between components.
  • Extensively documented source code.

Key features of the Python Toolkit for SKIRT (PTS)

Working with SKIRT:

  • Interact with SKIRT configuration files.
  • Allow automated SKIRT execution (on the local host computer).
  • Load SKIRT output files with support for units.
  • Convolve SEDs or IFUs with the same broadband filters as those supported by SKIRT.
  • Visualize SKIRT output, including image frames, SEDs, density cuts, temperature cuts, polarization maps, and more.

Supporting the SKIRT development process:

  • Run functional test cases and prepare test reports.
  • Convert various tabulated third-party data formats to SKIRT's unified built-in stored table format.
  • Prepare SKIRT built-in resource packs for publication.
  • Back up (portions of) the development data/source code directory.

User interface:

  • Acessible from the command line, from notebooks (such as Jupyter), and through regular Python function calls.

Code design:

  • Developed for Python 3.7 or later using widely available packages only.
  • Modern coding practices and nicely documented.