Dark Matter Profile Scale Radii

Class providing the scale radius \(r_\mathrm{s}\) of dark matter halo density profiles. The scale radius sets the characteristic transition scale between the inner and outer slopes of the density profile (e.g. at \(r_\mathrm{s}\) the NFW profile transitions from \(\rho \propto r^{-1}\) to \(\rho \propto r^{-3}\)). Implementations may derive the scale radius from a concentration parameter, from energy conservation arguments, or from other empirical relations.

Default implementation: darkMatterProfileScaleRadiusConcentration

Methods

radiusdouble precision

Returns the scale radius \(r_\mathrm{s}\) (in Mpc) of the dark matter halo density profile for the halo in node, the characteristic radius at which the logarithmic slope of the density profile transitions between inner and outer power laws.

  • type(treeNode), intent(inout), target :: node

darkMatterProfileScaleRadiusBinary

A dark matter halo profile scale radii class which switches between two methods based on a filter.

darkMatterProfileScaleRadiusConcentration

Dark matter halo scale radii are computed from the concentration.

(Default implementation)

Parameters

  • [correctForConcentrationDefinition] (boolean; default .false.) — If true, then when computing dark matter profile scale radii using concentrations, any difference between the current definition of halo scales (i.e. typically virial density contrast definitions) and density profiles and those assumed in measuring the concentrations will be taken into account. If false, the concentration is applied blindly.

  • [useMeanConcentration] (boolean; default .false.) — If true, then when computing dark matter profile scale radii using concentrations do not account for any possible scatter in the concentration-mass relation.

darkMatterProfileScaleRadiusConcentrationLimiter

Dark matter halo scale radii from another class are limited to enforce bounds on concentration.

Parameters

  • [concentrationMinimum] (real) — The minimum allowed concentration parameter \(c = r_\mathrm{virial}/r_\mathrm{scale}\) for dark matter halos; scale radii that would imply concentrations below this floor are adjusted upward to enforce the constraint.

  • [concentrationMaximum] (real) — The maximum allowed concentration parameter \(c = r_\mathrm{virial}/r_\mathrm{scale}\) for dark matter halos; scale radii that would imply concentrations above this ceiling are adjusted downward to enforce the constraint.

darkMatterProfileScaleRadiusJohnson2021

A dark matter profile scale radius class that computes scale radii based on the energy conservation approach of Johnson et al. (2021), with some modifications and improvements.

Specifically, for “well-resolved” halos (see below for discussion of this point), the concentration is found by computing the total energy of the halo as the sum over the energies (internal and orbital) of its progenitor halos. The halo is assumed to have virialized at this energy, and the scale radius is then solved for such that the energy of the assumed density profile (e.g. Galacticusnfw) is equal to the computed energy of the halo.

In detail, the energy, \(E_\mathrm{int}\), of a node is assumed to be given by:

\[E_\mathrm{int} = E_{\mathrm{int}, 0} + \sum_{i=1}^N \left( E_{\mathrm{int}, i} + E_{\mathrm{orb}, i,0} \right) (1 + \mu)^{-\alpha} (1+b \nu^\beta) w_i 10^{\sigma \mathcal{N}(0,1)},\]

where \(E_{\mathrm{int}, 0}\) is the internal energy of the primary progenitor halo, \(E_{\mathrm{int}, i}\) is the internal energy of the \(i^\mathrm{th}\) non-primary progenitor halo, \(E_{\mathrm{orb}, i,0}\) is the orbital energy of the \(i^\mathrm{th}\) non-primary progenitor halo about the primary progenitor halo, \(\mu = M_i/M_0\) is the mass ratio of the \(i^\mathrm{th}\) non-primary progenitor and the primary progenitor ratio, \(\nu\) is the peak height parameter for the primary progenitor halo, \(w_i\) is the subsampling weight of the \(i^\mathrm{th}\) non-primary progenitor, \(\mathcal{N}(0,1)\) is a standard normal deviate, \(\alpha=\)[massExponent], \(\beta=\)[peakHeightExponent], \(b=\)[energyBoost], and \(\sigma=\)[scatterExcess].

To account for the contribution to the energy from unresolved accretion, we proceed as follows. First, the unresolved mass is determined by subtracting the mass of all progenitors from the halo mass:

\[M_{\mathrm unres} = M - \sum_{i=0}^N M_i.\]

