Mass Distributions

Class providing mass distributions—fully general descriptions of the spatial distribution of mass (dark matter, gas, stars, or black holes) in a galaxy or halo. Implementations provide the density profile \(\rho(\mathbf{x})\), gravitational potential \(\Phi(\mathbf{x})\), enclosed mass \(M(r)\), surface density, rotation curve, and velocity dispersion via the Jeans equation. The class also tracks the component and mass type of the distribution and supports arbitrary geometries, enabling self-consistent multi-component dynamical models of galaxies and halos.

Methods

setKinematicsDistributionvoid

Set the kinematics distribution for this mass distribution.

  • class(kinematicsDistributionClass), intent(in ) :: kinematicsDistribution_

kinematicsDistributionclass(kinematicsDistributionClass)

Get a pointer to the kinematics distribution for this mass distribution.

setTypesvoid

Set the component and mass types of the mass distribution.

  • type(enumerationComponentTypeType), intent(in ), optional :: componentType

  • type(enumerationMassTypeType ), intent(in ), optional :: massType

subsetclass(massDistributionClass)

Return the subset of the mass distribution matching the given componentType and massType.

  • type(enumerationComponentTypeType), intent(in ), optional :: componentType

  • type(enumerationMassTypeType ), intent(in ), optional :: massType

describevoid

Display a description of the mass distribution.

matcheslogical

Return true if this mass distribution matches the specified component and mass type.

  • type(enumerationComponentTypeType), intent(in ), optional :: componentType

  • type(enumerationMassTypeType ), intent(in ), optional :: massType

symmetrytype(enumerationMassDistributionSymmetryType)

Return the symmetry of the distribution.

isSphericallySymmetriclogical

Return true if the distribution is spherically symmetric.

assumeMonotonicDecreasingSurfaceDensitylogical

Return true if the distribution can be assumed to have a monotonically decreasing surface density.

isDimensionlesslogical

Return true if the distribution is dimensionless.

massTotaldouble precision

Return the total mass of the distribution.

accelerationdouble precision, dimension(3)

Return the gravitational acceleration due to the distribution at the given coordinates.

  • class(coordinate), intent(in ) :: coordinates

tidalTensortype(tensorRank2Dimension3Symmetric)

Return the gravitational tidal tensor due to the distribution at the given coordinates.

  • class(coordinate), intent(in ) :: coordinates

densitydouble precision

Return the density of the distribution at the given coordinates.

  • class(coordinate), intent(in ) :: coordinates

densitySphericalAveragedouble precision

Return the average density on a spherical shell of the given radius.

  • double precision, intent(in ) :: radius

densityGradientRadialdouble precision

Return the radial gradient of density of the distribution at the given coordinates.

  • class (coordinate), intent(in ) :: coordinates

  • logical , intent(in ), optional :: logarithmic

potentialdouble precision

Return the gravitational potential of the distribution at the given coordinates.

  • class(coordinate ), intent(in ) :: coordinates

  • type (enumerationStructureErrorCodeType), intent( out), optional :: status

potentialIsAnalyticlogical

Return true if the gravitational potential for this distribution has an analytic form.

potentialDifferencedouble precision

Return the difference in that gravitational potential of the distribution between the given coordinates.

  • class(coordinate ), intent(in ) :: coordinates1, coordinates2

  • type (enumerationStructureErrorCodeType), intent( out), optional :: status

potentialDifferenceNumericaldouble precision

Return the difference in that gravitational potential of the distribution between the given coordinates using a numerical calculation.

  • class(coordinate ), intent(in ) :: coordinates1, coordinates2

  • type (enumerationStructureErrorCodeType), intent( out), optional :: status

massEnclosedBySpheredouble precision

Return the mass enclosed in the distribution by a sphere of given radius.

  • double precision, intent(in ) :: radius

massEnclosedByCylinderdouble precision

Return the mass enclosed in the distribution by a cylinder of given radius.

  • double precision, intent(in ) :: radius

radiusEnclosingMassdouble precision

Return the radius enclosing a specified mass.

  • double precision, intent(in ), optional :: mass, massFractional

radiusEnclosingMassNumericaldouble precision

Return the radius enclosing a specified mass using a numerical calculation.

  • double precision, intent(in ), optional :: mass, massFractional

radiusCylindricalEnclosingMassdouble precision

Return the cylindrical radius enclosing a specified mass.

  • double precision, intent(in ), optional :: mass, massFractional

radiusCylindricalEnclosingMassNumericaldouble precision

Return the cylindrical radius enclosing a specified mass using a numerical calculation.

  • double precision, intent(in ), optional :: mass, massFractional

radiusEnclosingDensitydouble precision

Return the radius enclosing a specified density.

  • double precision, intent(in ) :: density

  • double precision, intent(in ), optional :: radiusGuess

radiusEnclosingDensityNumericaldouble precision

Return the radius enclosing a specified density using a numerical calculation.

  • double precision, intent(in ) :: density

  • double precision, intent(in ), optional :: radiusGuess

radiusEnclosingSurfaceDensitydouble precision

Return the radius enclosing a specified surface density.

  • double precision, intent(in ) :: densitySurface

  • double precision, intent(in ), optional :: radiusGuess

radiusEnclosingSurfaceDensityNumericaldouble precision

Return the radius enclosing a specified surface density using a numerical calculation.

  • double precision, intent(in ) :: densitySurface

  • double precision, intent(in ), optional :: radiusGuess

radiusFromSpecificAngularMomentumdouble precision

Return the radius corresponding to a given specific angular momentum.

  • double precision, intent(in ) :: angularMomentumSpecific

radiusFromSpecificAngularMomentumNumericaldouble precision

Return the radius corresponding to a given specific angular momentum using a numerical calculation.

  • double precision, intent(in ) :: angularMomentumSpecific

rotationCurvedouble precision

Return the rotation curve at the given radius.

  • double precision, intent(in ) :: radius

rotationCurveGradientdouble precision

Return the rotation curve gradient, \(\mathrm{d}V^2/\mathrm{d}r\), at the given radius.

  • double precision, intent(in ) :: radius

velocityRotationCurveMaximumdouble precision

Return the maximum velocity in the rotation curve.

radiusRotationCurveMaximumdouble precision

Return the radius of the maximum velocity in the rotation curve.

radiusRotationCurveMaximumNumericaldouble precision

Return the radius of the maximum velocity in the rotation curve.

surfaceDensitydouble precision

Return the surface density at the given coordinates.

  • class(coordinate), intent(in ) :: coordinates

surfaceDensityRadialMomentdouble precision

Return the surface density at the given coordinates.

  • double precision, intent(in ) :: moment

  • double precision, intent(in ), optional :: radiusMinimum, radiusMaximum

  • logical , intent( out), optional :: isInfinite

densityRadialMomentdouble precision

Return the radial moment of the distribution.

  • double precision, intent(in ) :: moment

  • double precision, intent(in ), optional :: radiusMinimum, radiusMaximum

  • logical , intent( out), optional :: isInfinite

densitySquareIntegraldouble precision

Return the integral over the square of the density of the distribution.

  • double precision, intent(in ), optional :: radiusMinimum, radiusMaximum

  • logical , intent( out), optional :: isInfinite

chandrasekharIntegraldouble precision, dimension(3)

Return the Chandrasekhar integral of the distribution.

  • class (massDistributionClass), intent(inout) :: massDistributionEmbedding, massDistributionPerturber

  • double precision , intent(in ) :: massPerturber

  • class (coordinate ), intent(in ) :: coordinates , velocity

radiusFreefalldouble precision

Return the radius at which the freefall time to the center equals the given time.

  • double precision, intent(in ) :: time

radiusFreefallIncreaseRatedouble precision

Return the rate of increase of the freefall radius corresponding to the given time.

  • double precision, intent(in ) :: time

fourierTransformdouble precision

Return the spherically-symmetrized Fourier transform of the density profile at the given wavenumber.

  • double precision, intent(in ) :: radiusOuter , wavenumber

energydouble precision

Return the total energy of the distribution within the given radius.

  • double precision , intent(in ) :: radiusOuter

  • class (massDistributionClass), intent(inout), target :: massDistributionEmbedding

positionSampledouble precision, dimension(3)

Return a position sampled from the distribution.

  • class(randomNumberGeneratorClass ), intent(inout) :: randomNumberGenerator_

solverSetvoid

Set a sub-module scope pointers on a stack to allow recursive calls to functions.

  • double precision, intent(in ), dimension(3), optional :: position1 , position2 , vectorUnit

  • double precision, intent(in ) , optional :: massTarget, densityTarget, angularMomentumSpecificTarget, densitySurfaceTarget, separation

solverUnsetvoid

Unset a sub-module scope pointers on the stack.

massDistributionBetaProfile

A mass distribution class for \(\beta\)-profile distributions.

Methods

  • initialize — (Re)initialize the parameters of the \(\beta\)-profile mass distribution.

