Dark Matter Only Halo Profiles¶
Class providing dark matter-only halo density profiles, i.e. the profile a halo would have in the absence of baryonic effects. This returns a massDistributionClass object for the specified node. Common implementations include NFW and Einasto profiles parameterized by a scale radius or concentration. This class is used in calculations of dynamical friction, tidal stripping, and other processes where the unmodified dark matter profile is needed.
Default implementation: darkMatterProfileDMONFW
Methods¶
get→class(massDistributionClass)Return the mass distribution of the dark matter-only profile.
type(treeNode) node[inout]type(enumerationWeightByType) weightBy(optional) [in]integer weightIndex(optional) [in]
darkMatterProfileDMOAccelerator¶
An accelerator wrapper for dark-matter-only profile classes that caches recently computed profile quantities (enclosed mass, density, potential, etc.) and returns interpolated estimates when the requested radius is close to a cached value, significantly speeding up calculations that repeatedly query the profile at nearby radii.
Parameters
[toleranceRelative](real; default1.0d-2) — The relative tolerance within which a cached (accelerated) profile estimate is accepted; if the requested radius differs from the cached value by more than this fractional amount, the full profile calculation is recomputed.[factorRadiusMaximum](real; default3.0d0) — The maximum radial extrapolation factor allowed when using cached profile values for the dark-matter-only profile; if the requested radius exceeds the cached radius by more than this factor, the full calculation is recomputed.
darkMatterProfileDMOAccretionFlowCorrelationFunction¶
An accretion flow class which models the accretion flow using the 2-halo correlation function by building massDistributionCorrelationFunction objects.
Parameters
[scaleFactorVelocity](real; default1.0d0) — A dimensionless multiplicative scale factor applied to the inflow velocities computed from the correlation-function-based accretion flow model, allowing calibration of the infall velocity amplitude relative to the two-point clustering prediction.
darkMatterProfileDMOAccretionFlowDiemerKravtsov2014¶
An accretion flow class which models the accretion flow using the fitting function of Diemer and Kravtsov (2014). Specifically, massDistributionDiemerKravtsov2014 objects are built with parameters chosen using fits to the redshift and \(\nu\) dependencies of the fitting parameters \(b_\mathrm{e}\) and \(s_\mathrm{e}\) chosen to match the results of their figure 18.
Parameters
[b0](real; default+1.1250d0) — The parameter \(b_0\) in the fitting function \(b(\nu,z)=b_0 (1+z)^{b_z} \nu^{b_\nu}\) for the parameter \(b(\nu,z)\) appearing in equation (4) of Diemer and Kravtsov (2014). Default from: Derived by Andrew Benson by constructing simple functional forms which fit the plots in figure 18 of Diemer and Kravtsov (2014).[bz](real; default+0.625d0) — The parameter \(b_z\) in the fitting function \(b(\nu,z)=b_0 (1+z)^{b_z} \nu^{b_\nu}\) for the parameter \(b(\nu,z)\) appearing in equation (4) of Diemer and Kravtsov (2014). Default from: Derived by Andrew Benson by constructing simple functional forms which fit the plots in figure 18 of Diemer and Kravtsov (2014).[bnu](real; default-0.2250d0) — The parameter \(b_\nu\) in the fitting function \(b(\nu,z)=b_0 (1+z)^{b_z} \nu^{b_\nu}\) for the parameter \(b(\nu,z)\) appearing in equation (4) of Diemer and Kravtsov (2014). Default from: Derived by Andrew Benson by constructing simple functional forms which fit the plots in figure 18 of Diemer and Kravtsov (2014).[s0](real; default+1.3925d0) — The parameter \(s_0\) in the fitting function \(s(\nu,z)=s_0 (1+z)^{s_z} \nu^{s_\nu}\) for the parameter \(s(\nu,z)\) appearing in equation (4) of Diemer and Kravtsov (2014). Default from: Derived by Andrew Benson by constructing simple functional forms which fit the plots in figure 18 of Diemer and Kravtsov (2014).[sz](real; default-0.199d0) — The parameter \(s_z\) in the fitting function \(s(\nu,z)=s_0 (1+z)^{s_z} \nu^{s_\nu}\) for the parameter \(s(\nu,z)\) appearing in equation (4) of Diemer and Kravtsov (2014). Default from: Derived by Andrew Benson by constructing simple functional forms which fit the plots in figure 18 of Diemer and Kravtsov (2014).[snu](real; default+0.0875d0) — The parameter \(s_\nu\) in the fitting function \(s(\nu,z)=s_0 (1+z)^{s_z} \nu^{s_\nu}\) for the parameter \(s(\nu,z)\) appearing in equation (4) of Diemer and Kravtsov (2014). Default from: Derived by Andrew Benson by constructing simple functional forms which fit the plots in figure 18 of Diemer and Kravtsov (2014).
darkMatterProfileDMOAccretionFlowShi2016¶
A dark matter profile class which builds massDistributionShi2016 objects to model accretion flows using the model of Shi (2016).
Parameters
[scaleFactorVelocity](real; default1.0d0) — A dimensionless multiplicative scale factor applied to the inflow velocities computed from the Shi (2016) splashback and accretion flow model, allowing calibration of the infall velocity amplitude relative to the theoretical prediction.
darkMatterProfileDMOBurkert¶
A dark matter only profile class which builds massDistributionBurkert objects to compute the (Burkert, 1995) density profile.
darkMatterProfileDMOCuspNFW¶
A dark matter profile DMO class which builds massDistributionCuspNFW objects to implement the cusp-NFW density profile (Delos, 2025), normalized such that the total mass of the node is enclosed with the virial radius and with the scale length \(r_\mathrm{s}\).
Parameters
[toleranceRelativeVelocityDispersion](real; default1.0d-6) — The relative tolerance to use in numerical solutions for the velocity dispersion.[toleranceRelativeVelocityDispersionMaximum](real; default1.0d-3) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion.[velocityDispersionUseSeriesExpansion](boolean; default.true.) — Iftrue, radial velocity dispersion is computed using series expansion (but only for the case of \(y=0\), i.e. an NFW profile).
darkMatterProfileDMODecaying¶
A dark matter profile DMO class which builds massDistributionSphericalDecaying objects to account for dark matter particle decays in some other dark matter profile.
Parameters
[toleranceRelativeVelocityDispersion](real; default1.0d-6) — The relative tolerance to use in numerical solutions for the velocity dispersion.[toleranceRelativeVelocityDispersionMaximum](real; default1.0d-3) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion.[toleranceRelativePotential](real; default1.0d-3) — The relative tolerance to use in numerical solutions for the gravitational potential.[tolerateEnclosedMassIntegrationFailure](boolean; default.false.) — Iftrue, tolerate failures to find the mass enclosed as a function of radius.[tolerateVelocityMaximumFailure](boolean; default.false.) — Iftrue, tolerate failures to find the radius of the maximum circular velocity.[toleratePotentialIntegrationFailure](boolean; default.false.) — Iftrue, tolerate numerical failures when computing the gravitational potential of a decaying dark matter profile (e.g. due to extreme decay fractions), allowing the calculation to proceed with a fallback result rather than terminating.
darkMatterProfileDMOEinasto¶
A dark matter profile DMO class which builds massDistributionEinasto objects to compute the Einasto density profile (e.g. Cardone et al. 2005), normalized such that the total mass of the node is enclosed with the virial radius and with the characteristic length \(r_{-2} = r_\mathrm{virial}/c\) where \(c\) is the halo concentration (see darkMatterProfileConcentration). The shape parameter, \(\alpha\), is set using the density profile shape method (see darkMatterProfileShape).
darkMatterProfileDMOFiniteResolution¶
A dark matter profile DMO class which builds massDistributionSphericalFiniteResolution objects to mimic the effects of finite resolution in an N-body simulation.
Methods
lengthResolutionPhysical→double precisionReturn the resolution length in physical units.
type(treeNode) node[inout]
calculationResetReset memoized calculations.
type(treeNode) node[inout]integer(kind_int8) uniqueID[in]
Parameters
[lengthResolution](real) — The gravitational softening length \(\Delta x\) (in Mpc) of the N-body simulation, which sets the minimum spatial scale below which the dark matter profile is smoothed to avoid artificial two-body effects.[massResolution](real) — The mass resolution \(\Delta M\) (in \(\mathrm{M}_\odot\)) of the N-body simulation, representing the minimum halo mass that can be resolved; profiles of halos near this limit are softened to account for particle discreteness effects.[resolutionIsComoving](boolean) — If true, the resolution length is assumed to be fixed in comoving coordinates, otherwise in physical coordinates.[nonAnalyticSolver](string; one offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available. If set to “fallThrough” then the solution ignoring heating is used, while if set to “numerical” then numerical solvers are used to find solutions.
darkMatterProfileDMOFiniteResolutionNFW¶
A dark matter profile DMO class which builds massDistributionSphericalFiniteResolutionNFW objects to mimic a finite resolution to an NFW density profile.
Parameters
[lengthResolution](real) — The gravitational softening length \(\Delta x\) (in Mpc) of the N-body simulation used to smooth the NFW profile at small radii, preventing artificial divergence below the resolution scale.[massResolution](real) — The mass resolution \(\Delta M\) (in \(\mathrm{M}_\odot\)) of the N-body simulation, used to determine the finite-resolution softening of the NFW profile for halos near the resolution limit.[resolutionIsComoving](boolean) — If true, the resolution length is assumed to be fixed in comoving coordinates, otherwise in physical coordinates.[nonAnalyticSolver](string; one offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available. If set to “fallThrough” then the solution ignoring heating is used, while if set to “numerical” then numerical solvers are used to find solutions.
darkMatterProfileDMOHeated¶
A dark matter profile DMO class which builds massDistributionSphericalHeated objects to account for heating of some other dark matter profile.
Parameters
[nonAnalyticSolver](string; one offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available. If set to “fallThrough” then the solution ignoring heating is used, while if set to “numerical” then numerical solvers are used to find solutions.[chandrasekharIntegralSuppressExtendedMass](boolean; default.true.) — If true, the Chandrasekhar integral (used to compute dynamical friction) is suppressed by a factor accounting for the finite extent of the perturbing subhalo. If false, no such suppression is applied (restoring the behavior prior to the introduction of this factor).[velocityDispersionApproximate](boolean; default.true.) — Iftrue, radial velocity dispersion is computed using an approximate method in which we assume that \(\sigma_\mathrm{r}^2(r) \rightarrow \sigma_\mathrm{r}^2(r) - (2/3) \epsilon(r)\), where \(\epsilon(r)\) is the specific heating energy. Iffalsethen radial velocity dispersion is computed by numerically solving the Jeans equation.[tolerateEnclosedMassIntegrationFailure](boolean; default.false.) — Iftrue, tolerate failures to find the mass enclosed as a function of radius.[tolerateVelocityDispersionFailure](boolean; default.false.) — Iftrue, tolerate failures to compute the velocity dispersion.[tolerateVelocityMaximumFailure](boolean; default.false.) — If true, tolerate failures to find the radius of the peak in the rotation curve.[toleratePotentialIntegrationFailure](boolean; default.false.) — Iftrue, tolerate numerical failures when computing the gravitational potential of a heated dark matter profile, allowing the calculation to continue with a fallback result rather than aborting.[toleranceRelativeVelocityDispersion](real; default1.0d-6) — The relative tolerance to use in numerical solutions for the velocity dispersion in dark-matter-only density profiles.[toleranceRelativeVelocityDispersionMaximum](real; default1.0d-3) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion in dark-matter-only density profiles.[fractionRadiusFinalSmall](real; default1.0d-3) — The initial radius is limited to be no smaller than this fraction of the final radius. This can help avoid problems in profiles that are extremely close to being disrupted.[toleranceRelativePotential](real; default1.0d-3) — The maximum allowed relative tolerance to use in numerical solutions for the gravitational potential in dark-matter-only density profiles before aborting.
darkMatterProfileDMOHeatedMonotonic¶
A dark matter profile DMO class in which builds massDistributionSphericalHeatedMonotonic objects to account for heating of some other dark matter profile.
Parameters
[nonAnalyticSolver](string; one offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available. If set to “fallThrough” then the solution ignoring heating is used, while if set to “numerical” then numerical solvers are used to find solutions.[toleranceRelativeVelocityDispersion](real; default1.0d-6) — The relative tolerance to use in numerical solutions for the velocity dispersion in dark-matter-only density profiles.[toleranceRelativeVelocityDispersionMaximum](real; default1.0d-3) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion in dark-matter-only density profiles.
darkMatterProfileDMOIsothermal¶
A dark matter profile DMO class in which builds massDistributionIsothermal objects to implement isothermal density profiles, normalized such that the total mass of the node is enclosed with the virial radius.
darkMatterProfileDMOMultiple¶
A dark matter profile DMO class in which the density profiles of the host halo and the satellite halo can be set separately to any other darkMatterProfileDMO available.
darkMatterProfileDMONFW¶
A dark matter profile DMO class which builds massDistributionNFW objects to implement the NFW density profile (Navarro et al., 1997), normalized such that the total mass of the node is enclosed with the virial radius and with the scale length \(r_\mathrm{s} = r_\mathrm{virial}/c\) where \(c\) is the halo concentration (see darkMatterProfileConcentration).
(Default implementation)
Parameters
[velocityDispersionUseSeriesExpansion](boolean; default.true.) — Iftrue, radial velocity dispersion is computed using series expansion.
darkMatterProfileDMOPenarrubia2010¶
A dark matter profile DMO class which builds massDistributionZhao1996 to implement the Peñarrubia et al. (2010) density profile.
Parameters
[alpha](real) — The parameter \(\alpha\) of the Zhao (1996) dark matter density profile.[beta](real) — The parameter \(\beta\) of the Zhao (1996) dark matter density profile.[betaStripped](real; default5.0d0) — The parameter \(\beta_\mathrm{stripped}\) of the Peñarrubia et al. (2010) dark matter density profile. This is the \(\beta\) exponent of the Zhao (1996) dark matter density profile for cases where significant stripping of the profile has occurred.[gamma](real) — The parameter \(\gamma\) of the Zhao (1996) dark matter density profile.[muRadius](real) — The parameter \(\mu\) of the Peñarrubia et al. (2010) tidal track for \(r_\mathrm{max}\).[etaRadius](real) — The parameter \(\eta\) of the Peñarrubia et al. (2010) tidal track for \(r_\mathrm{max}\).[muVelocity](real) — The parameter \(\mu\) of the Peñarrubia et al. (2010) tidal track for \(V_\mathrm{max}\).[etaVelocity](real) — The parameter \(\eta\) of the Peñarrubia et al. (2010) tidal track for \(V_\mathrm{max}\).
darkMatterProfileDMOSIDMCoreNFW¶
Cored-NFW dark matter halo profiles to approximate the effects of SIDM based on the model of Jiang et al. (2023) are built via massDistributionSphericalSIDMCoreNFW objects.
Parameters
[factorRadiusCore](real; default0.45d0) — The factor \(\alpha\) appearing in the definition of the core radius, \(r_\mathrm{c}=\alpha r_1\) where \(r_1\) is the radius at which an SIDM particle has had, on average, 1 interaction. Default from: (Jiang et al., 2023).
darkMatterProfileDMOSIDMIsothermal¶
Dark matter halo profiles for self-interacting dark matter following the “isothermal” model of Jiang et al. (2023) are built via the massDistributionSphericalSIDMIsothermal mass distribution class.
darkMatterProfileDMOSIDMParametric¶
Dark matter halo profiles for self-interacting dark matter following the “SIDM parametric” model of Yang et al. (2024) are built via the massDistributionSIDMParametricProfile class.
Parameters
[beta](real; default4.0d0) — The value \(\beta\) in a SIDMParametric-model mass distribution.
darkMatterProfileDMOSolitonNFW¶
A dark matter profile DMO class which builds massDistributionSolitonNFW objects to implement the
FDM profile. The core-halo mass relation and core radius are computed following Chan et al. (2022), while
the core density normalization follows Schive et al. (2014).
The structural state of each halo—whether it admits a solitonic core or is treated as a pure NFW halo—is determined once,
on the first occasion that its mass distribution is required, and recorded in the solitonStatus meta-property. It is not
subsequently re-determined, so that a halo can not move back and forth between the two descriptions as its properties
evolve. For a halo in which no soliton formed the solitonRadiusCore and solitonDensityCore properties are output as
zero, while solitonRadiusSoliton and solitonMassCore are output as negative.
Methods
computePropertiesCompute properties of the mass distribution.
type(treeNode) node[inout]double precision radiusVirial[out]double precision radiusScale[out]double precision radiusCore[out]double precision radiusSoliton[out]double precision densityCore[out]double precision densityScale[out]double precision massCore[out]
calculationResetReset memoized calculations.
type(treeNode) node[inout]integer(kind_int8) uniqueID[in]
Parameters
[toleranceRelativeVelocityDispersion](real; default1.0d-6) — The relative tolerance to use in numerical solutions for the velocity dispersion.[toleranceRelativeVelocityDispersionMaximum](real; default1.0d-3) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion.[scatterFractional](real; default0.5d0) — The fractional scatter in the solitonic core-halo mass relation (default corresponds to a 50% fractional scatter).
darkMatterProfileDMOSolitonNFWHeated¶
A dark matter profile DMO class which builds massDistributionSolitonNFWHeated objects to implement the
FDM profile. The inner region follows the soliton solution, while the outer region transitions to a heated NFW
envelope. The core-halo mass relation and core radius are computed following Chan et al. (2022), while the core
density normalization follows Schive et al. (2014).
Note that tidal heating is applied to the NFW envelope only, and never to the solitonic core: the core is a coherent ground
state of the wave equation governing the fuzzy dark matter field, rather than a collection of particles on orbits, and so does
not respond to tidal heating in the way that a collisionless profile does. In consequence a halo which has been stripped down
to its core, and which is therefore described by massDistributionSoliton alone, carries no heating at all.
The structural state of each halo is recorded in the solitonStatus meta-property. A halo is determined, once, to be either
soliton+NFW or NFW-only, and is never afterwards reconsidered—so that it can not move back and forth between the two
descriptions as its properties evolve, which would be unphysical and would present the ODE solver with discontinuous changes in
the density profile. A soliton+NFW halo may subsequently become soliton-only, if tidal stripping removes its NFW envelope; that
state, too, is permanent.
Methods
computePropertiesCompute properties of the mass distribution.
type(treeNode) node[inout]double precision radiusVirial[out]double precision radiusScale[out]double precision radiusCore[out]double precision radiusSoliton[out]double precision densityCore[out]double precision densityScale[out]double precision massCore[out]type(enumerationWeightByType) weightBy(optional) [in]integer weightIndex(optional) [in]
calculationResetReset memoized calculations.
type(treeNode) node[inout]integer(kind_int8) uniqueID[in]
Parameters
[nonAnalyticSolver](string; one offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available. If set to “fallThrough” then the solution ignoring heating is used, while if set to “numerical” then numerical solvers are used to find solutions.[tolerateEnclosedMassIntegrationFailure](boolean; default.false.) — Iftrue, tolerate failures to find the mass enclosed as a function of radius.[tolerateVelocityMaximumFailure](boolean; default.false.) — Iftrue, tolerate failures to find the radius of the maximum circular velocity.[toleratePotentialIntegrationFailure](boolean; default.false.) — Iftrue, tolerate numerical failures when computing the gravitational potential of the heated soliton-NFW dark matter profile (e.g. due to extreme heating), allowing the calculation to proceed with a fallback result.[velocityDispersionApproximate](boolean; default.true.) — Iftrue, radial velocity dispersion is computed using an approximate method in which we assume that \(\sigma_\mathrm{r}^2(r) \rightarrow \sigma_\mathrm{r}^2(r) - (2/3) \epsilon(r)\), where \(\epsilon(r)\) is the specific heating energy. Iffalsethen radial velocity dispersion is computed by numerically solving the Jeans equation.[toleranceRelativeVelocityDispersion](real; default1.0d-6) — The relative tolerance to use in numerical solutions for the velocity dispersion.[toleranceRelativeVelocityDispersionMaximum](real; default1.0d-3) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion.[fractionRadiusFinalSmall](real; default1.0d-3) — The initial radius is limited to be no smaller than this fraction of the final radius. This can help avoid problems in profiles that are extremely close to being disrupted.[toleranceRelativePotential](real; default1.0d-3) — The maximum allowed relative tolerance to use in numerical solutions for the gravitational potential in dark-matter-only density profiles before aborting.[scatterFractional](real; default0.5d0) — The fractional scatter in the solitonic core-halo mass relation (default corresponds to a 50% fractional scatter).
darkMatterProfileDMOTruncated¶
Truncated dark matter halo profiles are built via the massDistributionSphericalTruncated mass distribution class.
Parameters
[nonAnalyticSolver](string; one offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available. If set to “fallThrough” then the solution ignoring heating is used, while if set to “numerical” then numerical solvers are used to find solutions.[radiusFractionalTruncateMinimum](real; default2.0d0) — The minimum radius (in units of the virial radius) to begin truncating the density profile.[radiusFractionalTruncateMaximum](real; default4.0d0) — The maximum radius (in units of the virial radius) to finish truncating the density profile.
darkMatterProfileDMOTruncatedExponential¶
Exponentially truncated dark matter halo profiles Kazantzidis et al. (2006) are constructed via the massDistributionSphericalTruncatedExponential mass distribution class.
Parameters
[nonAnalyticSolver](string; one offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available. If set to “fallThrough” then the solution ignoring heating is used, while if set to “numerical” then numerical solvers are used to find solutions.[radiusFractionalDecay](real; default1.0d0) — The truncation scale radius expressed as a fraction of the virial radius; the exponentially truncated dark matter profile decays as \(\exp(-r/r_\mathrm{trunc})\) for \(r > r_\mathrm{trunc} =\)[radiusFractionalDecay]\(\times r_\mathrm{virial}\), suppressing the profile at large radii.
darkMatterProfileDMOZhao1996¶
A dark matter profile DMO class which builds massDistributionZhao1996 objects.
Methods
exponentsCompute the exponents for the density profile.
type(treeNode) node[inout]double precision alpha[out]double precision beta[out]double precision gamma[out]
scaleRadius→double precisionCompute the scale radius for the density profile.
type(treeNode) node[inout]
normalization→double precisionCompute the normalization of the density profile.
type(treeNode) node[inout]
Parameters