This mass will be accreted in halos spanning a range of masses below the unresolved mass scale, \(M_\mathrm{unres}\). We assume the mass function of these unresolved halos follows a power-law, \(n(M) \propto M^\delta\), with \(\delta = -1.8\). We further assume that the mean orbit energy of an unresolved halo is simply proportional to \(M\) (i.e. the distribution of orbital parameters is independent of mass), and that the internal energy of an unresolved halo scales as \(E_\mathrm{int} \propto M^{5/3+\epsilon}\) where the \(5/3\) exponent is the expected scaling for halos assuming a self-similar structure, and \(\epsilon = -0.02\) accounts for the non-self-similarity (e.g. that concentration is a function of mass) and was estimated for typical CDM halos.

The mean energy (orbital or internal) per unit mass of unresolved halos is then found by averaging these scalings over the mass function. Dividing these by the energy of an unresolved halo of mass \(M_\mathrm{unres}\) then gives a correction factor that can be applied to the energy computed for halos of \(M_\mathrm{res}\) to account for the spectrum of unresolved halo masses. That is, for an energy that scales as \(x^p\) where \(x = M/M_0\), the correction factor is:

\[c_p = \frac{1}{x_\mathrm{unres}^{p-1} (1+x_\mathrm{unres})^{-\alpha}} \frac{\int_0^{x_\mathrm{unres}} n(x) x^p (1+x)^{-\alpha} \mathrm{d}x}{\int_0^{x_\mathrm{unres}} n(x) x \mathrm{d}x}.\]

This evaluates to:

\[c_p = \frac{2+\delta}{1+\delta+p} (1+x_\mathrm{unres})^\alpha\, _2\mathrm{F}_1({1+\delta+p,\alpha},{2+\delta+p},-x_\mathrm{unres}).\]

We further compute correction factors to account for the fact that this unresolved mass is accreted over some interval of time, during which mean halo properties (e.g. virial density) will evolve. For internal energies we have \(E_\mathrm{int} \propto M^2/r \propto M^{5/3}/\rho \propto M^{5/3}/a(t)\) where \(a(t)\) is the expansion factor. If the current halo exists at time \(t\), and the primary progenitor at time \(t_0\), we therefore compute a correction factor to the midpoint of this interval,

\[f_\mathrm{int} = \frac{1}{2} \left( 1 + \frac{a(t_0)}{a(t)} \right),\]

where the second term in the parentheses is the ratio of the internal energy of a halo of fixed mass at \(t\) and \(t_0\). For orbital energy we expect a scaling \(E_\mathrm{orb} \propto M M_\mathrm{host}/r_\mathrm{host} \propto M M_\mathrm{host}^{2/3}/\rho \propto M M_\mathrm{host}^{2/3}/a(t)\) where \(M_\mathrm{host}\) and \(r_\mathrm{host}\) are the virial mass and radius of the host (current) halo, respectively. Computing a correction factor to the midpoint of the time interval we find,

\[f_\mathrm{orb} = \frac{1}{2} \left( 1 + \frac{a(t_0)}{a(t)} \left[\frac{M}{M_0}\right]^{2/3} \right).\]

We next estimate the mean and root-variance, \(\bar{E}_\mathrm{unres}\) and \(\sigma_\mathrm{unres}\), respectively, of the energy of a halo of mass \(M_\mathrm{unres}\) via a Monte Carlo approach. We generate \(N_\mathrm{MC}=\)[countSampleEnergyUnresolved] such halos, each with scale radii set using the fall-back darkMatterHaloScaleClass object with an added scatter of \(\sigma^\prime=\)[scatter] dex, and a randomly selected orbit. For each such halo, the energy is computed as

\[E_\mathrm{unres} = u (E_\mathrm{orb} c_\mathrm{orb} f_\mathrm{orb} + E_\mathrm{int} c_\mathrm{int} f_\mathrm{int}) (1+b \nu^\beta),\]

where \(u =\)[unresolvedEnergy].