Parameters

  • [beta] (real; default 2.0d0/3.0d0) — The value \(\beta\) in a \(\beta\)-model mass distribution.

  • [densityNormalization] (real; default 0.0d0) — The density normalization of a \(\beta\)-model mass distribution.

  • [mass] (real; default 0.0d0) — The mass of a \(\beta\)-model mass distribution.

  • [outerRadius] (real; default 0.0d0) — The outer radius of a \(\beta\)-model mass distribution.

  • [coreRadius] (real; default 0.0d0) — The core radius of a \(\beta\)-model mass distribution.

  • [dimensionless] (boolean; default .false.) — If true then the \(\beta\)-model mass distribution is considered to be in dimensionless units.

  • [truncateAtOuterRadius] (boolean; default .false.) — If true then the \(\beta\)-model mass distribution is truncated beyond the outer radius.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionBlackHole

A mass distribution class for point masses.

Methods

  • initialize — (Re)initialize the parameters of the black hole mass distribution.

Parameters

  • [mass] (real; default 1.0d0) — The mass (in \(\mathrm{M}_\odot\)) of the black hole, which is treated as a point mass whose gravitational potential is \(-\mathrm{G}M/r\).

  • [dimensionless] (boolean; default .true.) — If true the point mass distribution is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionBurkert

A mass distribution class which implements the (Burkert, 1995) density profile:

\[\rho_\mathrm{dark matter}(r) = \rho_0 \left(1+{r\over r_\mathrm{s}}\right)^{-1} \left(1+[{r\over r_\mathrm{s}}]^2\right)^{-1}.\]

The mass enclosed within radius \(r\) is given by

\[M(<r) = \pi \rho_0 r_\mathrm{s}^3 \left[ 2 \log(1 + R) + \log(1 + R^2) -2 \tan^{-1}(R) \right]\]

where \(R=r/r_\mathrm{s}\). The associated gravitational potential is

\[\Phi(r) = - \frac{\mathrm{G} \pi \rho_0 r_\mathrm{s}^2}{R} \left[ (R-1) \log \left(R^2+1\right)-2 (R+1) \log (R+1)-2 (R+1) \cot^{-1}(R)+\pi \right]\]

The peak of the rotation curve occurs at \(R=3.2446257246042642\) (found by numerical solution) at which point the rotation curve amplitude is 1.644297750532498, and the Fourier transform of the profile, \(F(k) = \int_0^c 4 \pi r^2 \exp(-i k r) \rho(r) \mathrm{d} r / k r\) (needed in calculations of clustering using the halo model) is given by

\[\begin{split}F(k) & = (1+i) \frac{\pi}{k m(c) } \left( \right. \nonumber \\ & + \exp( k) \left\{ -i \pi -\mathrm{E}_\mathrm{i}[- k]+\mathrm{E}_\mathrm{i}[(-1+ic)k] \right\} \nonumber \\ & +(1-i) \exp(-k) \left\{ +\mathrm{E}_\mathrm{i}[-i k]+\mathrm{E}_\mathrm{i}[(+i+ic)k] \right\} \nonumber \\ & + i \exp(-k) \left\{ +\mathrm{E}_\mathrm{i}[+ k]+\mathrm{E}_\mathrm{i}[(+1+ic)k] \right\} \nonumber \\ & \left. \right).\end{split}\]

Methods

  • timeFreefallTabulate — Tabulate the freefall time as a function of radius in a scale-free Burkert mass distribution.

Parameters

  • [densityNormalization] (real; default 1.0d0/Pi/(log(8.0d0)-Pi/2.0d0)) — The density normalization of the Burkert profile.

  • [scaleLength] (real; default 1.0d0) — The scale radius of the Burkert profile.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the Burkert profile, used to set the density normalization \(\rho_0\) when densityNormalization is not supplied.

  • [radiusOuter] (real) — The outer radius of the Burkert profile.

  • [dimensionless] (boolean; default .true.) — If true the Burkert profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionCloudOverdensities

A mass distribution class that overlays a population of randomly placed, constant-density spherical clouds on top of an underlying smooth mass distribution. Cloud properties are set by [radius], [densityContrast], and [volumeFillingFactor], with inter-cloud gas characterized by [densityContrastIntercloud].

Parameters

  • [radius] (real) — The radius (in Mpc) of each individual constant-density spherical cloud overlaid on the smooth background mass distribution.

  • [densityContrast] (real) — The overdensity contrast of the clouds relative to the smooth background; values greater than 1 indicate denser clouds, which are used to compute the density inside cloud regions.

  • [volumeFillingFactor] (real) — The fraction of the total volume filled by clouds; used together with the cloud radius to determine the number of clouds randomly placed within the boundary radius.

  • [radiusBoundary] (real) — The boundary radius within which to populate clouds.

  • [dimensionless] (boolean; default .true.) — If true the cloud overdensities profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionComposite

A mass distribution class formed by superposing multiple component mass distributions (e.g.dark matter halo, disk, bulge, black hole), returning the combined density, potential, and enclosed mass as the sum over all components.

Methods

  • initialize — Initialize the mass distribution after construction.

  • subset — Return a subset of a composite mass distribution.

  • describe — Display a description of a composite mass distribution.

massDistributionConstantDensityCloud

A mass distribution class for constant density spherical clouds.

Parameters

  • [mass] (real) — The total mass (in \(\mathrm{M}_\odot\)) of the constant-density spherical cloud, used together with the radius to set the uniform density of the cloud.

  • [radius] (real) — The outer radius (in Mpc) of the constant-density spherical cloud; the density is zero beyond this radius and uniform within it.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionCoredNFW

A cored NFW (Navarro et al., 1996) mass distribution class. The density profile is given by:

\[ \rho_\mathrm{dark matter}(r) \propto \left({r_\mathrm{c}\over r_\mathrm{s}}+{r\over r_\mathrm{s}}\right)^{-1} \left[1 + \left({r\over r_\mathrm{s}}\right) \right]^{-2}.\]

Parameters

  • [densityNormalization] (real; default 1.0d0/2.0d0/Pi/(log(4.0d0)-1.0d0)) — The density normalization of the cored NFW profile.

  • [radiusScale] (real; default 1.0d0) — The scale radius of the cored NFW profile.

  • [radiusCore] (real; default 1.0d0) — The core radius of the cored NFW profile.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the cored NFW halo, used to set the density normalization when the concentration and virial radius are provided instead of densityNormalization.

  • [concentration] (real; default 1.0d0) — The concentration of the cored NFW profile.

  • [radiusVirial] (real; default 1.0d0) — The virial radius of the cored NFW profile.

  • [dimensionless] (boolean; default .true.) — If true the cored NFW profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

  • [toleranceRelativePotential] (real; default 1.0d-3) — The relative tolerance to use in numerical solutions for the gravitational potential.

massDistributionCorrelationFunction

An accretion flow class which models the accretion flow using the 2-halo correlation function.

Parameters

  • [mass] (real) — The virial mass (in \(\mathrm{M}_\odot\)) of the halo whose accretion flow is being modeled via the 2-halo correlation function.

  • [redshift] (real) — The cosmological redshift of the halo, used to convert to cosmic time for evaluating the correlation function-based accretion flow density profile.

  • [radius] (real) — The radius in the tabulated correlation function.

  • [correlationFunction] (real) — The correlation in the tabulated correlation function.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionCuspNFW

The cusp-NFW mass distribution (Delos, 2025). The density profile is given by:

\[\rho_\mathrm{dark matter}(r) = \rho_\mathrm{s} \left(y^2+{r\over r_\mathrm{s}}\right)^{1/2} \left({r\over r_\mathrm{s}}\right)^{-3/2} \left[1 + \left({r\over r_\mathrm{s}}\right) \right]^{-2},\]

where \(\rho_\mathrm{s}\) and \(r_\mathrm{s}\) are the usual NFW density normalization and scale length, and \(y = A/\rho_s r_\mathrm{s}^{3/2}\) characterizes the amplitude of the cusp, with \(A\) being the “cusp coefficient” as defined by Delos (2025).

Parameters

  • [densityNormalization] (real; default 1.0d0/2.0d0/Pi/(log(4.0d0)-1.0d0)) — The density normalization of the cusp-NFW profile.

  • [radiusScale] (real; default 1.0d0) — The scale radius of the cusp-NFW profile.

  • [y] (real; default 0.0d0) — The cusp amplitude parameter the cusp-NFW profile.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the cusp-NFW halo, used to set the density normalization when the concentration and virial radius are provided instead of densityNormalization.

  • [concentration] (real; default 1.0d0) — The concentration of the cusp-NFW profile.

  • [radiusVirial] (real; default 1.0d0) — The virial radius of the cusp-NFW profile.

  • [dimensionless] (boolean; default .true.) — If true the cusp-NFW profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

  • [toleranceRelativePotential] (real; default 1.0d-3) — The relative tolerance to use in numerical solutions for the gravitational potential.

