.. _physics-satelliteDynamicalFriction: Dynamical Friction ================== Class providing models of the satellite vector acceleration due to dynamical friction---the gravitational drag force that decelerates a satellite as it moves through the background distribution of dark matter particles and substructures. The Chandrasekhar dynamical friction formula scales as :math:`\mathbf{a}_\mathrm{df} \propto -\rho \ln\Lambda\, \mathbf{v}_\mathrm{sat}/v_\mathrm{sat}^3`, where :math:`\ln\Lambda` is the Coulomb logarithm. Dynamical friction drives orbital decay and eventual coalescence of satellite galaxies with their hosts, and is complementary to SIDM-driven deceleration. **Default implementation:** ``satelliteDynamicalFrictionChandrasekhar1943`` Methods ------- ``acceleration`` → ``double precision, dimension(3)`` Returns the satellite acceleration due to dynamical friction for ``node`` (in units of km/s/Gyr). * ``type(treeNode), intent(inout) :: node`` .. _physics-satelliteDynamicalFrictionChandrasekhar1943: ``satelliteDynamicalFrictionChandrasekhar1943`` ----------------------------------------------- A satellite dynamical friction class which uses the :cite:t:`chandrasekhar_dynamical_1943` formula to compute the acceleration of a satellite at radius :math:`r` from the center of the host due to dynamical friction: .. math:: \mathbf{a}_{DF} = -\frac{4\pi \mathrm{G}^2M_\mathrm{sat}\rho_\mathrm{host}(r)}{v_\mathrm{sat}^3}\ln \Lambda\left[\mathrm{erf}(x)-\frac{2x}{\sqrt{\pi}}\exp(-x^2)\right]\mathbf{v}_\mathrm{sat}, where :math:`M_\mathrm{sat}` and :math:`\mathbf{v}_\mathrm{sat}` are the satellite's mass and velocity, respectively, :math:`v_\mathrm{sat}=|\mathbf{v}_\mathrm{sat}|`, :math:`\rho_\mathrm{host}(r)` is the host's density profile, :math:`\ln\Lambda=`\ ``[logarithmCoulomb]`` is the Coulomb logarithm, and :math:`x\equiv v_\mathrm{sat}/\sqrt{2}\sigma(r)`, where :math:`\sigma(r)` is the velocity dispersion of the host halo at radius :math:`r`, approximated to be equal to the host virial velocity, :math:`v_\mathrm{vir}`. **(Default implementation)** **Methods** * ``coulombLogarithm`` — Compute the Coulomb logarithm, :math:`\log \Lambda`, appearing in the :cite:t:`chandrasekhar_dynamical_1943` dynamical friction equation. **Parameters** * ``[logarithmCoulomb]`` (default ``2.0d0``) — The Coulomb logarithm, :math:`\ln \Lambda`, appearing in the :cite:t:`chandrasekhar_dynamical_1943` formulation of the acceleration due to dynamical friction. .. _physics-satelliteDynamicalFrictionKaur2018: ``satelliteDynamicalFrictionKaur2018`` -------------------------------------- A satellite dynamical friction class which applies the core-stalling model of :cite:t:`kaur_stalling_2018` to another dynamical friction class. Specifically, the acceleration due to dynamical friction is given by: .. math:: \mathbf{a}_\mathrm{df} = \mathbf{a}^\prime_\mathrm{df} [S_\mathrm{trail}(r/r_*)+S_\mathrm{lead}(r/r_*)], where :math:`\mathbf{a}^\prime_\mathrm{df}` is the acceleration provided by the child dynamical friction class, and :math:`S_\mathrm{trail}(x)` and :math:`S_\mathrm{lead}(x)` are the torque suppression factors defined by :cite:t:`kaur_stalling_2018`. The functional forms for :math:`S(x)` are taken from Figure 8 of :cite:t:`kaur_stalling_2018`---extrapolation in :math:`\log(S)` vs. :math:`x` is used to extend :math:`S(x)` to lower :math:`x` than shown in that figure, while for values of :math:`x` higher than that shown in that figure :math:`S(x)` is held constant at the maximum value shown. The stalling radius, :math:`r_*`, is computed using equation (55) of :cite:t:`kaur_stalling_2018`. For dark matter halo profiles with a central cusp (for which that equation has no solution), the acceleration provided by the child dynamical friction class is returned unmodified. .. _physics-satelliteDynamicalFrictionMassRatioThreshold: ``satelliteDynamicalFrictionMassRatioThreshold`` ------------------------------------------------ A satellite dynamical friction class that wraps another dynamical friction implementation and suppresses the deceleration to zero whenever the satellite-to-host halo mass ratio falls below a threshold value. This prevents unphysically large dynamical friction forces on very low-mass satellites. The mass ratio threshold is set by ``[massRatioThreshold]``. **Parameters** * ``[massRatioThreshold]`` — The satellite-to-host mass ratio below which dynamical friction acceleration is truncated to zero. .. _physics-satelliteDynamicalFrictionPetts2015: ``satelliteDynamicalFrictionPetts2015`` --------------------------------------- A satellite dynamical friction class which computes the Coulomb logarithm following the model of :cite:t:`petts_semi-analytic_2015`. The minimum impact parameter is taken to be :math:`b_\mathrm{min} = \max(r_{1/2,\mathrm{sat}}, G M_\mathrm{sat} / v_\mathrm{orbital}^2)`, where :math:`r_{1/2,\mathrm{sat}}` is the half-mass radius of the dark matter component of the satellite, and the maximum is :math:`b_\mathrm{max} = r_\mathrm{orbital}/|\gamma|` for :math:`|\gamma| > 1` (where :math:`\gamma` is the logarithmic density slope of the host at the satellite position), or :math:`r_\mathrm{orbital}` otherwise. The ``[logarithmCoulombApproximate]`` parameter controls whether the Coulomb logarithm is evaluated as :math:`\ln\Lambda` (for :math:`\Lambda \geq 1`, else zero) or the approximate form :math:`\frac{1}{2}\ln(1+\Lambda^2)`. **Parameters** * ``[logarithmCoulombApproximate]`` (default ``.false.``) — If true, the Coulomb logarithm term is evaluated as :math:`\frac{1}{2}\log(1+\Lambda^2)`. Otherwise, it is evaluated as :math:`\log\Lambda` for :math:`\Lambda \ge 1` and set to zero otherwise. .. _physics-satelliteDynamicalFrictionZero: ``satelliteDynamicalFrictionZero`` ---------------------------------- A satellite dynamical friction class in which the acceleration is always zero.