Advanced mass definition functions

This module represents a collection of advanced utilities related to halo mass definitions.

Changing mass definitions assuming a concentration

The changeMassDefinition() function needs to be given the concentration of a halo. For convenience, the following function uses a concentration model to estimate the concentration:

from colossus.halo import mass_adv

Mvir = 1E12
z = 1.0
M200m, R200m, c200m = mass_adv.changeMassDefinitionCModel(Mvir, z, 'vir', '200m')

By default, the function uses the default concentration model (see the Concentration module), but the user can choose a different model. This function is not included in the mass_defs module in order to avoid circular dependencies.

Alternative mass definitions

More et al. 2015 suggested two alternative mass definitions, namely the splashback radius and the mass within four scale radii. For the former, please see the Splashback radius module. This module implements \(M_{<4r_s}\), the mass within four scale radii:

Mvir = 1E12
cvir = 8.0
z = 1.0
M_inner = mass_adv.M4rs(Mvir, z, 'vir', c = cvir)

This mass definition quantifies the mass in the inner part of the halo. During the fast accretion regime, this mass definition tracks \(M_{vir}\), but when the halo stops accreting it approaches a constant. The function uses an NFW profile to compute the inner mass.

Module contents

changeMassDefinitionCModel(M, z, mdef_in, …) Change the spherical overdensity mass definition.
M4rs(M, z, mdef[, c]) Convert a spherical overdensity mass to \(M_{<4rs}\).

Module reference

halo.mass_adv.changeMassDefinitionCModel(M, z, mdef_in, mdef_out, profile='nfw', c_model='diemer19')

Change the spherical overdensity mass definition.

This function is a wrapper for the changeMassDefinition() function. Instead of forcing the user to provide concentrations, they are computed from a model indicated by the c_model parameter.

Parameters:
M_i: array_like

The initial halo mass in \(M_{\odot}/h\); can be a number or a numpy array.

z_i: float

The initial redshift.

mdef_i: str

The initial mass definition.

mdef_f: str

The final mass definition (can be the same as mdef_i, or different).

profile: str

The functional form of the profile assumed in the computation; can be nfw or dk14.

c_model: str

The identifier of a concentration model (see halo.concentration for valid inputs).

Returns:
Mnew: array_like

The new halo mass in \(M_{\odot}/h\); has the same dimensions as M.

Rnew: array_like

The new halo radius in physical kpc/h; has the same dimensions as M.

cnew: array_like

The new concentration (now referring to the new mass definition); has the same dimensions as M.

See also

halo.mass_defs.pseudoEvolve
Evolve the spherical overdensity radius for a fixed profile.
halo.mass_defs.changeMassDefinition
Change the spherical overdensity mass definition.
halo.mass_adv.M4rs(M, z, mdef, c=None)

Convert a spherical overdensity mass to \(M_{<4rs}\).

Evaluates the mass within four scale radii, assuming an NFW profile. See More et al. 2015 for the rationale behind this definition.

Parameters:
M: array_like

Spherical overdensity halo mass in \(M_{\odot} / h\); can be a number or a numpy array.

z: float

Redshift

mdef: str

The spherical overdensity mass definition in which M (and optionally c) are given. See Halo Mass Definitions for details.

c: array_like

Concentration. If this parameter is not passed, concentration is automatically computed. Must have the same dimensions as M.

Returns:
M4rs: array_like

The mass within 4 scale radii, \(M_{<4rs}\), in \(M_{\odot} / h\); has the same dimensions as M.