.. _physics-darkMatterProfileConcentration: Dark Matter Profile Concentrations ================================== Class providing the concentration parameter :math:`c = r_\mathrm{vir}/r_\mathrm{s}` of dark matter halo density profiles, where :math:`r_\mathrm{vir}` is the virial radius and :math:`r_\mathrm{s}` is the characteristic scale radius. The concentration encodes the inner density structure of a halo and depends on halo mass and formation history. Implementations provide both the instantaneous concentration (i.e., including any scatter around the mean) and the mean concentration--mass relation, along with definitions of the density contrast and dark matter profile used in computing the concentration. **Default implementation:** ``darkMatterProfileConcentrationGao2008`` Methods ------- ``concentration`` → ``double precision`` Returns the concentration parameter for the given ``node``. * ``type(treeNode), intent(inout), target :: node`` ``concentrationMean`` → ``double precision`` Returns the mean concentration parameter for a ``node`` of the given mass. * ``type(treeNode), intent(inout), target :: node`` ``densityContrastDefinition`` → ``class(virialDensityContrastClass)`` Returns a ``virialDensityContrast`` object describing the virial density contrast used to define this concentration. ``darkMatterProfileDMODefinition`` → ``class(darkMatterProfileDMOClass)`` Returns a ``darkMatterProfileDMO`` object describing the dark matter density profile used to define this concentration. .. _physics-darkMatterProfileConcentrationBrown2021: ``darkMatterProfileConcentrationBrown2021`` ------------------------------------------- Dark matter halo concentrations are computed using the algorithm of :cite:t:`brown_towards_2022`. .. _physics-darkMatterProfileConcentrationBullock2001: ``darkMatterProfileConcentrationBullock2001`` --------------------------------------------- Computes dark matter halo concentrations using the mass-collapse epoch relation of :cite:t:`bullock_profiles_2001`, in which concentration scales with the ratio of the virial radius to the collapse-epoch scale factor. The two free parameters of the model are ``[F]``, which determines the collapse mass fraction, and ``[K]``, which sets the concentration normalization. **Parameters** * ``[F]`` (real; default ``0.01d0``) — The parameter :math:`F` appearing in the halo concentration algorithm of :cite:t:`bullock_profiles_2001`. * ``[K]`` (real; default ``4.0d0``) — The parameter :math:`K` appearing in the halo concentration algorithm of :cite:t:`bullock_profiles_2001`. .. _physics-darkMatterProfileConcentrationCorrea2015: ``darkMatterProfileConcentrationCorrea2015`` -------------------------------------------- Computes dark matter halo concentrations using the accretion-history-based fitting function of :cite:t:`correa_accretion_2015`, which relates concentration to the mass accretion history of the halo through a power-law relation in redshift. The normalization of the concentration-mass relation is calibrated by the free parameter ``[A]``. **Parameters** * ``[A]`` (real; default ``887.0d0``) — The parameter :math:`A` appearing in eqn. (17) of :cite:t:`correa_accretion_2015`. .. _physics-darkMatterProfileConcentrationDiemerJoyce2019: ``darkMatterProfileConcentrationDiemerJoyce2019`` ------------------------------------------------- Computes dark matter halo concentrations using the fitting function of :cite:t:`diemer_accurate_2019`, which models concentration as a function of the effective spectral slope of the matter power spectrum. The fitting parameters controlling the normalization and slopes of the concentration-mass relation are ``[kappa]``, ``[a0]``, ``[a1]``, ``[b0]``, and ``[b1]``. **Parameters** * ``[kappa]`` (real; default ``0.41d0``) — The parameter :math:`\kappa` appearing in the halo concentration algorithm of :cite:t:`diemer_accurate_2019`. * ``[a0]`` (real; default ``2.45d0``) — The parameter :math:`a_0` appearing in the halo concentration algorithm of :cite:t:`diemer_accurate_2019`. * ``[a1]`` (real; default ``1.82d0``) — The parameter :math:`a_1` appearing in the halo concentration algorithm of :cite:t:`diemer_accurate_2019`. * ``[b0]`` (real; default ``3.20d0``) — The parameter :math:`b_0` appearing in the halo concentration algorithm of :cite:t:`diemer_accurate_2019`. * ``[b1]`` (real; default ``2.30d0``) — The parameter :math:`b_1` appearing in the halo concentration algorithm of :cite:t:`diemer_accurate_2019`. * ``[cAlpha]`` (real; default ``0.21d0``) — The parameter :math:`c_{\alpha}` appearing in the halo concentration algorithm of :cite:t:`diemer_accurate_2019`. * ``[scatter]`` (real; default ``0.0d0``) — The scatter (in dex) to assume in the halo concentration algorithm of :cite:t:`diemer_accurate_2019`. * ``[truncateConcentration]`` (boolean; default ``.false.``) — If false, solutions to equation (30) of :cite:t:`diemer_accurate_2019` requiring :math:`x<1` will cause a fatal error. If true, such cases are simply truncated to :math:`x=1`. * ``[includeUpturn]`` (boolean; default ``.true.``) — If true, the term modeling the upturn in the :math:`c(M)` relation at high masses (i.e. :math:`[1+\nu^2/B(n)]` in equation (28) of :cite:author:`diemer_accurate_2019` :cite:year:`diemer_accurate_2019`) is included. Otherwise this term is set equal to :math:`1` so that no upturn occurs. * ``[truncateUpturn]`` (boolean; default ``.false.``) — If true, the term modeling the upturn in the :math:`c(M)` relation at high masses (i.e. :math:`[1+\nu^2/B(n)]` in equation (28) of :cite:author:`diemer_accurate_2019` :cite:year:`diemer_accurate_2019`) will be truncated at :math:`\nu=\sqrt{B(n)}` where the right-hand side of equation (28) reaches the minimum, i.e. for any :math:`\nu>\sqrt{B(n)}`, the right-hand side of equation (28) will be truncated to :math:`2 A/\sqrt{B}`. .. _physics-darkMatterProfileConcentrationDiemerKravtsov2014: ``darkMatterProfileConcentrationDiemerKravtsov2014`` ---------------------------------------------------- A dark matter profile concentration class in which the concentration is computed using a fitting function from :cite:t:`diemer_universal_2014`: .. math:: c = {c_\mathrm{min} \over 2} \left[ \left({\nu\over\nu_\mathrm{min}}\right)^{-\alpha} + \left({\nu\over\nu_\mathrm{min}}\right)^{\beta} \right], where :math:`c_\mathrm{min}=\phi_0+\phi_1 n`, :math:`\nu_\mathrm{min}=\eta_0+\eta_1 n`, :math:`n` is the logarithmic slope of the linear power spectrum at wavenumber :math:`k = \kappa 2 \pi / R`, :math:`R` is the comoving Lagrangian radius of the halo, :math:`R=[3 M / 4 \pi \rho_\mathrm{M}(z=0)]^{1/3}`, and :math:`\nu=\delta_\mathrm{crit}(t)/\sigma(M)` is the peak height parameter. The numerical parameters :math:`(\kappa,\phi_0,\phi_1,\eta_0,\eta_1,\alpha,\beta)` are set by the parameters ``[kappa]``, ``[phi0]``, ``[phi1]``, ``[eta0]``, ``[eta1]``, ``[alpha]``, ``[beta]``, respectively, and default to the values given in Table 3 of :cite:t:`diemer_universal_2014` for the median relation, namely :math:`(0.69,6.58,1.37,6.82,1.42,1.12,1.69)`. **Parameters** * ``[kappa]`` (real; default ``0.69d0``) — The parameter :math:`\kappa` appearing in the halo concentration algorithm of :cite:t:`diemer_universal_2014`. * ``[phi0]`` (real; default ``6.58d0``) — The parameter :math:`\phi_0` appearing in the halo concentration algorithm of :cite:t:`diemer_universal_2014`. * ``[phi1]`` (real; default ``1.37d0``) — The parameter :math:`\phi_1` appearing in the halo concentration algorithm of :cite:t:`diemer_universal_2014`. * ``[eta0]`` (real; default ``6.82d0``) — The parameter :math:`\eta_0` appearing in the halo concentration algorithm of :cite:t:`diemer_universal_2014`. * ``[eta1]`` (real; default ``1.42d0``) — The parameter :math:`\eta_1` appearing in the halo concentration algorithm of :cite:t:`diemer_universal_2014`. * ``[alpha]`` (real; default ``1.12d0``) — The parameter :math:`\alpha` appearing in the halo concentration algorithm of :cite:t:`diemer_universal_2014`. * ``[beta]`` (real; default ``1.69d0``) — The parameter :math:`\beta` appearing in the halo concentration algorithm of :cite:t:`diemer_universal_2014`. * ``[scatter]`` (real; default ``0.0d0``) — The scatter (in dex) to assume in the halo concentration algorithm of :cite:t:`diemer_universal_2014`. .. _physics-darkMatterProfileConcentrationDuttonMaccio2014: ``darkMatterProfileConcentrationDuttonMaccio2014`` -------------------------------------------------- A dark matter profile concentration class in which the concentration is computed using a fitting function from :cite:t:`dutton_cold_2014`: .. math:: \log_{10} c = A + B \log_{10} M_\mathrm{halo}. The parameters are a function of redshift, :math:`z`. We use the following fit suggested by :cite:t:`dutton_cold_2014` results: .. math:: A & = A_1+(A_2-A_1)\exp[A_3 z^{A_4}] \nonumber \\ B & = B_1+B_2 z. The coefficients are chosen from one of the three sets given by :cite:t:`dutton_cold_2014`, controlled via the ``[duttonMaccio2014FitType]`` parameter, as described in Table :numref:`{number} `. .. list-table:: Coefficients appearing in the dark matter halo profile concentration fitting functions of :cite:t:`dutton_cold_2014`. The "fit type" is specified by the ``[duttonMaccio2014FitType]`` parameter. :name: tb-DuttonMaccioConcentrationCoefficients :header-rows: 1 * - Fit type - Profile - :math:`\Delta_\mathrm{vir}` - :math:`A_1` - :math:`A_2` - :math:`A_3` - :math:`A_4` - :math:`B_1` - :math:`B_2` * - ``nfwVirial`` - :term:`NFW` - Top-hat - :math:`+0.537` - :math:`+1.025` - :math:`-0.718` - :math:`+1.080` - :math:`-0.097` - :math:`+0.024` * - ``nfw200`` - :term:`NFW` - 200 - :math:`+0.520` - :math:`+0.905` - :math:`-0.617` - :math:`+1.210` - :math:`-0.101` - :math:`+0.026` * - ``einasto200`` - Einasto - 200 - :math:`+0.459` - :math:`+0.977` - :math:`-0.490` - :math:`+1.303` - :math:`-0.130` - :math:`+0.029` **Methods** * ``definitions`` — Establish definitions for virial density contrast and dark matter halo profile. **Parameters** * ``[fitType]`` (string; one of ``nfwVirial``, ``nfwCritical200``, ``einastoCritical200``, ``userDefined``; default ``nfwVirial``) — The type of halo definition for which the concentration-mass relation should be computed. Allowed values are ``nfwVirial``, ``nfwCritical200``, ``einastoCritical200``, and ``userDefined``. * ``[a1]`` (real) — Parameter :math:`a_1` in the :cite:t:`dutton_cold_2014` halo concentration--mass relation. * ``[a2]`` (real) — Parameter :math:`a_2` in the :cite:t:`dutton_cold_2014` halo concentration--mass relation. * ``[a3]`` (real) — Parameter :math:`a_3` in the :cite:t:`dutton_cold_2014` halo concentration--mass relation. * ``[a4]`` (real) — Parameter :math:`a_4` in the :cite:t:`dutton_cold_2014` halo concentration--mass relation. * ``[b1]`` (real) — Parameter :math:`b_1` in the :cite:t:`dutton_cold_2014` halo concentration--mass relation. * ``[b2]`` (real) — Parameter :math:`b_2` in the :cite:t:`dutton_cold_2014` halo concentration--mass relation. .. _physics-darkMatterProfileConcentrationFixed: ``darkMatterProfileConcentrationFixed`` --------------------------------------- Dark matter halo concentrations are computed using a fixed value for concentration. **Parameters** * ``[concentration]`` (real) — The fixed NFW concentration parameter :math:`c = r_\mathrm{virial}/r_\mathrm{scale}` assigned to all halos regardless of mass or redshift, representing the ratio of the virial radius to the scale radius of the dark matter density profile. .. _physics-darkMatterProfileConcentrationGao2008: ``darkMatterProfileConcentrationGao2008`` ----------------------------------------- A dark matter profile concentration class in which the concentration is computed using a fitting function from :cite:t:`gao_redshift_2008`: .. math:: \log_{10} c = A \log_{10} M_\mathrm{halo} + B. The parameters are a function of expansion factor, :math:`a`. We use the following fits to the :cite:t:`gao_redshift_2008` results: .. math:: A & = -0.140 \exp\left[-\left(\left\{\log_{10}a+0.05\right\}/0.35\right)^2\right], \\ B & = 2.646 \exp\left[-\left(\log_{10}a/0.50\right)^2\right]. **(Default implementation)** **Parameters** * ``[scatter]`` (real; default ``0.0d0``) — The scatter (in dex) to assume in the halo concentration distribution at fixed mass. .. _physics-darkMatterProfileConcentrationKlypin2015: ``darkMatterProfileConcentrationKlypin2015`` -------------------------------------------- Computes dark matter halo concentrations using the fitting functions calibrated from the MultiDark simulations by :cite:t:`klypin_multidark_2014`. The specific fitting function applied depends on the halo sample selected via ``[sample]``, which controls the density contrast definition and the simulation suite used for calibration. **Parameters** * ``[sample]`` (string; one of ``all``, ``relaxed``; default ``planck200CritRelaxedMass``) — The sample to use for the halo concentration algorithm of :cite:t:`klypin_multidark_2014`. .. _physics-darkMatterProfileConcentrationLudlow2016Fit: ``darkMatterProfileConcentrationLudlow2016Fit`` ----------------------------------------------- Dark matter halo concentrations are computed using the fitting function of :cite:t:`ludlow_mass-concentration-redshift_2016`. .. _physics-darkMatterProfileConcentrationMunozCuartas2011: ``darkMatterProfileConcentrationMunozCuartas2011`` -------------------------------------------------- A dark matter profile concentration class in which the concentration is computed using a fitting function from :cite:t:`munoz-cuartas_redshift_2011`: .. math:: \log_{10} c = a \log_{10} \left( {M_\mathrm{halo} \over h^{-1}\mathrm{M}_\odot} \right) + b. The parameters are a function of redshift, :math:`z`, given by .. math:: a & = wz-m, \\ b & = {\alpha \over (z+\gamma)} + {\beta \over (z+\gamma)^2}, where :math:`w=0.029`, :math:`m=0.097`, :math:`\alpha=-110.001`, :math:`\beta=2469.720`, :math:`\gamma=16.885`. .. _physics-darkMatterProfileConcentrationNFW1996: ``darkMatterProfileConcentrationNFW1996`` ----------------------------------------- A dark matter profile concentration class in which the concentration is computed using the algorithm from :cite:t:`navarro_structure_1996`. In this algorithm, for a given halo of mass :math:`M` at time :math:`t_0`, a formation time is defined as the epoch at which there is a 50% probability (according to extended Press-Schechter theory) for a progenitor halo to have a mass greater than :math:`fM`, where :math:`f=`\ ``[f]`` is a parameter of the algorithm. This implies formation when the critical overdensity for collapse is .. math:: \delta_\mathrm{crit}(t_\mathrm{form}) = \left[ 2 \nu_{1/2}^2 \left\{\sigma(fM)^22-\sigma(M)^2\right\} \right]^{1/2}+\delta_\mathrm{crit}(t_0), where :math:`\nu_{1/2} = [\hbox{erfc}^{-1}(1/2)]^{1/2}`. :cite:t:`navarro_structure_1996` then assume an overdensity at collapse of .. math:: \Delta(t_\mathrm{form}) = C \left[ {a(t_0) \over a(t_\mathrm{form})} \right]^3 where :math:`C=`\ ``[C]`` is a parameter of the algorithm. The concentration is then determined by solving .. math:: {\Delta(t_\mathrm{form}) \over \Delta_\mathrm{virial}(t_0)} = {c^3 \over 3 [\ln(1+c)-c/(1+c)]}. **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** * ``[f]`` (real; default ``0.01d0``) — The parameter :math:`f` appearing in the halo concentration algorithm of :cite:t:`navarro_structure_1996`. * ``[C]`` (real; default ``2000.0d0``) — The parameter :math:`C` appearing in the halo concentration algorithm of :cite:t:`navarro_structure_1996`. .. _physics-darkMatterProfileConcentrationPrada2011: ``darkMatterProfileConcentrationPrada2011`` ------------------------------------------- A dark matter profile concentration class in which the concentration is computed using a fitting function from :cite:t:`prada_halo_2011`: .. math:: c(M,t) = B_0(x) \mathcal{C}(\sigma^\prime), where .. math:: \sigma^\prime(M,t) & = B_1(x) \sigma(M,t), \\ B_0(x) & = c_\mathrm{min}(x)/c_\mathrm{min}(1.393), \\ B_1(x) & = \sigma^{-1}_\mathrm{min}(x)/\sigma^{-1}_\mathrm{min}(1.393), \\ c_\mathrm{min}(x) & = c_0 + (c_1-c_0) [\tan^{-1}\{\alpha (x-x_0)\}/\Pi+1/2], \\ \sigma^{-1}_\mathrm{min}(x) & = \sigma^{-1}_0 + (\sigma^{-1}_1-\sigma^{-1}_0) [\tan^{-1}\{\beta(x-x_1)\}/\Pi+1/2], \\ \mathcal{C}(\sigma^\prime) & = A [(\sigma^\prime)/b)^c+1] \exp(d/\sigma^{\prime 2}), \\ x & = (\Omega_\Lambda/\Omega_\mathrm{M})^{1/3} a(t), with the following parameters (default values taken from :cite:t:`prada_halo_2011` given in []): :math:`A=`\ ``[A]``\ :math:`=2.881`, :math:`b=`\ ``[B]``\ :math:`=1.257`, :math:`c=`\ ``[C]``\ :math:`=1.022`, :math:`d=`\ ``[D]``\ :math:`=0.060`, :math:`c_0=`\ ``[C0]``\ :math:`=3.681`, :math:`c_1=`\ ``[C1]``\ :math:`=5.033`, :math:`x_0=`\ ``[X0]``\ :math:`=0.424`, :math:`x_1=`\ ``[X1]``\ :math:`=0.526`, :math:`\sigma^{-1}_0=`\ ``[sigma0]``\ :math:`=1.047`, :math:`\sigma^{-1}_1=`\ ``[sigma1]``\ :math:`=1.646`, :math:`\alpha=`\ ``[alpha]``\ :math:`=6.948`, and :math:`\beta=`\ ``[beta]``\ :math:`=7.386`. **Parameters** * ``[A]`` (real; default ``2.881d0``) — The parameter :math:`A` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[B]`` (real; default ``1.257d0``) — The parameter :math:`b` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[C]`` (real; default ``1.022d0``) — The parameter :math:`c` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[D]`` (real; default ``0.060d0``) — The parameter :math:`d` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[C0]`` (real; default ``3.681d0``) — The parameter :math:`c_0` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[C1]`` (real; default ``5.033d0``) — The parameter :math:`c_1` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[X0]`` (real; default ``0.424d0``) — The parameter :math:`x_0` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[X1]`` (real; default ``0.526d0``) — The parameter :math:`x_1` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[inverseSigma0]`` (real; default ``1.047d0``) — The parameter :math:`\sigma^{-1}_0` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[inverseSigma1]`` (real; default ``1.646d0``) — The parameter :math:`\sigma^{-1}_1` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[alpha]`` (real; default ``6.948d0``) — The parameter :math:`\alpha` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. * ``[beta]`` (real; default ``7.386d0``) — The parameter :math:`\beta` appearing in the halo concentration algorithm of :cite:t:`prada_halo_2011`. .. _physics-darkMatterProfileConcentrationScatterShift: ``darkMatterProfileConcentrationScatterShift`` ---------------------------------------------- A dark matter profile concentration class in which the concentration is computed by shifting the results of another concentration class up/down by a specified number of :math:`\sigma`. **Parameters** * ``[scatter]`` (real) — The scatter (in dex) to assume in the halo concentration distribution at fixed mass. * ``[sigmaShift]`` (real) — The number of standard deviations :math:`\sigma` by which to shift the halo concentration from its mean value, allowing selection of halos with systematically higher or lower concentrations than average at fixed mass. .. _physics-darkMatterProfileConcentrationSchneider2015: ``darkMatterProfileConcentrationSchneider2015`` ----------------------------------------------- A dark matter profile concentration class in which the concentration using the algorithm of :cite:t:`schneider_structure_2015`. Specifically, a reference model for concentrations in defined in a specific cosmological model. The concentration for a halo of given mass, :math:`M`, and redshift, :math:`z_0`, is then found by finding the redshift of collapse, :math:`z_\mathrm{c}` for the halo by solving: .. math:: \delta_\mathrm{c}(z_\mathrm{c}) = \left( {\pi \over 2} \left[ \sigma^2(f M) - \sigma^2(M) \right] \right)^{1/2}+\delta_\mathrm{c})(z_0), where :math:`\delta_\mathrm{c}(z)` is the critical overdensity for collapse at redshift :math:`z`, and :math:`f` is the fraction of a halo's mass assembled at formation time (given by the ``[massFractionFormation]`` parameter. From this, the mass of a halo in the reference model with the same redshift of collapse is found, and the reference model is used to compute the concentration of a halo of that mass. **Methods** * ``concentrationCompute`` — Compute the concentration for the given ``node`` **Parameters** * ``[massFractionFormation]`` (real; default ``0.05d0``) — The fraction of a halo's mass assembled at "formation" in the halo concentration algorithm of :cite:t:`schneider_structure_2015`. .. _physics-darkMatterProfileConcentrationWDM: ``darkMatterProfileConcentrationWDM`` ------------------------------------- A dark matter profile concentration class in which the concentration is computed by applying the correction factor of :cite:t:`schneider_non-linear_2012`: .. math:: c_\mathrm{WDM} = c_\mathrm{CDM} \left[ 1 + \gamma_1 {M_\mathrm{1/2} \over M_\mathrm{halo}}\right]^{-\gamma_2}, where :math:`\gamma_1=15`, :math:`\gamma_2=0.3`, :math:`M_\mathrm{1/2}` is the mass corresponding to the wavenumber at which the WDM transfer function is suppressed below the CDM transfer function by a factor of 2, and :math:`M_\mathrm{halo}` is the mass of the dark matter halo, to a CDM concentration algorithm as specified by ``[cdmConcentration]``. **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. .. _physics-darkMatterProfileConcentrationWDMBose2016: ``darkMatterProfileConcentrationWDMBose2016`` --------------------------------------------- A dark matter profile concentration class in which the concentration is computed by applying the correction factor of :cite:t:`bose_copernicus_2016`: .. math:: c_\mathrm{WDM} = c_\mathrm{CDM} \left( 1 + \gamma_1 {M_\mathrm{1/2} \over M_\mathrm{halo}} \right)^{-\gamma_2} (1+z)^{\beta(z)}, where :math:`\gamma_1=60`, :math:`\gamma_2=0.17`, :math:`M_\mathrm{1/2}` is the mass corresponding to the wavenumber at which the WDM transfer function is suppressed below the CDM transfer function by a factor of 2, :math:`M_\mathrm{halo}` is the mass of the dark matter halo, and :math:`\beta(z)=0.026 z-0.04`, to a CDM concentration algorithm as specified by ``[cdmConcentration]``. .. _physics-darkMatterProfileConcentrationZhao2009: ``darkMatterProfileConcentrationZhao2009`` ------------------------------------------ A dark matter profile concentration class in which the concentration is computed using a fitting function from :cite:t:`zhao_accurate_2009`: .. math:: c = 4 \left(1 + \left[ {t \over 3.75 t_\mathrm{form}}\right]^{8.4}\right)^{1/8}, where :math:`t` is the time for the halo and :math:`t_\mathrm{form}` is a formation time defined by :cite:t:`zhao_accurate_2009` as the time at which the main branch progenitor of the halo had a mass equal to :math:`0.04` of the current halo mass. This formation time is computed directly from the merger tree branch associated with each halo. If the no branch exists or does not extend to the formation time then the formation time is computed by extrapolating the mass of the earliest resolved main branch progenitor to earlier times using the selected :galacticus-class:`darkMatterHaloMassAccretionHistoryClass`.