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¶
setKinematicsDistribution→voidSet the kinematics distribution for this mass distribution.
class(kinematicsDistributionClass), intent(in ) :: kinematicsDistribution_
kinematicsDistribution→class(kinematicsDistributionClass)Get a pointer to the kinematics distribution for this mass distribution.
setTypes→voidSet the component and mass types of the mass distribution.
type(enumerationComponentTypeType), intent(in ), optional :: componentTypetype(enumerationMassTypeType ), intent(in ), optional :: massType
subset→class(massDistributionClass)Return the subset of the mass distribution matching the given componentType and
massType.type(enumerationComponentTypeType), intent(in ), optional :: componentTypetype(enumerationMassTypeType ), intent(in ), optional :: massType
describe→voidDisplay a description of the mass distribution.
matches→logicalReturn true if this mass distribution matches the specified component and mass type.
type(enumerationComponentTypeType), intent(in ), optional :: componentTypetype(enumerationMassTypeType ), intent(in ), optional :: massType
symmetry→type(enumerationMassDistributionSymmetryType)Return the symmetry of the distribution.
isSphericallySymmetric→logicalReturn true if the distribution is spherically symmetric.
assumeMonotonicDecreasingSurfaceDensity→logicalReturn true if the distribution can be assumed to have a monotonically decreasing surface density.
isDimensionless→logicalReturn true if the distribution is dimensionless.
massTotal→double precisionReturn the total mass of the distribution.
acceleration→double precision, dimension(3)Return the gravitational acceleration due to the distribution at the given coordinates.
class(coordinate), intent(in ) :: coordinates
tidalTensor→type(tensorRank2Dimension3Symmetric)Return the gravitational tidal tensor due to the distribution at the given coordinates.
class(coordinate), intent(in ) :: coordinates
density→double precisionReturn the density of the distribution at the given coordinates.
class(coordinate), intent(in ) :: coordinates
densitySphericalAverage→double precisionReturn the average density on a spherical shell of the given radius.
double precision, intent(in ) :: radius
densityGradientRadial→double precisionReturn the radial gradient of density of the distribution at the given coordinates.
class (coordinate), intent(in ) :: coordinateslogical , intent(in ), optional :: logarithmic
potential→double precisionReturn the gravitational potential of the distribution at the given coordinates.
class(coordinate ), intent(in ) :: coordinatestype (enumerationStructureErrorCodeType), intent( out), optional :: status
potentialIsAnalytic→logicalReturn true if the gravitational potential for this distribution has an analytic form.
potentialDifference→double precisionReturn the difference in that gravitational potential of the distribution between the given coordinates.
class(coordinate ), intent(in ) :: coordinates1, coordinates2type (enumerationStructureErrorCodeType), intent( out), optional :: status
potentialDifferenceNumerical→double precisionReturn the difference in that gravitational potential of the distribution between the given coordinates using a numerical calculation.
class(coordinate ), intent(in ) :: coordinates1, coordinates2type (enumerationStructureErrorCodeType), intent( out), optional :: status
massEnclosedBySphere→double precisionReturn the mass enclosed in the distribution by a sphere of given radius.
double precision, intent(in ) :: radius
massEnclosedByCylinder→double precisionReturn the mass enclosed in the distribution by a cylinder of given radius.
double precision, intent(in ) :: radius
radiusEnclosingMass→double precisionReturn the radius enclosing a specified mass.
double precision, intent(in ), optional :: mass, massFractional
radiusEnclosingMassNumerical→double precisionReturn the radius enclosing a specified mass using a numerical calculation.
double precision, intent(in ), optional :: mass, massFractional
radiusCylindricalEnclosingMass→double precisionReturn the cylindrical radius enclosing a specified mass.
double precision, intent(in ), optional :: mass, massFractional
radiusCylindricalEnclosingMassNumerical→double precisionReturn the cylindrical radius enclosing a specified mass using a numerical calculation.
double precision, intent(in ), optional :: mass, massFractional
radiusEnclosingDensity→double precisionReturn the radius enclosing a specified density.
double precision, intent(in ) :: densitydouble precision, intent(in ), optional :: radiusGuess
radiusEnclosingDensityNumerical→double precisionReturn the radius enclosing a specified density using a numerical calculation.
double precision, intent(in ) :: densitydouble precision, intent(in ), optional :: radiusGuess
radiusEnclosingSurfaceDensity→double precisionReturn the radius enclosing a specified surface density.
double precision, intent(in ) :: densitySurfacedouble precision, intent(in ), optional :: radiusGuess
radiusEnclosingSurfaceDensityNumerical→double precisionReturn the radius enclosing a specified surface density using a numerical calculation.
double precision, intent(in ) :: densitySurfacedouble precision, intent(in ), optional :: radiusGuess
radiusFromSpecificAngularMomentum→double precisionReturn the radius corresponding to a given specific angular momentum.
double precision, intent(in ) :: angularMomentumSpecific
radiusFromSpecificAngularMomentumNumerical→double precisionReturn the radius corresponding to a given specific angular momentum using a numerical calculation.
double precision, intent(in ) :: angularMomentumSpecific
rotationCurve→double precisionReturn the rotation curve at the given radius.
double precision, intent(in ) :: radius
rotationCurveGradient→double precisionReturn the rotation curve gradient, \(\mathrm{d}V^2/\mathrm{d}r\), at the given radius.
double precision, intent(in ) :: radius
velocityRotationCurveMaximum→double precisionReturn the maximum velocity in the rotation curve.
radiusRotationCurveMaximum→double precisionReturn the radius of the maximum velocity in the rotation curve.
radiusRotationCurveMaximumNumerical→double precisionReturn the radius of the maximum velocity in the rotation curve.
surfaceDensity→double precisionReturn the surface density at the given coordinates.
class(coordinate), intent(in ) :: coordinates
surfaceDensityRadialMoment→double precisionReturn the surface density at the given coordinates.
double precision, intent(in ) :: momentdouble precision, intent(in ), optional :: radiusMinimum, radiusMaximumlogical , intent( out), optional :: isInfinite
densityRadialMoment→double precisionReturn the radial moment of the distribution.
double precision, intent(in ) :: momentdouble precision, intent(in ), optional :: radiusMinimum, radiusMaximumlogical , intent( out), optional :: isInfinite
densitySquareIntegral→double precisionReturn the integral over the square of the density of the distribution.
double precision, intent(in ), optional :: radiusMinimum, radiusMaximumlogical , intent( out), optional :: isInfinite
chandrasekharIntegral→double precision, dimension(3)Return the Chandrasekhar integral of the distribution.
class (massDistributionClass), intent(inout) :: massDistributionEmbedding, massDistributionPerturberdouble precision , intent(in ) :: massPerturberclass (coordinate ), intent(in ) :: coordinates , velocity
radiusFreefall→double precisionReturn the radius at which the freefall time to the center equals the given
time.double precision, intent(in ) :: time
radiusFreefallIncreaseRate→double precisionReturn the rate of increase of the freefall radius corresponding to the given
time.double precision, intent(in ) :: time
fourierTransform→double precisionReturn the spherically-symmetrized Fourier transform of the density profile at the given wavenumber.
double precision, intent(in ) :: radiusOuter , wavenumber
energy→double precisionReturn the total energy of the distribution within the given radius.
double precision , intent(in ) :: radiusOuterclass (massDistributionClass), intent(inout), target :: massDistributionEmbedding
positionSample→double precision, dimension(3)Return a position sampled from the distribution.
class(randomNumberGeneratorClass ), intent(inout) :: randomNumberGenerator_
solverSet→voidSet a sub-module scope pointers on a stack to allow recursive calls to functions.
double precision, intent(in ), dimension(3), optional :: position1 , position2 , vectorUnitdouble precision, intent(in ) , optional :: massTarget, densityTarget, angularMomentumSpecificTarget, densitySurfaceTarget, separation
solverUnset→voidUnset 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; default2.0d0/3.0d0) — The value \(\beta\) in a \(\beta\)-model mass distribution.[densityNormalization](real; default0.0d0) — The density normalization of a \(\beta\)-model mass distribution.[mass](real; default0.0d0) — The mass of a \(\beta\)-model mass distribution.[outerRadius](real; default0.0d0) — The outer radius of a \(\beta\)-model mass distribution.[coreRadius](real; default0.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.
massDistributionBurkert¶
A mass distribution class which implements the (Burkert, 1995) density profile:
The mass enclosed within radius \(r\) is given by
where \(R=r/r_\mathrm{s}\). The associated gravitational potential is
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
Methods
timeFreefallTabulate— Tabulate the freefall time as a function of radius in a scale-free Burkert mass distribution.
Parameters
[densityNormalization](real; default1.0d0/Pi/(log(8.0d0)-Pi/2.0d0)) — The density normalization of the Burkert profile.[scaleLength](real; default1.0d0) — The scale radius of the Burkert profile.[mass](real; default1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the Burkert profile, used to set the density normalization \(\rho_0\) whendensityNormalizationis 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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:
Parameters
[densityNormalization](real; default1.0d0/2.0d0/Pi/(log(4.0d0)-1.0d0)) — The density normalization of the cored NFW profile.[radiusScale](real; default1.0d0) — The scale radius of the cored NFW profile.[radiusCore](real; default1.0d0) — The core radius of the cored NFW profile.[mass](real; default1.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 ofdensityNormalization.[concentration](real; default1.0d0) — The concentration of the cored NFW profile.[radiusVirial](real; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.[toleranceRelativePotential](real; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.
massDistributionCuspNFW¶
The cusp-NFW mass distribution (Delos, 2025). The density profile is given by:
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; default1.0d0/2.0d0/Pi/(log(4.0d0)-1.0d0)) — The density normalization of the cusp-NFW profile.[radiusScale](real; default1.0d0) — The scale radius of the cusp-NFW profile.[y](real; default0.0d0) — The cusp amplitude parameter the cusp-NFW profile.[mass](real; default1.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 ofdensityNormalization.[concentration](real; default1.0d0) — The concentration of the cusp-NFW profile.[radiusVirial](real; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.[toleranceRelativePotential](real; default1.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
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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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:
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; defaultshapeParameter/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; default1.0d0) — The scale radius of the Einasto profile.[mass](real; default1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the Einasto profile, used to set the density normalization \(\rho_{-2}\) whendensityNormalizationis not supplied.[concentration](real; default1.0d0) — The concentration of the Einasto profile.[virialRadius](real; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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,
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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.[mass](real) — The total mass (in \(\mathrm{M}_\odot\)) of the hot gas distribution enclosed withinradiusOuter; 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; default0.137d0) — The scale height of the exponential disk profile.[scaleRadius](real; default1.0d0) — The scale radius of the exponential disk profile.[mass](real; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; default0.137d0) — The scale height of the Gaussian slab profile.[densityCentral](real; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.
massDistributionHernquist¶
A Hernquist (1990) mass distribution class.
Parameters
[densityNormalization](real; default0.5d0/Pi) — The density normalization of the Hernquist profile.[scaleLength](real; default1.0d0) — The scale radius of the Hernquist profile.[mass](real; default1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the Hernquist profile, used to set the density normalization whendensityNormalizationis not supplied directly.[dimensionless](boolean; default.true.) — If true the Hernquist profile is considered to be dimensionless.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.
massDistributionIsothermal¶
An isothermal mass distribution class in which the density profile is given by:
Parameters
[densityNormalization](real; default0.25d0/Pi) — The density normalization of the isothermal profile.[lengthReference](real; default1.0d0) — The reference radius (in Mpc) of the isothermal profile at whichdensityNormalizationis evaluated; sets the physical length scale of the \(\rho \propto r^{-2}\) profile.[mass](real; default1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) enclosed within the reference radius, used to normalize the \(\rho \propto r^{-2}\) density profile whendensityNormalizationis not supplied.[dimensionless](boolean; default.true.) — If true the isothermal profile is considered to be dimensionless.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; default1.0d0) — The \(a\) parameter of the MiyamotoNagai profile.[b](real; default1.0d0) — The \(b\) parameter of the MiyamotoNagai profile.[mass](real; default1.0d0) — The mass of the MiyamotoNagai profile.[dimensionless](boolean; default.true.) — If true the MiyamotoNagai profile is considered to be dimensionless.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.
massDistributionNFW¶
An NFW (Navarro et al., 1996) mass distribution class. The density profile is given by:
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; default1.0d0/2.0d0/Pi/(log(4.0d0)-1.0d0)) — The density normalization of the NFW profile.[scaleLength](real; default1.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; default1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) enclosed within the virial radius, used together withradiusScaleandradiusVirialto normalize the NFW density profile.[concentration](real; default1.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; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; default1.15d0) — The parameter \(\Gamma\) in the Patej and Loeb (2015) mass distribution.[densityNormalization](real; default0.0d0) — The density normalization of the Patej and Loeb (2015) mass distribution.[mass](real; default0.0d0) — The mass of the Patej and Loeb (2015) mass distribution.[radiusOuter](real; default0.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; default4.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; default1.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; default1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the S'ersic profile, used together withindexandradiusHalfMassto 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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:
Parameters
[beta](real; default4.0d0) — The value \(\beta\) in a SIDM parametric mass distribution.[densityNormalization](real; default0.0d0) — The density normalization of a SIDM parametric mass distribution.[radiusScale](real; default0.0d0) — The scale of a SIDM parametric mass distribution.[radiusCore](real; default0.0d0) — The core radius of a SIDM parametric mass distribution.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; 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.[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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — 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 ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; default1.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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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; default1.0d-2) — The tolerance with which to accept accelerated estimates.[factorRadiusMaximum](real; default3.0d0) — The maximum factor by which to interpolate in radius.[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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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
where \(\rho_\mathrm{halo}(r)\) is the halo mass distribution, \(\rho_\mathrm{accretion}(r)\) is the accretion flow mass distribution, and
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 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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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:
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
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:
where
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; default0.80d0) — The parameter \(A\) appearing in the Gnedin et al. (2004) adiabatic contraction algorithm.[omega](real; default0.77d0) — The parameter \(\omega\) appearing in the Gnedin et al. (2004) adiabatic contraction algorithm.[radiusFractionalPivot](real; default1.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; default1.0d-2) — The relative tolerance to use in solving for the initial radius in the adiabatically-contracted dark matter profile.[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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.[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 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
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 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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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
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 withradiusScaleandradiusVirialto normalize the NFW density profile.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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
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 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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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.) — Iftrue, tolerate failures to find the mass enclosed as a function of radius.[toleratePotentialIntegrationFailure](boolean; default.false.) — Iftrue, tolerate failures to compute the potential.[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.
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
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
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 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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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
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
Along a sightline of length \(l\) (specified by the [radiusBoundary] parameter) the number of clouds intersected is
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 withhalfWidthdetermines 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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):
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; 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.[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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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:
where \(\rho(r)\) is the density \(\rho_0\) is the density at \(r=0\), and the gravitational potential satisfies (Jiang et al., 2023):
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
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
and we define \(\xi\) through the relation:
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
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 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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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:
where \(\rho(r)\) is the density \(\rho_0\) is the density at \(r=0\), and the gravitational potential satisfies (Jiang et al., 2023):
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
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 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.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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
where
\(\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 offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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
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
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 offallThrough,numerical; defaultfallThrough) — Selects how solutions are computed when no analytic solution is available.[componentType](string; one ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — 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:
The mass enclosed within radius \(r\) is given by
where \(R=r/r_\mathrm{s}\). The associated gravitational potential is
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; default1.0d0) — The scale radius of the Zhao1996 profile.[mass](real; default1.0d0) — The total mass (in \(\mathrm{M}_\odot\)) of the Zhao (1996) profile, used to set the density normalization \(\rho_0\) whendensityNormalizationis 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 ofall,disk,spheroid,hotHalo,nuclearStarCluster,coldHalo,darkHalo,blackHole,darkMatterOnly,none,unknown; defaultunknown) — The component type that this mass distribution represents.[massType](string; one ofall,dark,baryonic,galactic,gaseous,stellar,blackHole,unknown; defaultunknown) — The mass type that this mass distribution represents.