.. _physics-darkMatterProfile: Dark Matter Halo Profiles ========================= Object providing the full dark matter halo density profile, including any adiabatic contraction or other modifications due to baryonic effects. This class returns a :galacticus-class:`massDistributionClass` object describing the mass distribution within the halo. It is distinct from the dark-matter-only (:galacticus-class:`darkMatterProfileDMOClass`) profile, which does not account for baryonic back-reaction on the dark matter. **Default implementation:** ``darkMatterProfileAdiabaticGnedin2004`` Methods ------- ``get`` → ``class(massDistributionClass)`` Return the mass distribution object describing the dark matter density profile of ``node``, accounting for baryonic effects such as adiabatic contraction. Optionally weight the profile by a specified quantity. * ``type (treeNode ), intent(inout), target :: node`` * ``type (enumerationWeightByType), intent(in ), optional :: weightBy`` * ``integer , intent(in ), optional :: weightIndex`` .. _physics-darkMatterProfileAccelerator: ``darkMatterProfileAccelerator`` -------------------------------- An accelerator class for non-dark-matter-only dark matter halo profiles that caches and interpolates previously computed profile quantities to speed up repeated evaluations. The relative tolerance for accepting cached interpolations is set by ``[toleranceRelative]``, and the maximum interpolation factor in radius by ``[factorRadiusMaximum]``. **Methods** * ``tabulate`` — Tabulate the mass function. **Parameters** * ``[toleranceRelative]`` (default ``1.0d-2``) — The relative tolerance within which a cached (accelerated) profile estimate is accepted; if the requested radius differs from the cached value by more than this fractional amount, the full profile calculation is recomputed. * ``[factorRadiusMaximum]`` (default ``3.0d0``) — The maximum radial extrapolation factor allowed when using cached profile values for the dark-matter-only profile; if the requested radius exceeds the cached radius by more than this factor, the full calculation is recomputed. * ``[toleranceRelative]`` (default ``1.0d-2``) — The toleranceRelative with which to accept accelerated estimates. * ``[factorRadiusMaximum]`` (default ``3.0d0``) — The maximum radial extrapolation factor allowed when using cached profile values; if the requested radius differs from the cached radius by more than this factor, the full profile is recomputed rather than interpolated. * ``[toleranceRelative]`` (default ``1.0d-2``) — The tolerance with which to accept accelerated estimates. * ``[factorRadiusMaximum]`` (default ``3.0d0``) — The maximum factor by which to interpolate in radius. * ``[nonAnalyticSolver]`` (default ``var_str('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]`` (default ``var_str('unknown')``) — The component type that this mass distribution represents. * ``[massType]`` (default ``var_str('unknown')``) — The mass type that this mass distribution represents. * ``[tablePointsPerDecade]`` (default ``10``) — The number of points per decade of wavenumber at which to tabulate the transfer function. .. _physics-darkMatterProfileAdiabaticGnedin2004: ``darkMatterProfileAdiabaticGnedin2004`` ---------------------------------------- A non-dark-matter-only dark matter profile class which applies adiabatic contraction to dark matter profiles using the model of :cite:t:`gnedin_response_2004`, building :galacticus-class:`massDistributionSphericalAdiabaticGnedin2004` objects. The shape of the contraction is governed by parameters ``[A]``, ``[omega]``, and the pivot radius ``[radiusFractionalPivot]``, with numerical accuracy controlled by ``[toleranceRelative]``. **(Default implementation)** **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]`` (default ``0.80d0``) — The parameter :math:`A` appearing in the :cite:t:`gnedin_response_2004` adiabatic contraction algorithm. * ``[omega]`` (default ``0.77d0``) — The parameter :math:`\omega` appearing in the :cite:t:`gnedin_response_2004` adiabatic contraction algorithm. * ``[radiusFractionalPivot]`` (default ``1.0d0``) — The pivot radius (in units of the virial radius), :math:`r_0`, appearing in equation (:eq:`eq-adiabaticContractionGnedinPowerLaw`). * ``[toleranceRelative]`` (default ``1.0d-2``) — The relative tolerance to use in solving for the initial radius in the adiabatically-contracted dark matter profile. * ``[nonAnalyticSolver]`` (default ``var_str('fallThrough')``) — Selects how solutions are computed when no analytic solution is available. If set to "``fallThrough``" then the solution ignoring adiabatic contraction by baryons is used, while if set to "``numerical``" then numerical solvers are used to find solutions. * ``[A]`` (default ``0.80d0``) — The parameter :math:`A` appearing in the :cite:t:`gnedin_response_2004` adiabatic contraction algorithm. * ``[omega]`` (default ``0.77d0``) — The parameter :math:`\omega` appearing in the :cite:t:`gnedin_response_2004` adiabatic contraction algorithm. * ``[radiusFractionalPivot]`` (default ``1.0d0``) — The pivot radius (in units of the virial radius), :math:`r_0`, appearing in equation (:eq:`eq-adiabaticContractionGnedinPowerLaw`). * ``[radiusVirial]`` — The virial radius, :math:`r_\mathrm{v}`, appearing in equation (:eq:`eq-adiabaticContractionGnedinPowerLaw`). * ``[darkMatterFraction]`` — The universal cosmic dark matter fraction :math:`\Omega_\mathrm{DM}/\Omega_\mathrm{M}`, used to define the initial dark matter fraction in the halo before adiabatic contraction. * ``[darkMatterDistributedFraction]`` — The fraction of matter assumed to be distributed as the dark matter. * ``[massFractionInitial]`` — The fraction of matter assumed to be initially distributed as the dark matter. * ``[toleranceRelative]`` (default ``1.0d-2``) — The relative tolerance to use in solving for the initial radius in the adiabatically-contracted dark matter profile. * ``[nonAnalyticSolver]`` (default ``var_str('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]`` (default ``var_str('unknown')``) — The component type that this mass distribution represents. * ``[massType]`` (default ``var_str('unknown')``) — The mass type that this mass distribution represents. .. _physics-darkMatterProfileDarkMatterOnly: ``darkMatterProfileDarkMatterOnly`` ----------------------------------- An implementation of non-dark-matter-only dark matter halo profiles that returns the unmodified dark-matter-only profile, i.e. baryonic effects on the dark matter distribution are ignored. Whether to compute velocity dispersions via the Chandrasekhar integral is controlled by ``[chandrasekharIntegralComputeVelocityDispersion]``. **Parameters** * ``[chandrasekharIntegralComputeVelocityDispersion]`` (default ``.true.``) — If true, the Chandrasekhar integral is computed using the velocity dispersion, :math:`\sigma_mathrm{r}(r)`. Otherwise, the velocity dispersion is approximated as :math:`V_\mathrm{c}(r)/\sqrt{2}`. .. _physics-darkMatterProfileSIDMIsothermal: ``darkMatterProfileSIDMIsothermal`` ----------------------------------- A dark matter halo profile class that builds :galacticus-class:`massDistributionSphericalSIDMIsothermalBaryons` objects for isothermal SIDM profiles containing baryons. **Parameters** * ``[temperature]`` — The temperature (in Kelvin) of the isothermal gas distribution; used with ``massAtomicMean`` to compute the 1D velocity dispersion via :math:`\sigma^2 = k_\mathrm{B} T / (\mu m_\mathrm{H})`. * ``[massAtomicMean]`` — The mean atomic mass (in atomic mass units) of the distribution. * ``[velocityDispersion]`` — The 1D velocity dispersion (in km/s) of the isothermal distribution, used directly when no ``temperature`` is specified; sets the thermally broadened line-of-sight velocity spread. * ``[densityNormalization]`` (default ``0.25d0/Pi``) — The density normalization of the isothermal profile. * ``[lengthReference]`` (default ``1.0d0``) — The reference radius (in Mpc) of the isothermal profile at which ``densityNormalization`` is evaluated; sets the physical length scale of the :math:`\rho \propto r^{-2}` profile. * ``[mass]`` (default ``1.0d0``) — The total mass (in :math:`\mathrm{M}_\odot`) enclosed within the reference radius, used to normalize the :math:`\rho \propto r^{-2}` density profile when ``densityNormalization`` is not supplied. * ``[dimensionless]`` (default ``.true.``) — If true the isothermal profile is considered to be dimensionless. * ``[componentType]`` (default ``var_str('unknown')``) — The component type that this mass distribution represents. * ``[massType]`` (default ``var_str('unknown')``) — The mass type that this mass distribution represents.