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 halossnap_ZZZ.(i+352).hdf5— particles outside FoF halos ("outer fuzz")
- Group catalogs (352 files):
fof_subhalo_tab_ZZZ.i.hdf5contains the catalog for zoom haloi
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
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:
How file_ids works
For zoom halo index i (where i is the value of GroupOrigHaloID from the parent box):
- Chunk
icontains particles inside FoF halos, chunki+352contains particles outside FoF halos ("outer fuzz") - For most use cases,
file_ids: [i]is sufficient — only includei+352if you need particles beyond the FoF boundary - The catalog reader receives the same
file_idsbut silently skips IDs that don't exist (the catalog only has 352 files), so it correctly loads only filei
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
- Point Cloud (Voronoi) data setup guide
- Datasets Reference for
zoom_target/zoom_boxdocumentation - Configuration Reference for full parameter documentation