massDistributionCylindrical

An abstract mass distribution class for cylindrically symmetric distributions.

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.

massDistributionCylindricalScaler

A mass distribution class for scaling cylindrical mass distributions. Specifically, the density at position \(\mathbf{x}\) is given by

\[\rho(\mathbf{x}) = \frac{f_\mathrm{M}}{f_\mathrm{r}^3} \rho^\prime(\mathbf{x}/f_\mathrm{r}),\]

where \(\rho^\prime(\mathbf{x})\) is the original mass distribution, and \(f_\mathrm{r}=\)[factorScalingLength], and \(f_\mathrm{M}=\)[factorScalingMass].

Methods

  • initialize — (Re)initialize the scaling factors of the scaled mass distribution.

Parameters

  • [factorScalingLength] (real) — The factor by which to scale lengths.

  • [factorScalingMass] (real) — The factor by which to scale the mass.

massDistributionDiemerKravtsov2014

A mass distribution class for accretion flows which models the accretion flow using the fitting function of Diemer and Kravtsov (2014). Specifically, the density profile of the accretion flow is modeled using their equation (4).

Parameters

  • [densityMean] (real) — The mean density of the universe in the Diemer and Kravtsov (2014) accretion flow mass distribution.

  • [radius200Mean] (real) — The radius enclosing a density of 200 times the mean density of the universe in the Diemer and Kravtsov (2014) accretion flow mass distribution.

  • [includeMean] (boolean; default .true.) — If true, include the mean density of the universe in the profile, otherwise, subtract off that mean density.

  • [b] (real) — The coefficient \(b\) in the Diemer and Kravtsov (2014) accretion flow mass distribution.

  • [s] (real) — The exponent \(s\) in the Diemer and Kravtsov (2014) accretion flow mass distribution.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionEinasto

An Einasto (e.g. Cardone et al. 2005) mass distribution class. The density profile is given by:

\[\rho_\mathrm{dark matter}(r) = \rho_{-2} \exp \left( - {2 \over \alpha} \left[ \left( {r \over r_{-2}} \right)^\alpha - 1 \right] \right).\]

Methods

  • timeFreefallTabulate — Tabulate the freefall time as a function of radius in a scale-free Einasto mass distribution.

  • timeFreefallMinimum — Compute the minimum freefall time in a scale-free Einasto mass distribution.

Parameters

  • [shapeParameter] (real) — The shape parameter, \(\alpha\), of the Einasto profile.

  • [densityNormalization] (real; default shapeParameter/4.0d0/Pi*(2.0d0/shapeParameter)**(3.0d0/shapeParameter)*exp(-2.0d0/shapeParameter)/Gamma_Function(3.0d0/shapeParameter)) — The density normalization of the Einasto profile.

  • [scaleLength] (real; default 1.0d0) — The scale radius of the Einasto profile.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the Einasto profile, used to set the density normalization \(\rho_{-2}\) when densityNormalization is not supplied.

  • [concentration] (real; default 1.0d0) — The concentration of the Einasto profile.

  • [virialRadius] (real; default 1.0d0) — The virial radius of the Einasto profile.

  • [dimensionless] (boolean; default .true.) — If true the Einasto profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionEnzoHydrostatic

A hot halo mass distribution class which adopts a spherically symmetric density profile for the hot halo motivated by the “hydrostatic” profile available in the ENZO code. Specifically,

\[\begin{split}\rho_\mathrm{hot halo}(r) \propto \left\{ \begin{array}{ll} T^{-1} r^{-1} & \hbox{ if } r > r_\mathrm{core} \\ T^{-1} r_\mathrm{core}^{-1} & \hbox{ if } r \le r_\mathrm{core}, \end{array} \right.\end{split}\]

where the core radius, \(r_\mathrm{core}\), is set using the selected cored profile core radius method (see hotHaloMassDistributionCoreRadius). The profile is normalized such that the current mass in the hot gas profile is contained within the outer radius of the hot halo, \(r_\mathrm{hot, outer}\). Note that the ENZO hydrostatic profile does not include this core, but without introducing this the profile mass can be divergent at small radii.

Methods

  • normalizationDensity — Return the normalization of the density profile.

Parameters

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

  • [mass] (real) — The total mass (in \(\mathrm{M}_\odot\)) of the hot gas distribution enclosed within radiusOuter; used to normalize the Enzo hydrostatic density profile.

  • [radiusOuter] (real) — The outer radius of the mass distribution.

  • [radiusScale] (real) — The core radius of the mass distribution.

  • [truncateAtOuterRadius] (boolean; default .false.) — If true then the mass distribution is truncated beyond the outer radius.

massDistributionExponentialDisk

The exponential disk mass distribution: \(\rho(r,z)=\rho_0 \exp(-r/r_\mathrm{s}) \hbox{sech}^2(z/z_\mathrm{s})\).

Methods

  • tabulate — Tabulates the potential for an exponential disk mass distribution.

  • besselFactorRotationCurve — Compute the Bessel function factor appearing in the exponential disk rotation curve.

  • besselFactorRotationCurveGradient — Compute the Bessel function factor appearing in the exponential disk rotation curve gradient.

  • besselFactorPotential — Compute the Bessel function factor appearing in the exponential disk potential.

  • accelerationTabulate — Tabulate the gravitational acceleration and tidal tensor due to the disk.

  • accelerationInterpolate — Interpolate in the tabulated gravitational acceleration and/or tidal tensor due to the disk.

Parameters

  • [scaleHeight] (real; > 0.0; default 0.137d0) — The scale height of the exponential disk profile.

  • [scaleRadius] (real; default 1.0d0) — The scale radius of the exponential disk profile.

  • [mass] (real; default 1.0d0) — The mass of the exponential disk profile.

  • [dimensionless] (boolean; default .true.) — If true the exponential disk profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionGaussianEllipsoid

A mass distribution class for triaxial Gaussian ellipsoids following the parameterization of Chandrasekhar (1987). The density is a Gaussian function of the ellipsoidal radius, with independent scale lengths along each of the three principal axes, and the gravitational acceleration is computed via tabulated integrals.

Methods

  • densityEllipsoidal — Compute the density on the isodensity surface defined by the parameter \(m^2\)2.

  • accelerationTabulate — Tabulate the gravitational acceleration due to the ellipsoid.

  • accelerationInterpolate — Interpolate in the tabulated gravitational acceleration due to the ellipsoid.

  • initialize — (Re)initialize the structural properties of the Gaussian ellispoid.

Parameters

  • [mass] (real) — The total mass (in \(\mathrm{M}_\odot\)) of the triaxial Gaussian ellipsoid, used together with the scale lengths to set the peak density normalization of the distribution.

  • [scaleLength] (real) — The scale lengths of the ellipsoid along each axis.

  • [axis1] (real; default [1.0d0,0.0d0,0.0d0]) — The unit vector defining the first axis of the ellipsoid.

  • [axis2] (real; default [0.0d0,1.0d0,0.0d0]) — The unit vector defining the second axis of the ellipsoid.

  • [axis3] (real; default [0.0d0,0.0d0,1.0d0]) — The unit vector defining the third axis of the ellipsoid.

  • [dimensionless] (boolean; default .true.) — If true the Gaussian ellipsoid profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionGaussianSlab

An infinite radial extent gas slab with a Gaussian vertical distribution: \(\rho(r,z)=\rho_0 \exp(z^2/2 z^2_\mathrm{s})\).

Parameters

  • [scaleHeight] (real; > 0.0; default 0.137d0) — The scale height of the Gaussian slab profile.

  • [densityCentral] (real; default 1.0d0) — The gas density at the slab mid-plane (\(z=0\)), \(\rho_0\), which sets the overall normalization of the Gaussian vertical profile \(\rho(z) = \rho_0 \exp(-z^2/2 z_\mathrm{s}^2)\).

  • [dimensionless] (boolean; default .true.) — If true the Gaussian slab profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionHernquist

A Hernquist (1990) mass distribution class.

Parameters

  • [densityNormalization] (real; default 0.5d0/Pi) — The density normalization of the Hernquist profile.

  • [scaleLength] (real; default 1.0d0) — The scale radius of the Hernquist profile.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the Hernquist profile, used to set the density normalization when densityNormalization is not supplied directly.

  • [dimensionless] (boolean; default .true.) — If true the Hernquist profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionIsothermal

An isothermal mass distribution class in which the density profile is given by:

\[\rho(r) \propto r^{-2}.\]

Parameters

  • [densityNormalization] (real; default 0.25d0/Pi) — The density normalization of the isothermal profile.

  • [lengthReference] (real; default 1.0d0) — The reference radius (in Mpc) of the isothermal profile at which densityNormalization is evaluated; sets the physical length scale of the \(\rho \propto r^{-2}\) profile.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) enclosed within the reference radius, used to normalize the \(\rho \propto r^{-2}\) density profile when densityNormalization is not supplied.

  • [dimensionless] (boolean; default .true.) — If true the isothermal profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionMiyamotoNagai

