Код: Выделить всё
#Open the file
with h5.File("file.hdf5", "r") as gals:
group = gals["group"]
x = group["xgal"][:] #galaxy positions in Mpc/h
y = group["ygal"][:]
z = group["zgal"][:]
mHI = group["mcold_atom"][:] # Msun/h
#Shift positions so min=0
x -= np.min(x)
y -= np.min(y)
z -= np.min(z)
galaxy_pos = np.column_stack((x, y, z)) #in Mpc/h
#Define grid parameters
box_dim = np.array([542.16, 542.16, 542.16]) # Mpc/h
N_grids = np.array([150, 150, 150]) #number of pixels
V_cell = np.prod(box_dim/N_grids)
#Project HI onto grid
mHI_per_cell = project_particle_to_regular_grid(
particle_pos=galaxy_pos,
box_len=box_dim,
box_ndim=N_grids,
particle_mass=mHI,
average=False
)[0] #in Msun/h
rhoHI_cell = mHI_per_cell/V_cell #HI mass density per cell in h^2 Msun/Mpc^3
rho_crit = 2.775e11 #crtical density of the Universe today in h^2 Msun/Mpc^3
OmegaHI_cell = rhoHI_cell/rho_crit
print("average OmegaHI =", OmegaHI_cell.mean())
Сначала я подозревал, что единицы измерения или координатная сетка, но после проверки:
Код: Выделить всё
print("HI mass in catalogue =", np.sum(mHI))
print("HI mass on grid =", np.sum(mHI_per_cell))
print("Ratio =", np.sum(mHI_per_cell)/np.sum(mHI))
Что мне не хватает? Пожалуйста, помогите.
Подробнее здесь: https://stackoverflow.com/questions/798 ... of-magnitu
Мобильная версия