Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
@Profile.profile_property
def mass(prof) -> ndarray:
"""Mass profile."""
M = prof.snap['mass']
return prof.particles_to_binned_quantity('sum', M)
@Profile.profile_property
def aspect_ratio(prof) -> ndarray:
"""Aspect ratio profile."""
H = prof['scale_height']
R = prof['radius']
return H / R
@Profile.profile_property
def gas_surface_density(prof) -> ndarray:
"""Gas surface density profile.
Units are [mass / length ** ndim], which depends on ndim of profile.
"""
return prof['gas_mass'] / prof['size']
@Profile.profile_property
def surface_density(prof) -> ndarray:
"""Surface density profile.
Units are [mass / length ** ndim], which depends on ndim of profile.
"""
return prof['mass'] / prof['size']
@Profile.profile_property
def angular_momentum_theta(prof) -> ndarray:
"""Angle between specific angular momentum and xy-plane."""
angular_momentum_z = prof['angular_momentum_z']
angular_momentum_magnitude = prof['angular_momentum_magnitude']
return np.arccos(angular_momentum_z / angular_momentum_magnitude)
@Profile.profile_property
def angular_momentum_phi(prof) -> ndarray:
"""Angle between specific angular momentum and x-axis in xy-plane."""
angular_momentum_x = prof['angular_momentum_x']
angular_momentum_y = prof['angular_momentum_y']
return np.arctan2(angular_momentum_y, angular_momentum_x)
@Profile.profile_property
def gas_mass(prof) -> ndarray:
"""Gas mass profile."""
M = prof.snap['gas_mass']
return prof.particles_to_binned_quantity('sum', M)
@Profile.profile_property
def scale_height(prof) -> ndarray:
"""Scale height profile."""
z = prof.snap['z']
return prof.particles_to_binned_quantity('std', z)
@Profile.profile_property
def toomre_Q(prof) -> ndarray:
"""Toomre Q parameter."""
if not prof.snap._physical_units:
G = gravitational_constant_in_code_units(prof.snap)
else:
G = (1 * plonk_units.newtonian_constant_of_gravitation).to_base_units()
return (
prof['sound_speed']
* prof['keplerian_frequency']
/ (np.pi * G * prof['density'])
)