An Miyamoto-Nagai model (Miyamoto and Nagai, 1975) mass distribution class.

Methods

  • surfaceDensityTabulate — Initialize the surface density tabulation.

  • massEnclosedTabulate — Initialize the enclosed mass tabulation.

Parameters

  • [a] (real; default 1.0d0) — The \(a\) parameter of the MiyamotoNagai profile.

  • [b] (real; default 1.0d0) — The \(b\) parameter of the MiyamotoNagai profile.

  • [mass] (real; default 1.0d0) — The mass of the MiyamotoNagai profile.

  • [dimensionless] (boolean; default .true.) — If true the MiyamotoNagai profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionNFW

An NFW (Navarro et al., 1996) mass distribution class. The density profile is given by:

\[ \rho_\mathrm{dark matter}(r) \propto \left({r\over r_\mathrm{s}}\right)^{-1} \left[1 + \left({r\over r_\mathrm{s}}\right) \right]^{-2}.\]

Methods

  • radiusEnclosingDensityTabulate — Tabulate the radius enclosing a given density as a function of density and core radius.

  • radiusEnclosingMassTabulate — Tabulate the radius enclosing a given mass as a function of density and core radius.

  • energyTabulate — Tabulate the energy as a function of concentration and core radius.

  • densityScaleFree — The density of the profile in units where the mass and scale length are both 1.

  • massEnclosedScaleFree — The mass enclosed of the profile in units where the mass and scale length are both 1.

  • storeDensityTable — Store the tabulated radius-enclosing-density to file.

  • restoreDensityTable — Attempt to restore the tabulated radius-enclosing-density from file, returning true if successful.

  • storeMassTable — Store the tabulated radius-enclosing-mass to file.

  • restoreMassTable — Attempt to restore the tabulated radius-enclosing-mass from file, returning true if successful.

  • storeEnergyTable — Store the tabulated energy to file.

  • restoreEnergyTable — Attempt to restore the tabulated energy from file, returning true if successful.

  • suffix — Return a file name suffix (containing a source code digest.

Parameters

  • [densityNormalization] (real; default 1.0d0/2.0d0/Pi/(log(4.0d0)-1.0d0)) — The density normalization of the NFW profile.

  • [scaleLength] (real; default 1.0d0) — The NFW scale radius (in Mpc) \(r_\mathrm{s}\) at which the density profile transitions from the inner \(\rho \propto r^{-1}\) to the outer \(\rho \propto r^{-3}\) slope.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) enclosed within the virial radius, used together with radiusScale and radiusVirial to normalize the NFW density profile.

  • [concentration] (real; default 1.0d0) — The halo concentration parameter \(c = r_\mathrm{vir}/r_\mathrm{s}\) of the NFW profile, controlling how centrally concentrated the dark matter density profile is.

  • [virialRadius] (real; default 1.0d0) — The virial radius (in Mpc) \(r_\mathrm{vir}\) of the NFW halo, which defines the outer boundary of the profile at which the mean enclosed density equals the virial overdensity threshold.

  • [dimensionless] (boolean; default .true.) — If true the NFW profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionPatejLoeb2015

A mass distribution for the Patej and Loeb (2015) model of the circumgalactic medium.

Methods

  • radiusDarkMatter — Return the corresponding radius in the dark matter profile.

  • coordinatesDarkMatter — Return the corresponding coordinates in the dark matter profile.

Parameters

  • [gamma] (real; default 1.15d0) — The parameter \(\Gamma\) in the Patej and Loeb (2015) mass distribution.

  • [densityNormalization] (real; default 0.0d0) — The density normalization of the Patej and Loeb (2015) mass distribution.

  • [mass] (real; default 0.0d0) — The mass of the Patej and Loeb (2015) mass distribution.

  • [radiusOuter] (real; default 0.0d0) — The outer radius of the Patej and Loeb (2015) mass distribution.

  • [truncateAtOuterRadius] (boolean; default .false.) — If true then the Patej and Loeb (2015) mass distribution is truncated beyond the outer radius.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSersic

A S'ersic mass distribution class implementing the spherically deprojected form of the S'ersic surface brightness profile \(I(R) \propto \exp(-b_n [(R/R_e)^{1/n}-1])\), where \(n\) controls the profile shape.

Methods

  • tabulate — Tabulate the Sersic profile.

  • radiusHalfMassProjected — Return the half mass radius of the profile in projection.

Parameters

  • [index] (real; default 4.0d0) — The S'ersic index \(n\) that controls the shape of the surface brightness (or mass surface density) profile; \(n=1\) gives an exponential profile, \(n=4\) gives the de Vaucouleurs profile, and larger \(n\) produces more centrally concentrated profiles.

  • [radiusHalfMass] (real; default 1.0d0) — The projected half-mass (effective) radius (in Mpc) of the S'ersic profile, \(R_e\), within which half the total projected mass is enclosed.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the S'ersic profile, used together with index and radiusHalfMass to set the overall normalization of the density distribution.

  • [dimensionless] (boolean; default .true.) — If true the S'ersic profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionShi2016

A mass distribution for accretion flows using the framework of Shi (2016).

Methods

  • solve — Solve for the structure of the accretion flow.

Parameters

  • [mass] (real) — The virial mass (in \(\mathrm{M}_\odot\)) of the halo used to set the normalization of the Shi (2016) accretion flow density profile.

  • [massAccretionRate] (real) — The mass accretion rate (in \(\mathrm{M}_\odot\)/Gyr) of the halo, used in the Shi (2016) framework to set the amplitude of the outer accretion flow density profile.

  • [radiusVirial] (real) — The virial radius (in Mpc) of the halo, used together with the turnaround radius ratio to set the spatial scale of the Shi (2016) accretion flow.

  • [ratioRadiusTurnaroundVirial] (real) — The ratio of the turnaround to virial radii of the halo.

  • [redshift] (real) — The cosmological redshift of the halo, used to evaluate the cosmic time and expansion factor for the Shi (2016) accretion flow solution.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSIDMParametricProfile

A mass distribution class for the SIDM parametric profile of Yang et al. (2024). The density profile is given by:

\[ \rho(r) = \rho_\mathrm{s} \left[ \left( \left[\frac{r}{r_\mathrm{s}}\right]^\beta + \left[\frac{r_\mathrm{c}}{r_\mathrm{s}}\right]^\beta \right)^{1/\beta} \left( 1 + \frac{r}{r_\mathrm{s}} \right)^2 \right]^{-1}.\]

Parameters

  • [beta] (real; default 4.0d0) — The value \(\beta\) in a SIDM parametric mass distribution.

  • [densityNormalization] (real; default 0.0d0) — The density normalization of a SIDM parametric mass distribution.

  • [radiusScale] (real; default 0.0d0) — The scale of a SIDM parametric mass distribution.

  • [radiusCore] (real; default 0.0d0) — The core radius of a SIDM parametric mass distribution.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSoliton

A mass distribution class representing the solitonic core of fuzzy dark matter halos (Schive et al., 2014).

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

  • [radiusCore] (real) — The soliton core radius (in Mpc) characterizing the size of the quantum pressure-supported central core of the fuzzy dark matter halo; the density profile flattens inside this scale.

  • [densitySolitonCentral] (real) — The central density (in \(\mathrm{M}_\odot\)/Mpc\(^3\)) of the solitonic core at \(r=0\), which sets the overall normalization of the density profile \(\rho(r) = \rho_\mathrm{c} [1+(r/r_c)^2]^{-8}\).

  • [toleranceRelativePotential] (real; default 1.0d-3) — The maximum allowed relative tolerance to use in numerical solutions for the gravitational potential in dark-matter-only density profiles before aborting.

  • [dimensionless] (boolean; default .true.) — If true the soliton profile is treated as dimensionless (scale-free), allowing its radial and density quantities to be specified in arbitrary units.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSolitonNFW

A mass distribution class for fuzzy dark matter halos (Schive et al., 2014) consisting of soliton core for small radii, transitioning to an NFW profile at larger radii.

Methods

  • computeProperties — Compute properties of the mass distribution.

  • calculationReset — Reset memoized calculations.

