Source code for yt.frontends.enzo.misc
import numpy as np
from yt.utilities.physical_ratios import (
boltzmann_constant_erg_per_K,
cm_per_mpc,
mass_hydrogen_grams,
newton_cgs,
rho_crit_g_cm3_h2,
)
[docs]
def cosmology_get_units(
hubble_constant, omega_matter, box_size, initial_redshift, current_redshift
):
"""
Return a dict of Enzo cosmological unit conversions.
"""
zp1 = 1.0 + current_redshift
zip1 = 1.0 + initial_redshift
k = {}
# For better agreement with values calculated by Enzo,
# adopt the exact constants that are used there.
time_scaling = np.sqrt(1 / (4 * np.pi * newton_cgs * rho_crit_g_cm3_h2))
vel_scaling = cm_per_mpc / time_scaling
temp_scaling = mass_hydrogen_grams / boltzmann_constant_erg_per_K * vel_scaling**2
k["utim"] = time_scaling / np.sqrt(omega_matter) / hubble_constant / zip1**1.5
k["urho"] = rho_crit_g_cm3_h2 * omega_matter * hubble_constant**2 * zp1**3
k["uxyz"] = cm_per_mpc * box_size / hubble_constant / zp1
k["uaye"] = 1.0 / zip1
k["uvel"] = vel_scaling * box_size * np.sqrt(omega_matter) * np.sqrt(zip1)
k["utem"] = temp_scaling * (box_size**2) * omega_matter * zip1
k["aye"] = zip1 / zp1
return k