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.

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.