Parameters

  • [radiusScale] (real) — The scale radius of the NFW component of the mass distribution.

  • [radiusCore] (real) — The soliton core radius (in Mpc) characterizing the size of the central quantum pressure-supported core of the fuzzy dark matter halo before the profile transitions to the outer NFW envelope.

  • [radiusSoliton] (real) — The transition radius (in Mpc) at which the solitonic core profile smoothly joins onto the outer NFW envelope; the density profile matches the NFW form beyond this radius.

  • [densitySolitonCentral] (real) — The central density (in \(\mathrm{M}_\odot\)/Mpc\(^3\)) of the solitonic core at \(r=0\), which sets the normalization of the soliton density profile \(\rho(r) = \rho_\mathrm{c} [1+(r/r_c)^2]^{-8}\).

  • [densityNormalizationNFW] (real) — The density normalization \(\rho_0\) (in \(\mathrm{M}_\odot\)/Mpc\(^3\)) of the outer NFW component, setting the amplitude of the \(\rho(r) = \rho_0/[(r/r_\mathrm{s})(1+r/r_\mathrm{s})^2]\) profile.

  • [concentration] (real) — The concentration parameter \(c = r_\mathrm{vir}/r_\mathrm{s}\) of the outer NFW component, specifying how centrally concentrated the NFW halo is.

  • [radiusVirial] (real) — The virial radius (in Mpc) of the outer NFW component, defining the outer boundary of the halo at which the mean enclosed density equals the virial overdensity threshold.

  • [toleranceRelativePotential] (real; default 1.0d-3) — The relative tolerance used in numerical ODE solutions for the gravitational potential of the soliton-NFW composite profile.

  • [dimensionless] (boolean; default .true.) — If true the soliton-NFW profile is treated as dimensionless (scale-free), allowing its radial and density quantities to be specified in arbitrary units.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The galactic structure component type (e.g.dark matter halo, disk, spheroid) represented by this mass distribution, used for component-specific queries.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type (e.g.dark matter, baryonic, total) represented by this mass distribution, used for mass-type-specific queries.

massDistributionSolitonNFWHeated

A mass distribution class for fuzzy dark matter halos (Schive et al., 2014) consisting of soliton core for small radii, transitioning to a heated NFW profile at larger radii.

Methods

  • computeProperties — Compute properties of the mass distribution.

  • calculationReset — Reset memoized calculations.

Parameters

  • [radiusCore] (real) — The soliton core radius (in Mpc) that characterizes the size of the central quantum pressure-supported core of the fuzzy dark matter halo; density is approximately constant within this radius.

  • [radiusSoliton] (real) — The outer radius (in Mpc) of the soliton region, beyond which the profile transitions from the soliton core to the heated NFW outer envelope.

  • [densitySolitonCentral] (real) — The central density (in \(\mathrm{M}_\odot\)/Mpc\(^3\)) of the solitonic core at \(r=0\), which sets the normalization of the soliton density profile \(\rho(r) = \rho_\mathrm{c} [1+(r/r_\mathrm{c})^2]^{-8}\).

  • [toleranceRelativePotential] (real; default 1.0d-3) — The relative tolerance used in numerical ODE solutions for the gravitational potential of the heated soliton-NFW composite profile.

  • [dimensionless] (boolean; default .true.) — If true the NFW profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSpherical

An abstract mass distribution class for spherically symmetric distributions.

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.

massDistributionSphericalAccelerator

Accelerates spherical mass distribution classes by storing previous results for the enclosed mass and interpolating where possible.

Methods

  • tabulate — Tabulate the mass function.

Parameters

  • [toleranceRelative] (real; default 1.0d-2) — The tolerance with which to accept accelerated estimates.

  • [factorRadiusMaximum] (real; default 3.0d0) — The maximum factor by which to interpolate in radius.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalAccretionFlow

An implementation of a mass distribution which includes the accretion flow surrounding a halo. The density profile is modeled as

\[\rho(r) = f_\mathrm{trans}(r) \rho_\mathrm{halo}(r) + \rho_\mathrm{accretion}(r),\]

where \(\rho_\mathrm{halo}(r)\) is the halo mass distribution, \(\rho_\mathrm{accretion}(r)\) is the accretion flow mass distribution, and

\[f_\mathrm{trans}(r) = \left( 1 + \left[\frac{r}{r_\mathrm{trans}}\right]^4 \right)^{-2}.\]

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

  • [radiusTransition] (real) — The transition radius (in Mpc) at which the density profile smoothly switches from the halo profile to the accretion flow, controlled by the fourth-order transition function \(f_\mathrm{trans}(r)\).

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalAdiabaticGnedin2004

A dark matter profile class which applies adiabatic contraction to the halo as it responds to the presence of baryons. Adiabatic contraction follows the algorithm of Gnedin et al. (2004). The parameters \(A\) and \(\omega\) of that model are specified via input parameters A and omega respectively.

Given the final radius, \(r_\mathrm{f}\), the corresponding initial radius, \(r_\mathrm{i}\), is found by solving:

(14)\[f_\mathrm{i} M_\mathrm{total,0}(\bar{r}_\mathrm{i}) r_\mathrm{i} = f_\mathrm{f} M_\mathrm{total,0}(\bar{r}_\mathrm{i}) r_\mathrm{f} + V^2_\mathrm{b}(\bar{r}_\mathrm{f}) \bar{r}_\mathrm{f} r_\mathrm{f}/ \mathrm{G},\]

where \(M_\mathrm{total,0}(r)\) is the initial total matter profile, \(V_\mathrm{b}(r)\) is the baryonic contribution to the rotation curve, \(f_\mathrm{i}\), is the fraction of mass within the virial radius compared to the node massfootnoteIn Galacticus the “node mass” refers to the total mass of the node, assuming it has the universal complement of baryons. Since some halos may contain less than the complete complement of baryons it is possible that \(f_\mathrm{i}<1\)., \(f_\mathrm{f}=(\Omega_\mathrm{M}-\Omega_\mathrm{b})/\Omega_\mathrm{M}+M_\mathrm{satellite, baryonic}/M_\mathrm{total}\), \(M_\mathrm{satellite, baryonic}\) is the baryonic mass in any satellite halos, \(M_\mathrm{total}\) is the node mass, and

(15)\[{\bar{r} \over r_0} = A \left({r \over r_0}\right)^\omega,\]

where the pivot radius \(r_0\) is set to \(f_0 r_\mathrm{vir}\) where \(f_0=\)[radiusFractionalPivot], and \(r_\mathrm{vir}\) is the virial radius. The original Gnedin et al. (2004) assumed \(f_0=1\), but the revised model of Gnedin et al. (2011) found that \(f_0=0.03\) lead to an improved model (less scatter in the best fit values of \((A,\omega)\) when comparing to N-body simulations).

Note that we explicitly assume that the initial, uncontracted total density profile has the same shape as the initial dark matter density profile, that contraction of the halo occurs with no shell crossing, and that satellite halos trace the dark matter profile of their host halo. The derivative, \(\mathrm{d} r_\mathrm{f}/\mathrm{d}d_\mathrm{i}\equiv r^\prime_\mathrm{i}\) is found by taking the derivative of eqn. ((14)) to give:

\[\begin{split}& f_\mathrm{i} M_\mathrm{total,0}(\bar{r}_\mathrm{i}) r^\prime_\mathrm{i} + f_\mathrm{i} 4 \pi \bar{r}_\mathrm{i}^2 \rho_\mathrm{total,0}(\bar{r}_\mathrm{i}) {\mathrm{d} \bar{r}_\mathrm{i}\over\mathrm{d} r_\mathrm{i}} r_\mathrm{i} r^\prime_\mathrm{i} \nonumber \\ & = f_\mathrm{f} M_\mathrm{total,0}(\bar{r}_\mathrm{i}) + f_\mathrm{i} 4 \pi \bar{r}_\mathrm{i}^2 \rho_\mathrm{total,0}(\bar{r}_\mathrm{i}) {\mathrm{d} \bar{r}_\mathrm{i}\over\mathrm{d} r_\mathrm{i}} r_\mathrm{f} r^\prime_\mathrm{i} \nonumber \\ & + V^2_\mathrm{b}(\bar{r}_\mathrm{f}) \bar{r}_\mathrm{f} / \mathrm{G} + V^2_\mathrm{b}(\bar{r}_\mathrm{f}) {\mathrm{d}\bar{r}_\mathrm{f}\over \mathrm{d} r_\mathrm{f}} r_\mathrm{f}/ \mathrm{G} + {\mathrm{d}V^2_\mathrm{b}\over\mathrm{d} \bar{r}_\mathrm{f}}(\bar{r}_\mathrm{f}) {\mathrm{d}\bar{r}_\mathrm{f}\over \mathrm{d} r_\mathrm{f}} \bar{r}_\mathrm{f} r_\mathrm{f}/ \mathrm{G},\end{split}\]

where

\[{\mathrm{d}\bar{r} \over \mathrm{d} r} = A \left({r \over r_0}\right)^{\omega-1},\]

and which can then be solved numerically for \(r^\prime_\mathrm{i}\).