To estimate the deviation from the mean unresolved energy we again consider the contributions from a spectrum of unresolved halo masses. For simplicity we here ignore the internal energies (which are typically small relative to the orbital energy assuming that the unresolved halo masses are small compared to that of the primary progenitor. The mean energy of unresolved halos is then

\[\epsilon = \bar{E}_\mathrm{unres} \int_0^1 x^{1+a} \mathrm{d}x = \frac{\bar{E}_\mathrm{unres}}{2+a},\]

while the variance in this energy is

\[\sigma^2_\epsilon = \sigma^2_\mathrm{unres} \int_0^1 x^{2+a} \mathrm{d}x = \frac{\sigma^2_\mathrm{unres}}{3+a}.\]

The fractional variance is then

\[\frac{\sigma^2_\epsilon}{\epsilon^2} =\frac{2+a}{3+a} \left(\frac{\sigma_\mathrm{unres}}{\bar{E}_\mathrm{unres}}\right)^2.\]

We therefore add to the energy of the halo an unresolved contribution of

\[\bar{E}_\mathrm{unres} \exp\left( \left[ \frac{2+a}{3+a} \left(\frac{\sigma_\mathrm{unres}}{\bar{E}_\mathrm{unres}}\right)^2 + (\sigma_e \log_\mathrm{e}10)^2 \right]^{1/2} \mathcal{N}(0,1) \right).\]

where \(\sigma_\mathrm{e}=\)[scatterExcess] accounts for scatter missed by this model.

The scale radius which corresponds to this energy is then solved for.

For halos with mass less than \(f_\mathrm{res} M_\mathrm{res}\), where \(f_\mathrm{res}=\)[factorMassResolution] and \(M_\mathrm{res}\) is the mass resolution of the merger tree, and for any halo which has no progenitors (a leaf node), the scale radius is instead computed using an alternative methodfootnoteFor leaf nodes, there are no progenitors for which to apply the above energy calculation, and for halos sufficiently close to the mass resolution the energy calculation may not be reliable due to the poorly-resolved formation history of the node.. In these cases, the entire extent of the branch for which this criterion applies is first determined. Each halo in this sub-branch is first assigned a scale radius from a fall-back darkMatterHaloScaleClass object which should be configured to return a scatter-free scale radius for halos of given mass and redshiftfootnoteAs scatter will be added directly by the present class. Then, a correlated set of random, log-normal deviates are applied to the scale radii of these nodes. That is, the scale radius of the \(i^\mathrm{th}\) node in such a sub-branch will be \(r_\mathrm{s} = \bar{r}_{\mathrm{s}, i} 10^{x_i}\) where \(x_i\) is a normally-distributed random variate with mean zero and dispersion \(\sigma^\prime=\)[scatter]. The deviates \(x_i\) are assumed to be correlated with correlation matrix:

\[C_{i,j} = \exp\left( -\gamma \left| \log_{10} \frac{M_i}{M_j} \right|^\mu \right),\]

wherefootnoteThese values were found by fitting to results from this class. \(\gamma =\)[correlationRateDecay], \(\mu =\)[correlationExponent] and \(M_i\) is the mass of the \(i^\mathrm{th}\) halo in the sub-branch. This results in a scale radius along the sub-branch with the correct mean and scatter, but correlated over mass increment scales in a way that matches the predictions of this algorithm.

Parameters

  • [energyBoost] (real; default 0.797d0) — A multiplicative boost factor applied to the orbital energy in the (Johnson et al., 2021) scale radius model, calibrated to match the energy budget of merging halos in N-body simulations.

  • [massExponent] (real; default 2.168d0) — The exponent of mass ratio appearing in the orbital energy term.

  • [peakHeightExponent] (real; default 0.0d0) — The exponent of the peak height \(\nu\) (a dimensionless measure of halo rarity relative to the mass function) in the orbital energy term of the (Johnson et al., 2021) scale radius model; controls the dependence of scale radius on halo formation epoch.

  • [unresolvedEnergy] (real; default 0.550d0) — Factor multiplying the estimate of the internal energy of unresolved accretion.

  • [factorMassResolution] (real; default 1.0d2) — The Johnson et al. (2021) model is applied only for halos with mass greater than \(f M_\mathrm{res}\) where \(f=\)[factorMassResolution]. Below this mass the fall-back method is used, with correlated scatter along the branch.

  • [scatter] (real; default 0.16d0) — The scatter in scale radius (in dex) to be applied to halos that are too low mass for the Johnson et al. (2021) model to be applied.

  • [scatterExcess] (real; default 0.116d0) — The additional scatter radius (in dex) to be applied to the energies of merging halos to account for the fact that the Johnson et al. (2021) underpredicts the scatter in concentrations.

  • [correlationRateDecay] (real; default 3.8361d0) — The decay rate for the exponential correlation model for scale radii.

  • [correlationExponent] (real; default 1.6198d0) — The exponent for the exponential correlation model for scale radii.

  • [countSampleEnergyUnresolved] (integer; default 100) — The number of samples to use in Monte Carlo estimates of the mean and scatter in the energy of unresolved halos.

  • [mainBranchOnly] (boolean; default .false.) — If true, the Johnson et al. (2021) algorithm is applied to the main branch only, with other branches using the fall-back method.

  • [applySubsamplingWeights] (boolean; default .true.) — If true, account for halo subsampling weights when computing population-averaged quantities in the (Johnson et al., 2021) model, necessary when the merger tree was constructed using subsampled halo catalogs.

  • [acceptUnboundOrbits] (boolean; default .false.) — If true, allow unbound orbits when sampling orbits for unresolved halos.

  • [includeUnresolvedVariance] (boolean; default .false.) — If true, account for the variance in the energy of unresolved halos.

darkMatterProfileScaleRadiusLudlow2014

Dark matter halo scale radii are computed using the algorithm of Ludlow et al. (2014).

Parameters

  • [C] (real; default 400.0d0) — The parameter \(C\) appearing in the halo concentration algorithm of Ludlow et al. (2016). (inherited from darkMatterProfileScaleRadiusLudlow2016)

  • [f] (real; default 0.02d0) — The parameter \(f\) appearing in the halo concentration algorithm of Ludlow et al. (2016). (inherited from darkMatterProfileScaleRadiusLudlow2016)

  • [timeFormationSeekDelta] (real; default 0.0d0) — The parameter \(\Delta \log t\) by which the logarithm of the trial formation time is incremented when stepping through the formation history of a node to find the formation time. If set to zero (or a negative value) the cumulative mass histories of nodes are assumed to be monotonic functions of time, and the formation time is instead found by a root finding algorithm, (inherited from darkMatterProfileScaleRadiusLudlow2016)

darkMatterProfileScaleRadiusLudlow2016

Dark matter halo scale radii are computed using the algorithm of Ludlow et al. (2016). While Ludlow et al. (2016) used \(\Delta = 200 \rho_\mathrm{crit}\) to define halos, their model actually predicts the scale radius, \(r_{-2}\), rather than the concentration. Therefore, here we report that the Ludlow et al. (2016) concentrations are defined using the model’s own virial density contrast definition — this ensures that the predicted scale radii are applied directly to model halos.

Methods

  • tabulate — Tabulate the virial density contrast as a function of mass and time.

  • restoreTable — Restore a tabulated solution from file.

  • storeTable — Store a tabulated solution to file.

Parameters

  • [C] (real; default 400.0d0) — The parameter \(C\) appearing in the halo concentration algorithm of Ludlow et al. (2016).

  • [f] (real; default 0.02d0) — The parameter \(f\) appearing in the halo concentration algorithm of Ludlow et al. (2016).

  • [timeFormationSeekDelta] (real; default 0.0d0) — The parameter \(\Delta \log t\) by which the logarithm of the trial formation time is incremented when stepping through the formation history of a node to find the formation time. If set to zero (or a negative value) the cumulative mass histories of nodes are assumed to be monotonic functions of time, and the formation time is instead found by a root finding algorithm,

darkMatterProfileScaleRadiusLudlow2016Analytic

Dark matter halo scale radii are computed using the algorithm of Ludlow et al. (2016) with an analytic model for formation time.

Parameters

  • [C] (real; default 650.0d0) — The parameter \(C\) appearing in the halo concentration algorithm of Ludlow et al. (2016).

  • [f] (real; default 0.02d0) — The parameter \(f\) appearing in the halo concentration algorithm of Ludlow et al. (2016).

  • [timeFormationSeekDelta] (real; default 0.0d0) — The parameter \(\Delta \log t\) by which the logarithm of the trial formation time is incremented when stepping through the formation history of a node to find the formation time. If set to zero (or a negative value) the cumulative mass histories of nodes are assumed to be monotonic functions of time, and the formation time is instead found by a root finding algorithm, (inherited from darkMatterProfileScaleRadiusLudlow2016)

darkMatterProfileScaleRadiusPowerLaw

A dark matter profile scale radius class that uses simple power-law scalings. Specifically, the scale radius is given by:

\[r_\mathrm{s} = r(\nu) \left(\frac{M}{M_0}\right)^{\alpha(\nu)} (1+z)^{-\beta(\nu)}\]

where \(r(\nu)\), \(\alpha(\nu)\), and \(\beta(\nu)\) are sigmoid functions of the peak height, \(\nu\), of the form:

\[y(x) = y_0+(y_1-y_0)/(1+\exp[-(x-x_\nu)/\Delta x]),\]

where \(r_0=\)[radiusLow], \(r_1=\)[radiusHigh], \(r_\nu=\)[radiusTransition], \(\Delta r=\)[radiusWidth], \(\alpha_0=\)[massLow], \(\alpha_1=\)[massHigh], \(\alpha_\nu=\)[massTransition], \(\Delta \alpha=\)[massWidth], \(\beta_0=\)[expansionFactorLow], \(\beta_1=\)[expansionFactorHigh], \(\beta_\nu=\)[expansionFactorTransition], and \(\Delta \beta=\)[expansionFactorWidth] , plus a random log-normal scatter of [scatter] dex.

Parameters

  • [radiusLow] (real; default +0.0154d0) — The low-mass limit of the characteristic scale radius \(r_0\) (in Mpc) in the power-law scale radius model, giving the scale radius normalization for low-mass halos as a function of peak height and expansion factor.

  • [radiusHigh] (real; default +0.0962d0) — The high-mass limit of the characteristic scale radius \(r_1\) (in Mpc) in the power-law scale radius model, giving the scale radius normalization for high-mass halos.

  • [radiusTransition] (real; default +1.2137d0) — The peak height \(\nu\) at which the characteristic scale radius transitions between its low-mass and high-mass limiting values in the power-law scale radius model.

  • [radiusWidth] (real; default +0.5482d0) — The parameter \(\Delta r\) in the power-law scale radius model.

  • [massLow] (real; default +0.3895d0) — The parameter \(\alpha_0\) in the power-law scale radius model.

  • [massHigh] (real; default +0.2984d0) — The parameter \(\alpha_1\) in the power-law scale radius model.

  • [massTransition] (real; default -0.2583d0) — The parameter \(\alpha_\nu\) in the power-law scale radius model.

  • [massWidth] (real; default +16.6050d0) — The parameter \(\Delta \alpha\) in the power-law scale radius model.

  • [expansionFactorLow] (real; default -0.6977d0) — The parameter \(\beta_0\) in the power-law scale radius model.

  • [expansionFactorHigh] (real; default +0.7972d0) — The parameter \(\beta_1\) in the power-law scale radius model.

  • [expansionFactorTransition] (real; default +0.5395d0) — The parameter \(\beta_\nu\) in the power-law scale radius model.

  • [expansionFactorWidth] (real; default +0.4282d0) — The parameter \(\Delta \beta\) in the power-law scale radius model.

  • [scatter] (real; default +0.1513d0) — The scatter (in dex) in the scale radius at fixed halo mass and redshift in the power-law scale radius model, representing the intrinsic halo-to-halo variation in concentration.

darkMatterProfileScaleRadiusRandomWalk

A dark matter profile scale radius class that assigns dark matter profile scale radii using a Weiner process random walk around the mean expectation, and then interpolates linearly between child and parent nodes. For primary progenitor nodes \(\dot{r}_\mathrm{s} = (r_{\mathrm{s},i+1}-r_{\mathrm{s},i})/(t_{i+1}-t_i)\), where \(r_{\mathrm{s},i}\) is the scale radius of the dark matter profile of the node in the initialized tree, \(r_{\mathrm{s},i+1}\) is the spin of its parent node, and \(t_i\) and \(t_{i+1}\) are the corresponding times. For non-primary progenitors the rate of change is set to zero, i.e. \(\dot{r}_\mathrm{s}=0\).

The energy of each halo is set to the energy expected from the mean scale radius for halos of the mass and epoch, plus a perturbation given by:

\[\Delta E_\mathrm{i}(t_2) = \Delta E_\mathrm{i}(t_1) + \left[ \sigma^2 \left\{ E_\mathrm{v}^2(t_2) - E_\mathrm{v}^2(t_1) \right\} \right]^{1/2} N(0,1).\]

where \(J_\mathrm{v}(t) = M_\mathrm{v}(t) V_\mathrm{v}(t) R_\mathrm{v}(t)\) is the characteristic virial angular momentum, \(M_\mathrm{v}(t)\), \(V_\mathrm{v}(t)\), and \(R_\mathrm{v}(t)\) are the virial mass, velocity, and radius respectively, \(\sigma^2\) represents the variance in angular momentum per unit increase in \(J_\mathrm{v}^2\), and \(N(0,1)\) is a random variable distributed as a standard normal.

Parameters

  • [energyVarianceSpecific] (real; default 0.006d0) — The variance in the difference in the energy of a halo per unit energy growth.

darkMatterProfileScaleRadiusZero

Dark matter halo scale radii class in which are assumed to be zero.