GadgetIO.jl

Binary IO for the cosmological Tree-SPH code Gadget
Author LudwigBoess
Popularity
9 Stars
Updated Last
5 Months Ago
Started In
June 2020
Documentation Build Status License Citation
Build status codecov.io The MIT License DOI

GadgetIO.jl

This package provides some basic IO functionality to work with the Smoothed-Particle Hydrodynamics code Gadget by Volker Springel.

You can use it to read/write snapshot and subfind output and we also provide some functionality to read the log files.

It is taylored for working with the development version of P-Gadget3, specifically OpenGadget3 developed by Klaus Dolag and contributers. Development is focused on IO for Binary Format 2. A lot of the routines are based on IDL scripts by Klaus Dolag (not public).

If you use GadgetIO.jl in your publications please cite Böss & Valenzuela.

Please see the Documentation for details.

Quickstart

Reading Snapshot Data

GadgetIO.jl is specialized to read Gadget snapshots of Format 2. The structure of a Format 2 snapshot is as follows:

8              # size of the blockname block (Int32)
BLOCKNAME      # Blockname (4*Char)
8+SIZE_BLOCK   # number of bytes to skip if block should not be read
8              # end of blockname block

SIZE_BLOCK     # size of the current block in bytes
{...}          # content of the block ordered by particle type
SIZE_BLOCK     # end of the current block

which repeats for every block.

Gadget defines 6 particle types:

  • 0: Gas particles
  • 1: DM particles
  • 2: Disk/boundary particles
  • 3: Bulge/boundary particles
  • 4: Star particles
  • 5: Black Hole particles

So if you want to read for example the poistions of gas particles you can do this by using:

julia``` filename = "path/to/your/snapshot"

gas_pos = read_block(filename, "POS", parttype=0)


Similar for DM particles:
julia```
filename = "path/to/your/snapshot"

dm_pos = read_block(filename, "POS", parttype=1)

We recommend running Gadget with the compiler flag WRITE_INFO_BLOCK to make IO easier, however you can also read most blocks out of the box due to fall-back InfoLines. If you work on a development version of Gadget that contains output blocks that don't have fall-back InfoLines you can also supply your own to the read_block function.

You can also read subvolumes of simulations, either along the Peano-Hilbert curve or in a brute force way. Or you can read particles by custom filtering and store the memory-mapping to disk. See the Documentation for details.

Used By Packages