Methods

  • setBaryonicComponent — Set baryonic components in the mass distribution.

  • computeFactors — Compute factors needed for solving adiabatic contraction.

  • radiusOrbitalMean — Compute the orbit-averaged radius for dark matter.

  • radiusOrbitalMeanDerivative — Compute the derivative of the orbit-averaged radius for dark matter.

  • radiusInitial — Compute the initial radius in the dark matter profile.

  • radiusInitialDerivative — Compute the derivative of the initial radius in the dark matter profile.

Parameters

  • [A] (real; default 0.80d0) — The parameter \(A\) appearing in the Gnedin et al. (2004) adiabatic contraction algorithm.

  • [omega] (real; default 0.77d0) — The parameter \(\omega\) appearing in the Gnedin et al. (2004) adiabatic contraction algorithm.

  • [radiusFractionalPivot] (real; default 1.0d0) — The pivot radius (in units of the virial radius), \(r_0\), appearing in equation ((15)).

  • [radiusVirial] (real) — The virial radius, \(r_\mathrm{v}\), appearing in equation ((15)).

  • [darkMatterFraction] (real) — The universal cosmic dark matter fraction \(\Omega_\mathrm{DM}/\Omega_\mathrm{M}\), used to define the initial dark matter fraction in the halo before adiabatic contraction.

  • [darkMatterDistributedFraction] (real) — The fraction of matter assumed to be distributed as the dark matter.

  • [massFractionInitial] (real) — The fraction of matter assumed to be initially distributed as the dark matter.

  • [toleranceRelative] (real; default 1.0d-2) — The relative tolerance to use in solving for the initial radius in the adiabatically-contracted dark matter profile.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalDecaying

Decaying dark matter halo profiles.

Methods

  • lifetime — Return the lifetime of the dark matter particle.

  • massSplitting — Return the mass splitting of the decay.

  • velocityKick — Return the velocity kick imparted by the decay.

Parameters

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

  • [toleranceRelativePotential] (real; default 1.0d-3) — The relative tolerance to use in numerical solutions for the gravitational potential.

  • [tolerateEnclosedMassIntegrationFailure] (boolean; default .false.) — If true, tolerate failures to find the mass enclosed as a function of radius.

  • [tolerateVelocityMaximumFailure] (boolean; default .false.) — If true, tolerate failures to find the radius of the maximum circular velocity.

  • [toleratePotentialIntegrationFailure] (boolean; default .false.) — If true, tolerate failures to compute the potential.

  • [radiusEscape] (real) — The radius beyond which a particle is assumed to have escaped the potential.

  • [time] (real) — The time at which decays should be evaluated.

massDistributionSphericalDecorator

An abstract mass distribution class for decorators of other mass distributions. “Fallthrough” functions are provided that all the decorated class or numerical solutions to be used.

Methods

  • massEnclosedBySphereNonAnalytic — Compute mass enclosed by a sphere for non-analytic cases.

  • radiusEnclosingMassNonAnalytic — Compute radius enclosing a mass for non-analytic cases.

  • densityGradientRadialNonAnalytic — Compute radial density gradient for non-analytic cases.

  • densityRadialMomentNonAnalytic — Compute radial density moment for non-analytic cases.

  • radiusEnclosingDensityNonAnalytic — Compute radius enclosing a mean density for non-analytic cases.

  • radiusFromSpecificAngularMomentumNonAnalytic — Compute radius from specific angular momentum for non-analytic cases.

  • fourierTransformNonAnalytic — Compute Fourier transform for non-analytic cases.

  • radiusFreefallNonAnalytic — Compute freefall radius for non-analytic cases.

  • radiusFreefallIncreaseRateNonAnalytic — Compute freefall radius growth rate for non-analytic cases.

  • potentialNonAnalytic — Compute gravitational potential for non-analytic cases.

  • energyNonAnalytic — Compute total energy for non-analytic cases.

  • energyPotentialNonAnalytic — Compute gravitational potential energy for non-analytic cases.

  • energyKineticNonAnalytic — Compute kinetic energy for non-analytic cases.

  • useUndecorated — Return true if the undecorated solution (instead of a numerical solution) should be used.

massDistributionSphericalFiniteResolution

A mass distribution class which applies a finite resolution to some other mass distribution class, typically to mimic the effects of finite resolution in an N-body simulation. Specifically, the density profile is given by

\[\rho(r) = \rho^\prime(r) \left( 1 + \left[ \frac{\Delta x}{r} \right]^2 \right)^{-1/2},\]

where \(\Delta x\) is the larger of the resolution length, [lengthResolution], and the radius in the original profile enclosing the mass resolution, [massResolution].

Note that this choice was constructed to give a constant density core in an NFW density profile. For a density profile, \(\rho^\prime(r)\), which rises more steeply than \(r^{-1}\) as \(r \rightarrow 0\) we will still have a cuspy density profile under this model.

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

  • [lengthResolution] (real) — The spatial resolution length scale (in Mpc) below which the underlying density profile is softened to a flat core, mimicking the finite force resolution of an N-body simulation.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalFiniteResolutionNFW

A mass distribution class which applies a finite resolution to an NFW density profile, typically to mimic the effects of finite resolution in an N-body simulation. Specifically, the density profile is given by

\[\rho(r) = \rho_\mathrm{NFW}(r) \left( 1 + \left[ \frac{\Delta x}{r} \right]^2 \right)^{-1/2},\]

where \(\Delta x\) is the larger of the resolution length, [lengthResolution], and the radius in the original profile enclosing the mass resolution, [massResolution].

