Skip to content

TNG-Cluster

TNG-Cluster is a set of 352 cluster zoom simulations at TNG300-1 resolution, reconstructed into a single volume. For full details on the data format, see the TNG-Cluster wiki (requires TNG account).

File Structure

Unlike regular TNG boxes, TNG-Cluster stores each zoom halo's particles in dedicated chunk files:

  • Snapshots (704 files per snapshot): For zoom halo index i:
    • snap_ZZZ.i.hdf5 — particles inside FoF halos
    • snap_ZZZ.(i+352).hdf5 — particles outside FoF halos ("outer fuzz")
  • Group catalogs (352 files): fof_subhalo_tab_ZZZ.i.hdf5 contains the catalog for zoom halo i

Do not load all files

Loading all 704 chunk files would mix overlapping low-resolution background particles from all 352 zooms. Always use file_ids to select a specific zoom halo.

FeXXV Emission (Cloudy MCRT)

A complete configuration for FeXXV (6.7 keV, 1.85 Å) line emission from a TNG-Cluster halo, using Cloudy tables to compute emissivities from the gas thermodynamic state. This is a working example for zoom halo i=0.

pbc: false is required for cutouts — the simulation domain is not periodic. ghost_thickness controls the Voronoi boundary layer; 0.1 (in box units) is sufficient for typical halo cutouts. The mesh_cache_mode: "auto" setting caches the Voronoi mesh to disk, which speeds up repeated runs on the same data.

The listsource emission model creates one photon source per cell with emissivity above lum_threshold. The nphotons_per_unit_lum parameter controls how photon packets are distributed across sources proportionally to luminosity, with per-source limits set by nphotons_per_source_min and nphotons_per_source_max. All luminosity values are in THOR's internal unit of 10^42 erg/s.

Full configuration
tng_cluster_fexv.yaml
dataset_type: 'pointcloud_voronoi'
driver_type: 'mcrtsimulation'
device: "cpu-openmp"

pointcloud_voronoi:
  hilbert_bits: 8
  mesh_cache_mode: "auto"
  construction:
    ghost_thickness: 0.1
  loader: "gadget"
  cloudy:
    enabled: true
    emission_table_path: "/path/to/grid_emissivities_lg.hdf5"
    ion_table_path: "/path/to/grid_ions_lg_c23.hdf5"
    redshift_interp: true
    interpolation_order: 1
  gadget:
    path: "/path/to/TNG-Cluster/output/snapdir_099"
    catalog_path: "/path/to/TNG-Cluster/output/groups_099"
    file_ids: [0, 352]       # zoom halo i=0: chunks 0 and 352
    # Positions, Temperature, and Velocities are added automatically.
    # Density is resolved as a dependency of the Cloudy emission field.
    fields:
      - "cloudyemission_Fe25 1.85040A_times_volume"
    zoom_target:
      hid: 0                  # most massive halo in this zoom's catalog
      rvir: 2                 # cutout radius as multiple of virial radius

mcrtsimulation:
  pbc: false                  # cutout, not periodic
  hubble_flow: 70.0          # km/s/Mpc
  redshift: 0.0
  max_step: 0.01
  max_dlambda: 10.0
  outputpath: ./output
  overwrite: true
  linename: FeXXV
  xcrit: 0
  nphotons_max: 500000
  nphotons_step_max: 500000
  use_peeling: true
  populate:
    Emissivity: "cloudyemission_Fe25 1.85040A_times_volume"
  peeling:
    dist_max: 0.5
    tau_max: 100.0
  emissionmodel:
    mode: "listsource"
    listsource:
      lum_threshold: 1e-15
      nphotons_per_source_min: 1
      nphotons_per_source_max: 10
      nphotons_per_unit_lum: 10
      loader: emissivity

File Selection

To process zoom halo i, set file_ids to load only that halo's two snapshot chunks:

gadget:
  file_ids: [22, 374]       # zoom halo i=22: chunks i and i+352

How file_ids works

For zoom halo index i (where i is the value of GroupOrigHaloID from the parent box):

  • Chunk i contains particles inside FoF halos, chunk i+352 contains particles outside FoF halos ("outer fuzz")
  • For most use cases, file_ids: [i] is sufficient — only include i+352 if you need particles beyond the FoF boundary
  • The catalog reader receives the same file_ids but silently skips IDs that don't exist (the catalog only has 352 files), so it correctly loads only file i

How zoom_target works

With file_ids filtering to a single zoom, the catalog contains only halos from that zoom region. hid: 0 selects the most massive FoF group in the loaded catalog, which is the primary zoom target.

See Also