.. _physics-darkMatterHaloSplashbackRadius: Dark Matter Halo Splashback Radii ================================= Class providing the splashback radius, :math:`R_\mathrm{sp}`, of dark matter halos---the radius at which accreted material reaches the apocenter of its first orbit after collapse. Physically this marks the true outer edge of the collapsed halo, and manifests observationally as a sharp steepening of the density profile. It is not a spherical overdensity radius, and so does not correspond to any fixed density contrast: it depends primarily on the halo's mass accretion rate, :math:`\Gamma`, with rapidly accreting halos having smaller :math:`R_\mathrm{sp}/R_\mathrm{200m}`. Implementations of this class differ both in the model used and, for those models calibrated against the distribution of particle apocenters, in which statistic of that distribution is being predicted (see the ``definition`` parameter of the :galacticus-class:`darkMatterHaloSplashbackRadiusDiemer2017` and :galacticus-class:`darkMatterHaloSplashbackRadiusDiemer2020` classes). **Default implementation:** ``darkMatterHaloSplashbackRadiusDiemer2020`` Methods ------- ``radius`` → ``double precision`` Returns the splashback radius, :math:`R_\mathrm{sp}` (in Mpc), of the halo in ``node``. * ``type(treeNode) node`` [inout] * ``class(massDistributionClass) massDistribution_`` (optional) [inout] ``radiusRatio`` → ``double precision`` Returns the ratio :math:`R_\mathrm{sp}/R_\mathrm{200m}` for the halo in ``node``. Splashback models are formulated in terms of this ratio, so this method allows a caller which has already computed :math:`R_\mathrm{200m}` for its own density profile to obtain a splashback radius consistent with that profile, instead of with the profile used internally by this class. * ``type(treeNode) node`` [inout] * ``class(massDistributionClass) massDistribution_`` (optional) [inout] ``mass`` → ``double precision`` Returns the splashback mass, :math:`M_\mathrm{sp}` (in :math:`\mathrm{M}_\odot`), of the halo in ``node``---that is, the mass enclosed by the splashback radius. Note that this is predicted directly by the fitting functions of those models which provide it, and is in general *not* equal to the mass enclosed within :math:`R_\mathrm{sp}` in any given density profile model. An error is reported by models which do not predict this quantity. * ``type(treeNode) node`` [inout] * ``class(massDistributionClass) massDistribution_`` (optional) [inout] ``massRatio`` → ``double precision`` Returns the ratio :math:`M_\mathrm{sp}/M_\mathrm{200m}` for the halo in ``node``. An error is reported by models which do not predict this quantity. * ``type(treeNode) node`` [inout] * ``class(massDistributionClass) massDistribution_`` (optional) [inout] ``radiusScatter`` → ``double precision`` Returns the 68% scatter in :math:`\log_{10}(R_\mathrm{sp}/R_\mathrm{200m})` for halos matching those in ``node``. An error is reported by models which do not predict this scatter. * ``type(treeNode) node`` [inout] * ``class(massDistributionClass) massDistribution_`` (optional) [inout] ``massScatter`` → ``double precision`` Returns the 68% scatter in :math:`\log_{10}(M_\mathrm{sp}/M_\mathrm{200m})` for halos matching those in ``node``. An error is reported by models which do not predict this scatter. * ``type(treeNode) node`` [inout] * ``class(massDistributionClass) massDistribution_`` (optional) [inout] .. _physics-darkMatterHaloSplashbackRadiusDiemer: ``darkMatterHaloSplashbackRadiusDiemer`` ---------------------------------------- An abstract splashback radius class providing the functional forms shared by the :cite:t:`diemer_splashback_2017` and :cite:t:`diemer_splashback_2020` models. **Methods** ``propertiesGet`` Return the properties of the halo needed to evaluate the splashback fitting functions. * ``type(treeNode) node`` [inout] * ``double precision gamma`` [out] * ``double precision peakHeight`` [out] * ``double precision omegaMatter`` [out] * ``double precision radius200Mean`` [out] * ``double precision mass200Mean`` [out] * ``class(massDistributionClass) massDistribution_`` (optional) [inout] .. _physics-darkMatterHaloSplashbackRadiusDiemer2017: ``darkMatterHaloSplashbackRadiusDiemer2017`` -------------------------------------------- A splashback radius class implementing the model of :cite:t:`diemer_splashback_2017`. The splashback radius and mass are given by .. math:: {X_\mathrm{sp} \over X_\mathrm{200m}} = A + B \exp\left( - {\Gamma \over C} \right), where :math:`X` is either radius or mass, and the coefficients :math:`A`, :math:`B`, and :math:`C` depend on the matter density parameter, :math:`\Omega_\mathrm{M}`, the peak height, :math:`\nu`, computed from :math:`M_\mathrm{200m}`, and on which statistic of the distribution of particle apocenters is being predicted (set by ``[definition]``). Here :math:`\Gamma` is the mass accretion rate measured over one dynamical time. The model was calibrated over the ranges :math:`0 \le \nu \le 5` and :math:`0 \le z \le 8`; it is evaluated here without restriction, so results outside of those ranges should be treated as extrapolations. **Parameters** * ``[definition]`` (string; one of ``mean``, ``percentile50``, ``percentile75``, ``percentile87``, ``percentile90``; default ``mean``) — The statistic of the distribution of particle apocenters which defines the splashback radius. Allowed values are ``mean`` (the mean of the distribution), and ``percentile50``, ``percentile75``, ``percentile87``, and ``percentile90`` (the corresponding percentiles of the distribution). .. _physics-darkMatterHaloSplashbackRadiusDiemer2020: ``darkMatterHaloSplashbackRadiusDiemer2020`` -------------------------------------------- A splashback radius class implementing the model of :cite:t:`diemer_splashback_2020`. The splashback radius and mass are given by .. math:: {X_\mathrm{sp} \over X_\mathrm{200m}} = A + B \exp\left( - {\Gamma \over C} \right), where :math:`X` is either radius or mass, and the coefficients :math:`A`, :math:`B`, and :math:`C` depend on the matter density parameter, :math:`\Omega_\mathrm{M}`, the peak height, :math:`\nu`, computed from :math:`M_\mathrm{200m}`, and on which statistic of the distribution of particle apocenters is being predicted (set by ``[definition]``). Here :math:`\Gamma` is the mass accretion rate measured over one dynamical time. This model supersedes that of :cite:t:`diemer_splashback_2017`, having been recalibrated against a larger set of simulations. The model was calibrated over the ranges :math:`0 \le \nu \le 5` and :math:`0 \le z \le 8`; it is evaluated here without restriction, so results outside of those ranges should be treated as extrapolations. **(Default implementation)** **Parameters** * ``[definition]`` (string; one of ``mean``, ``percentile50``, ``percentile75``, ``percentile87``, ``percentile90``; default ``mean``) — The statistic of the distribution of particle apocenters which defines the splashback radius. Allowed values are ``mean`` (the mean of the distribution), and ``percentile50``, ``percentile75``, ``percentile87``, and ``percentile90`` (the corresponding percentiles of the distribution). .. _physics-darkMatterHaloSplashbackRadiusDiemerKravtsov2014: ``darkMatterHaloSplashbackRadiusDiemerKravtsov2014`` ---------------------------------------------------- A splashback radius class which uses the truncation radius of the outer density profile of :cite:t:`diemer_dependence_2014`, given by their equation (6), .. math:: {R_\mathrm{t} \over R_\mathrm{200m}} = \alpha - \beta \nu, where :math:`\alpha=`\ ``[alpha]``, :math:`\beta=`\ ``[beta]``, and :math:`\nu` is the peak height computed from :math:`M_\mathrm{200m}`. **Note that this is not a splashback radius.** :math:`R_\mathrm{t}` is a fitting parameter of the :cite:t:`diemer_dependence_2014` outer density profile which controls where that profile steepens; it correlates with, but is not equal to, the splashback radius. It is provided by this class both because it is the quantity historically used by the accretion flow mass distribution classes in Galacticus, and because it is a useful point of comparison for the models which do predict a true splashback radius. For physical applications prefer :galacticus-class:`darkMatterHaloSplashbackRadiusDiemer2020`. Since this model makes no prediction for the splashback mass, or for the scatter in either quantity, attempting to evaluate those will result in an error. **Methods** ``propertiesGet`` Return the properties of the halo needed to evaluate the truncation radius. * ``type(treeNode) node`` [inout] * ``double precision peakHeight`` [out] * ``double precision radius200Mean`` [out] * ``class(massDistributionClass) massDistribution_`` (optional) [inout] **Parameters** * ``[alpha]`` (real; default ``1.90d0``) — The parameter :math:`\alpha` in the truncation radius :math:`R_\mathrm{t}/R_\mathrm{200m} = \alpha - \beta \nu` of :cite:t:`diemer_dependence_2014`. *Default from:* :cite:t:`diemer_dependence_2014`, equation (6). * ``[beta]`` (real; default ``0.18d0``) — The parameter :math:`\beta` in the truncation radius :math:`R_\mathrm{t}/R_\mathrm{200m} = \alpha - \beta \nu` of :cite:t:`diemer_dependence_2014`. *Default from:* :cite:t:`diemer_dependence_2014`, equation (6). .. _physics-darkMatterHaloSplashbackRadiusShi2016: ``darkMatterHaloSplashbackRadiusShi2016`` ----------------------------------------- A splashback radius class implementing the fitting functions of :cite:t:`shi_outer_2016`, which are calibrated against the self-similar spherical collapse solution for the accretion flow around a halo. Specifically, .. math:: {R_\mathrm{sp} \over R_\mathrm{200m}} = \exp\left[ \left( 0.24 + 0.074 \ln s \right) \ln \Omega_\mathrm{M} + 0.55 - 0.15 s \right], and the mean overdensity enclosed by the splashback radius is .. math:: \Delta_\mathrm{sp} = 33 \Omega_\mathrm{M}^{-0.45} \exp\left[ \left( 0.88 - 0.14 \ln \Omega_\mathrm{M} \right) s^{0.6} \right], from which the splashback mass follows as :math:`M_\mathrm{sp}/M_\mathrm{200m} = (\Delta_\mathrm{sp}/200) (R_\mathrm{sp}/R_\mathrm{200m})^3`. Here :math:`s = \mathrm{d}\log M / \mathrm{d}\log a` is the *instantaneous* mass accretion rate---note that this differs from the :math:`\Gamma_\mathrm{dyn}` averaged over a dynamical time which is used by the :galacticus-class:`darkMatterHaloSplashbackRadiusDiemer2017` and :galacticus-class:`darkMatterHaloSplashbackRadiusDiemer2020` classes. These fitting functions were calibrated over the range :math:`0.5 \le s \le 5`; results outside of that range should be treated as extrapolations. This class makes no prediction for the scatter in :math:`R_\mathrm{sp}` or :math:`M_\mathrm{sp}`, so attempting to evaluate those will result in an error. **Methods** ``propertiesGet`` Return the properties of the halo needed to evaluate the splashback fitting functions. * ``type(treeNode) node`` [inout] * ``double precision accretionRate`` [out] * ``double precision omegaMatter`` [out] * ``double precision radius200Mean`` [out] * ``double precision mass200Mean`` [out] * ``class(massDistributionClass) massDistribution_`` (optional) [inout]