Methods

  • radiusEnclosingDensityTabulate — Tabulate the radius enclosing a given density as a function of density and core radius.

  • radiusEnclosingMassTabulate — Tabulate the radius enclosing a given mass as a function of density and core radius.

  • energyTabulate — Tabulate the energy as a function of concentration and core radius.

  • densityScaleFree — The density of the profile in units where the mass and scale length are both 1.

  • massEnclosedScaleFree — The mass enclosed of the profile in units where the mass and scale length are both 1.

  • storeDensityTable — Store the tabulated radius-enclosing-density to file.

  • restoreDensityTable — Attempt to restore the tabulated radius-enclosing-density from file, returning true if successful.

  • storeMassTable — Store the tabulated radius-enclosing-mass to file.

  • restoreMassTable — Attempt to restore the tabulated radius-enclosing-mass from file, returning true if successful.

  • storeEnergyTable — Store the tabulated energy to file.

  • restoreEnergyTable — Attempt to restore the tabulated energy from file, returning true if successful.

  • suffix — Return a file name suffix (containing a source code digest.

Parameters

  • [lengthResolution] (real) — The spatial resolution length scale (in Mpc) of the N-body simulation being modeled; sets the minimum effective radius below which the NFW density profile is softened.

  • [radiusScale] (real) — The NFW scale radius (in Mpc) at which the density profile transitions from the inner \(\rho \propto r^{-1}\) slope to the outer \(\rho \propto r^{-3}\) slope.

  • [radiusVirial] (real) — The virial radius (in Mpc) of the halo, defining the outer boundary of the NFW profile at which the mean enclosed density equals the virial overdensity threshold.

  • [mass] (real) — The total mass (in \(\mathrm{M}_\odot\)) enclosed within the virial radius, used together with radiusScale and radiusVirial to normalize the NFW density profile.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalHeated

A mass distribution class in which the distribution starts out with a density profile defined by another massDistribution. This profile is then modified by heating, under the assumption that the energy of a shell of mass before and after heating are related by

\[-{ \mathrm{G} M^\prime(r^\prime) \over r^\prime } = -{ \mathrm{G} M(r) \over r } + 2 \epsilon(r),\]

where \(M(r)\) is the mass enclosed within a radius \(r\), and \(\epsilon(r)\) represents the specific heating in the shell initially at radius \(r\). Primes indicate values after heating, while unprimed variables indicate quantities prior to heating. With the assumption of no shell crossing, \(M^\prime(r^\prime)=M(r)\) and this equation can be solved for \(r\) given \(r^\prime\) and \(\epsilon(r)\).

Not all methods have analytic solutions for this profile. If [nonAnalyticSolver]\(=\)fallThrough then attempts to call these methods in heated profiles will simply return the result from the unheated profile, otherwise a numerical calculation is performed.

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

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

  • [tolerateVelocityMaximumFailure] (boolean; default .false.) — If true, tolerate failures to find the radius of the peak in the rotation curve.

  • [tolerateEnclosedMassIntegrationFailure] (boolean; default .false.) — If true, tolerate failures to find the mass enclosed as a function of radius.

  • [toleratePotentialIntegrationFailure] (boolean; default .false.) — If true, tolerate failures to compute the potential.

  • [fractionRadiusFinalSmall] (real; default 1.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; default 1.0d-3) — The maximum allowed relative tolerance to use in numerical solutions for the gravitational potential in dark-matter-only density profiles before aborting.

massDistributionSphericalHeatedMonotonic

A mass distribution class in which dark matter halos start out with a density profile defined by another massDistributionClass. This profile is then modified by heating, under the assumption that the energy of a shell of mass before and after heating are related by

\[-{ \mathrm{G} M^\prime(r^\prime) \over r^\prime } = -{ \mathrm{G} M(r) \over r } + 2 \epsilon(r),\]

where \(M(r)\) is the mass enclosed within a radius \(r\), and \(\epsilon(r)\) represents the specific heating in the shell initially at radius \(r\). Primes indicate values after heating, while unprimed variables indicate quantities prior to heating.

The above equation can be re-written as

\[-r^{\prime -1} = -r^{-1} + \xi(r),\]

where \(\xi(r) = 2 \epsilon(r)/[\mathrm{G} M(r)/r]\) measures the perturbation to the shell. To avoid shell crossing a monotonicity relation \(r_1 < r_2 \implies \xi(r_1) \le \xi(r_2)\) is enforced by starting at large radius and stepping inward, enforcing the condition in the next innermost shell as necessary.

Not all methods have analytic solutions for this profile. If [nonAnalyticSolver]\(=\)fallThrough then attempts to call these methods in heated profiles will simply return the result from the unheated profile, otherwise a numerical calculation is performed.

Methods

  • computeSolution — Compute a solution for the heated profile.

Parameters

  • [radiusVirial] (real) — The virial radius (in Mpc) of the halo, defining the outer boundary up to which the monotonic heating calculation tracks the energy-ordered shell mapping from the initial to heated density profile.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalScaler

A mass distribution class for scaling spherical mass distributions. Specifically, the density at position \(\mathbf{x}\) is given by

\[\rho(\mathbf{x}) = \frac{f_\mathrm{M}}{f_\mathrm{r}^3} \rho^\prime(\mathbf{x}/f_\mathrm{r}),\]

where \(\rho^\prime(\mathbf{x})\) is the original mass distribution, and \(f_\mathrm{r}=\)[factorScalingLength], and \(f_\mathrm{M}=\)[factorScalingMass].

Methods

  • initialize — (Re)initialize the scaling factors of the scaled mass distribution.

Parameters

  • [factorScalingLength] (real) — The factor by which to scale lengths.

  • [factorScalingMass] (real) — The factor by which to scale the mass.

massDistributionSphericalShellOverdensities

A mass distribution class which overlays overdense spherical shells on another mass distribution.

The intent is to mimic the effects of a 3-D distribution of spherical clouds, but along a single sight-line from the center of a spherically symmetric mass distribution. This is useful in computing radiative transfer through cloudy media for spherically symmetric systems.

In the 3-D case clouds are defined by a radius, \(r_\mathrm{c}\), a volume filling factor, \(f_\mathrm{v}\), and a density contrast, \(\Delta_\mathrm{c}\). For this case of spherical shells the same quantities are used, except that the radius is referred to as the “half-width” of the shell, but is still labeled \(r_\mathrm{c}\).

In the 3-D case the number density of clouds is

\[n_\mathrm{c} = {f_\mathrm{v} \over (4 \pi / 3 ) r_\mathrm{c}^3}.\]

Along a sightline of length \(l\) (specified by the [radiusBoundary] parameter) the number of clouds intersected is

\[N_\mathrm{c} = n_\mathrm{c} l 4 \pi r_\mathrm{c}^2 = 3 f_\mathrm{v} {l \over r_\mathrm{c}}.\]

This last relation is used to determine the number of spherical shells to generate. These shells are then placed randomly in radius between \(0\) and \(l\). Each shell is also assigned an impact parameter, \(b\), meant to represent the distance of the center of the notional spherical cloud from the line of sight. The effective half-width of the shell is then \(\sqrt{r_\mathrm{c}^2-b^2}\).

Parameters

  • [halfWidth] (real) — The half-width (in Mpc) of each overdense spherical shell, representing the effective radius of the notional spherical cloud projected along the line of sight after accounting for a random impact parameter.

  • [densityContrast] (real) — The density contrast of the overdense spherical shells relative to the smooth underlying mass distribution, i.e.\(\Delta_\mathrm{c} = \rho_\mathrm{shell} / \rho_\mathrm{background}\).

  • [volumeFillingFactor] (real) — The fraction of the total sightline volume occupied by overdense shells; together with halfWidth determines the number of shells \(N_\mathrm{c} = 3 f_\mathrm{v} l / r_\mathrm{c}\) along the line of sight.

  • [radiusBoundary] (real) — The boundary radius within which to populate shells.

  • [dimensionless] (boolean; default .true.) — If true the shell overdensities profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalSIDM

An abstract mass distribution class for spherical SIDM models. Provides a method to compute interaction radii.

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.

massDistributionSphericalSIDMCoreNFW

A mass distribution class implementing a cored-NFW dark matter halo profile to approximate the effects of SIDM based on the model of Jiang et al. (2023). The profile is defined by the enclosed mass, with (Jiang et al., 2023):

\[M(r) = M_\mathrm{NFW}(r) \mathrm{tanh}\left(\frac{r}{r_\mathrm{c}}\right),\]

where \(r_\mathrm{c} = \alpha r_1\) is a characteristic core size related to the interaction radius \(r_1\) by a constant factor \(\alpha =\)[factorRadiusCore].

Methods

  • radiusCore — Computes the core radius of halo.

Parameters

  • [timeAge] (real) — The age of the halo (in Gyr) since its formation, used to compute how long SIDM self-interactions have been active in determining the size of the dark matter core.

  • [velocityRelativeMean] (real) — Mean relative velocity to calculate self interaction cross section.

  • [factorRadiusCore] (real; default 0.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.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalSIDMIsothermal

A mass distribution class for self-interacting dark matter following the “isothermal” model of Jiang et al. (2023). This model assumes that the dark matter within the interaction radius, \(r_1\), has thermalized and can therefore be described by a constant velocity dispersion, \(\sigma_0\). Under this assumption the spherical Jeans equation has a solution of the form:

\[\rho(r) = \rho_0 \exp\left[-\frac{\phi(r)}{\sigma_0^2}\right],\]

where \(\rho(r)\) is the density \(\rho_0\) is the density at \(r=0\), and the gravitational potential satisfies (Jiang et al., 2023):

\[\nabla^2 \phi(r) = 4 \pi \mathrm{G} \rho_0 \exp \left( - \frac{\phi(r)}{\sigma_0^2} \right).\]

This second-order differential equation is solved using the boundary conditions \(\phi(r=0)=0\) and \(\mathrm{d}\phi/\mathrm{d}r(r=0)=0\). The values of \(\rho_0\) and \(\sigma_0\) are then found by minimizing a function

\[\delta^2(\rho_0,\sigma_0) = \left[ \frac{\rho(r_1)}{\rho^\prime(r_1)} - 1 \right]^2 + \left[ \frac{M(r_1)}{M^\prime(r_1)} - 1 \right]^2,\]

where \(M(r)\) is the mass contained within radius \(r\), and primes indicate the profile prior to SIDM thermalization.

This can be expressed in a convenient dimensionless form. We define \(x=r/r_1\), \(y=\rho/\rho_1\), \(z=\sigma/\sigma_1\), where

\[\sigma_1^2 = \frac{4 \pi}{3} \mathrm{G} \rho_1 r_1^2 \xi,\]

and we define \(\xi\) through the relation:

\[M_1 = \xi \frac{4 \pi}{3} \rho_1 r_1^3.\]

Using these definitions we can define a dimensionless potential, \(\Phi(r) = \phi(r) / \sigma_1^2\). The above differential equation can then be written as

\[\nabla^{\prime 2} \Phi = \frac{3}{\xi} y_0 \exp\left[ - \frac{\Phi}{z_0^2} \right] ,\]

where \(\nabla^{\prime 2}\) indicates the Laplacian with respect to coordinate \(x\). Written in this form it is straightforward to see that this equation has three parameters, \(\xi\), \(y_0\), and \(z_0\). The value of \(\xi\) is determined from the initial (pre-thermalization) density profile. We then have two constraints at \(x=1\), namely \(y=1\) and \(m=M/M_1=1\). We can solve for the values of \(y_0\) and \(z_0\) which satisfy these constraints for a given \(\xi\). As a result, we can tabulate solutions \(y_0(\xi)\) and \(z_0(\xi)\) which are applicable to any initial density profile and depend only on the effective slope of the density profile inside \(r_1\), since if \(\rho \propto r^\alpha\) then \(\xi = 1/(1+\alpha/3)\), such that \(\alpha=0\) (the largest physically-allowed value of \(\alpha\)) implies \(\xi=1\).

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

  • [timeAge] (real) — The age of the halo (in Gyr) since its formation, determining the total time available for SIDM self-interactions to thermalize the inner halo and produce an isothermal core.

  • [velocityRelativeMean] (real) — Mean relative velocity to calculate self interaction cross section.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalSIDMIsothermalBaryons

Mass distributions for self-interacting dark matter following the “isothermal” model of Jiang et al. (2023). This model assumes that the dark matter within the interaction radius, \(r_1\), has thermalized and can therefore be described by a constant velocity dispersion, \(\sigma_0\). Under this assumption the spherical Jeans equation has a solution of the form:

\[\rho(r) = \rho_0 \exp\left[-\frac{\phi(r)}{\sigma_0^2}\right],\]

where \(\rho(r)\) is the density \(\rho_0\) is the density at \(r=0\), and the gravitational potential satisfies (Jiang et al., 2023):

\[\nabla^2 \phi(r) = 4 \pi \mathrm{G} \left[ \rho_0 \exp \left( - \frac{\phi(r)}{\sigma_0^2} \right) + \rho_\mathrm{b}(r) \right],\]

where \(\rho_\mathrm{b}(r)\) is the density of the baryonic component. This second-order differential equation is solved using the boundary conditions \(\phi(r=0)=0\) and \(\mathrm{d}\phi/\mathrm{d}r(r=0)=0\). The values of \(\rho_0\) and \(\sigma_0\) are then found by minimizing a function

\[\delta^2(\rho_0,\sigma_0) = \left[ \frac{\rho(r_1)}{\rho^\prime(r_1)} - 1 \right]^2 + \left[ \frac{M(r_1)}{M^\prime(r_1)} - 1 \right]^2,\]

where \(M(r)\) is the mass contained within radius \(r\), and primes indicate the profile prior to SIDM thermalization.

Methods

  • setBaryonicComponent — Set baryonic components in the mass distribution.

  • computeSolution — Compute a solution for the isothermal core of a SIDM halo.

Parameters

  • [timeAge] (real) — The age of the halo (in Gyr) since its formation, setting the time available for SIDM interactions to thermalize the dark matter core while the baryonic potential influences the resulting density profile.

  • [velocityRelativeMean] (real) — Mean relative velocity to calculate self interaction cross section.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — 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.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalTabulated

An abstract mass distribution class for tabulated spherically symmetric distributions.

Methods

  • parameters — Return parameters of the current mass distribution.

  • factoryTabulation — Return an instance of the class with the given tabulation parameters.

  • suffix — Return a suffix to append to table file names.

  • fileRead — Read tabulation data from file.

  • fileWrite — Write tabulation data to file.

  • tabulate — (Re)tabulate the mass distribution.

  • interpolate — Interpolate in the mass distribution.

  • isTabulating — Return true if the thread associated with the object is tabulating.

  • velocityDispersion1D — Compute the 1D velocity dispersion at the given coordinates.

  • initialize — Initialize the container (specifically the number of parameters).

  • nameParameter — Return the name of the index parameter for a given tabulation.

  • countParameters — Return the number of parameters for a given tabulation.

massDistributionSphericalTruncated

Implements a mass distribution in which the density is given by

\[\begin{split}\rho(r) = \rho^\prime(r) \left\{ \begin{array}{ll} 1 & \hbox{ if } r < r_\mathrm{min}, \\ 0 & \hbox{ if } r > r_\mathrm{max}, \\ 1-3 x^2 + 2x^3 & \hbox{otherwise,} \end{array} \right.\end{split}\]

where

\[x=\frac{r-r_\mathrm{min}}{r_\mathrm{max}-r_\mathrm{min}},\]

\(\rho^\prime(r)\) is some other density profile, \(r_\mathrm{min}=\)[radiusTruncateMinimum], and \(r_\mathrm{max}=\)[radiusTruncateMaximum].

Methods

  • truncationFunction — Compute the truncation fraction (and related quantities) from the radius.

Parameters

  • [radiusTruncateMinimum] (real) — The minimum radius to begin truncating the density profile.

  • [radiusTruncateMaximum] (real) — The maximum radius to finish truncating the density profile.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — Selects how solutions are computed when no analytic solution is available.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionSphericalTruncatedExponential

Implements an exponentially truncated mass distribution Kazantzidis et al. (2006) in which the density is given by

\[\begin{split}\rho(r) = \rho^\prime(r_\mathrm{min}) \left\{ \begin{array}{ll} 1 & \hbox{ if } r < r_\mathrm{min}, \\ \rho^\prime(r_\mathrm{min} x^\kappa \exp\left(-\frac{x-1}{x_\mathrm{max}}\right) & \hbox{otherwise,} \end{array} \right.\end{split}\]

where \(x = r/r_\mathrm{min}\), \(x_\mathrm{decay} = r_\mathrm{decay}/r_\mathrm{min}\), \(\rho^\prime(r)\) is some other density profile, \(r_\mathrm{min}=\)[radiusTruncateMinimum], \(r_\mathrm{decay}=\)[radiusTruncateDecay], and

\[\kappa = \frac{r_\mathrm{min}}{r_\mathrm{decay}} + \frac{\mathrm{d}\log \rho^\prime}{\mathrm{d}\log r}(r_\mathrm{min})\]

is chosen to ensure that the logarithmic gradient of the density profile is continuous across \(r=r_\mathrm{min}\).

Parameters

  • [radiusTruncateMinimum] (real) — The minimum radius to begin truncating the density profile.

  • [radiusTruncateDecay] (real) — The exponential decay scale for truncating the density profile.

  • [nonAnalyticSolver] (string; one of fallThrough, numerical; default fallThrough) — Selects how solutions are computed when no analytic solution is available.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.

massDistributionZero

A mass distribution class that returns zero density, zero enclosed mass, and zero potential everywhere; useful as a null placeholder when no mass component is present in a given region.

Parameters

  • [dimensionless] (boolean; default .true.) — If true the null profile is considered to be dimensionless.

massDistributionZhao1996

A mass distribution class which implements the (Zhao, 1996) density profile:

\[\rho_\mathrm{dark matter}(r) = \rho_0 \left({r\over r_\mathrm{s}}\right)^{-\gamma} \left(1+[{r\over r_\mathrm{s}}]^\alpha\right)^{-(\beta-\gamma)/\alpha}.\]

The mass enclosed within radius \(r\) is given by

\[M(<r) = \frac{4 \pi}{3-\gamma} \rho_0 r_\mathrm{s}^{3-\gamma} {}_2F_1\left[\left(\frac{3-\gamma}{\alpha}\right),\left(\frac{-\beta+\gamma}{\alpha},1+\frac{3-\gamma}{\alpha}\right),-r^\alpha\right]\]

where \(R=r/r_\mathrm{s}\). The associated gravitational potential is

\[\Phi(r) = - \frac{4 \pi \mathrm{G}}{-3+\gamma} \rho_0 r^{2-\gamma} \frac{\Gamma[(3+\alpha-\gamma)/\alpha]}{\Gamma[(3-\gamma)/\alpha]} \left( \Gamma\left[\frac{2-\gamma}{\alpha}\right] {}_p\tilde{F}F_q\left[\left\{\frac{2-\gamma}{\alpha},\frac{\beta-\gamma}{\alpha}\right\},\left\{\frac{2+\alpha-\gamma}{\alpha}\right\},-r\alpha\right] - \Gamma\left[\frac{3-\gamma}{\alpha}\right] {}_p\tilde{F}F_q\left[\left\{\frac{3-\gamma}{\alpha},\frac{\beta-\gamma}{\alpha}\right\},\left\{\frac{3+\alpha-\gamma}{\alpha}\right\},-r\alpha\right] \right).\]

Methods

  • timeFreefallTabulate — Tabulate the freefall time as a function of radius in a scale-free Zhao1996 mass distribution.

Parameters

  • [alpha] (real) — The parameter \(\alpha\) of the Zhao1996 profile.

  • [beta] (real) — The parameter \(\beta\) of the Zhao1996 profile.

  • [gamma] (real; < 3.0) — The parameter \(\gamma\) of the Zhao1996 profile.

  • [densityNormalization] (real; default (3.0d0-gamma)/4.0d0/Pi/Hypergeometric_2F1([(3.0d0-gamma)/alpha,(beta-gamma)/alpha],[1.0d0+(3.0d0-gamma)/alpha],-1.0d0)) — The density normalization of the Zhao1996 profile.

  • [scaleLength] (real; default 1.0d0) — The scale radius of the Zhao1996 profile.

  • [mass] (real; default 1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the Zhao (1996) profile, used to set the density normalization \(\rho_0\) when densityNormalization is not supplied directly.

  • [radiusOuter] (real) — The outer radius of the Zhao1996 profile.

  • [dimensionless] (boolean; default .true.) — If true the Zhao1996 profile is considered to be dimensionless.

  • [componentType] (string; one of all, disk, spheroid, hotHalo, nuclearStarCluster, coldHalo, darkHalo, blackHole, darkMatterOnly, none, unknown; default unknown) — The component type that this mass distribution represents.

  • [massType] (string; one of all, dark, baryonic, galactic, gaseous, stellar, blackHole, unknown; default unknown) — The mass type that this mass distribution represents.