Source code for yt.frontends.adaptahop.fields

"""
AdaptaHOP-specific fields




"""

from yt._typing import KnownFieldsT
from yt.fields.field_info_container import FieldInfoContainer

m_units = "1e11 * Msun"
r_units = "Mpc"
v_units = "km / s"
l_units = "1e11 * Msun * Mpc * km / s"
e_units = "1e11 * Msun * km**2 / s**2"
dens_units = "1e11 * Msun / Mpc**3"


[docs] class AdaptaHOPFieldInfo(FieldInfoContainer): known_particle_fields: KnownFieldsT = ( ("particle_identifier", ("", [], "Halo Identity")), ("raw_position_x", (r_units, [], None)), ("raw_position_y", (r_units, [], None)), ("raw_position_z", (r_units, [], None)), ("r", (r_units, [], "Halo radius")), ("a", (r_units, [], "Halo semi-major axis")), ("b", (r_units, [], "Halo semi-medium axis")), ("c", (r_units, [], "Halo semi-minor axis")), ("particle_velocity_x", (v_units, [], "Halo velocity x")), ("particle_velocity_y", (v_units, [], "Halo velocity y")), ("particle_velocity_z", (v_units, [], "Halo velocity z")), ("particle_angular_momentum_x", (l_units, [], "Halo Angular Momentum x")), ("particle_angular_momentum_y", (l_units, [], "Halo Angular Momentum y")), ("particle_angular_momentum_z", (l_units, [], "Halo Angular Momentum z")), ("particle_mass", (m_units, [], "Halo mass")), ("ek", (e_units, [], "Halo Kinetic Energy")), ("ep", (e_units, [], "Halo Gravitational Energy")), ("ek", (e_units, [], "Halo Total Energy")), ("spin", ("", [], "Halo Spin Parameter")), # Virial parameters ("virial_radius", (r_units, [], "Halo Virial Radius")), ("virial_mass", (m_units, [], "Halo Virial Mass")), ("virial_temperature", ("K", [], "Halo Virial Temperature")), ("virial_velocity", (v_units, [], "Halo Virial Velocity")), # NFW parameters ("rho0", (dens_units, [], "Halo NFW Density")), ("R_c", (r_units, [], "Halo NFW Scale Radius")), ("velocity_dispersion", ("km/s", [], "Velocity Dispersion")), ("radius_200", (r_units, [], r"$R_\mathrm{200}$")), ("radius_50", (r_units, [], r"$R_\mathrm{50}$")), ("mass_200", (m_units, [], r"$M_\mathrm{200}$")), ("mass_50", (m_units, [], r"$M_\mathrm{50}$")), # Contamination ("contaminated", ("", [], "Contaminated")), ("m_contam", (m_units, [], "Contaminated Mass")), )
[docs] def setup_particle_fields(self, ptype): super().setup_particle_fields(ptype) # Add particle position def generate_pos_field(d): shift = self.ds.domain_width[0] / 2 def closure(field, data): return data["halos", f"raw_position_{d}"] + shift return closure for k in "xyz": fun = generate_pos_field(k) self.add_field( ("halos", f"particle_position_{k}"), sampling_type="particle", function=fun, units="Mpc", )