CAMELS CGM Profiles

The folder Profiles contains the CGM profiles. The data is organized following the general hierarchical structure described in Suite folders.

For each snapshot of each simulation, we provide three-dimensional spherically-averaged profiles of gas density, thermal pressure, gas mass-weighted temperature, and gas mass-weighted metallicity for the simulations of the 1P, LH, and CV sets of both the IllustrisTNG and SIMBA suites.

Specifically, we use illstack_CAMELS, a CAMELS-specific version of the original, more general code illstack to generate the three-dimensional profiles, extending radially from 0.01-10 Mpc in 25 log10 bins. The profiles are stored in hdf5 format which can be read with the python script provided in the repository.

The profiles are located as

Profiles/suite/sim/suite_sim_0##.hdf5

where suite is either IllustrisTNG or SIMBA, sim is the simulation of interest, e.g. 1P_4_n5, LH_42, CV_130, and 0## is the snapshot number, ranging from 000 to 033.

Below is an example python script for extracting the profile data from the hdf5 file:

import matplotlib.pyplot as plt
import numpy             as np
import h5py

#-------------------------input section---------------
suite='SIMBA'
sim='CV_0'
snap='024'
#-----------------------------------------------------
data_dir='/mnt/ceph/users/camels/PUBLIC_RELEASE/Sims'
prof_dir='/mnt/home/elau/ceph/illstack_CAMELS/Profiles/'

def extract(simulation,snap):

    '''
    Return values of the CGM profiles from the CAMELS simulation

    Inputs:
      simulation: string, name of the simulation, e.g., 1P_5_2, LH_123, CV_12
      snap: string, number of the snapshot, from '000' to '033', '033' being the last snapshot corresponding to z=0

    Outputs:
      z: float, redshift
      r: np array, radial bin on kpc
      val_dens: np array, density profile in g/cm^3
      val_pres: np array, volume-weighted thermal pressure profile in erg/cm^3
      val_temp_mw: np array, mass-weighted temperature in K
      val_metals_mw: np array, mass-weighted metallcity in Zsun
      mh: np array, halo mass (M200c) in Msun
      rh: np array, halo radius (R200c) in kpc

    '''

    h=0.6711
    omegab=0.049
    omegam,sigma8=np.loadtxt(data_dir+'/'+suite+'/'+simulation+'/CosmoAstro_params.txt',usecols=(1,2),unpack=True)
    omegalam=1.0-omegam

    kb = 1.38e-16 # erg/K
    erg_to_keV = 6.242e+8
    K_to_keV = kb * erg_to_keV
    m_e = 9.11e-28 # electron mass in g
    m_p = 1.6726e-24 # in g
    XH = 0.76 #primordial hydrogen fraction
    mu = 0.58824; # X=0.76 assumed
    mu_e = mue = 2.0/(1.0+XH); # X=0.76 assumed
    Msun = 1.989e33
    kpc = 3.0856e21

    data_file= data_dir+'/'+suite+'/'+simulation+'/snap_'+snap+'.hdf5'
    profile_file = prof_dir+'/'+suite+'/'+simulation+'/'+suite+'_'+simulation+'_'+snap+'.hdf5'
    b=h5py.File(data_file,'r')
    z=b['/Header'].attrs[u'Redshift']

    comoving_factor = (1.0+z)

    density_conversion_factor = Msun*kpc**(-3) * 1e10 * h**2 * comoving_factor**3
    #from 1e10Msol/h*(km/s)**2 ckpc^{-3} to keV cm^{-3}
    pressure_conversion_factor = density_conversion_factor * 1e10 * erg_to_keV
    temperature_conversion_factor = (1e5)**2 * kb * erg_to_keV

    stacks=h5py.File(profile_file,'r')
    val            = stacks['Profiles']
    val_dens       = np.array(val[0,:,:]) * density_conversion_factor #density in g cm^3
    val_pres       = np.array(val[1,:,:]) * pressure_conversion_factor  #thermal pressure in keV cm^-3
    val_metals_mw  = np.array(val[2,:,:])/Zsun #mass-weighted metallicity in solar units
    val_temp_mw    = np.array(val[3,:,:]) * temperature_conversion_factor #mass-weighted temperature in keV
    bins           = np.array(stacks['nbins']) #number of radial bins
    r              = np.array(stacks['r']) / h / comoving_factor #radial bins in comoving kpc
    nprofs         = np.array(stacks['nprofs']) #number of halos
    m200c          = np.array(stacks['Group_M_Crit200'])*1e10 / h #M200c in Msol
    r200c          = np.array(stacks['Group_R_Crit200']) / h / comoving_factor #R200c in kpc

    return z, r, val_dens, val_pres, val_temp_mw, val_metals_mw, m200c, r200c