.. _physics-virialOrbit: Virial Orbits ============= Class providing orbital parameters of satellite halos at the time when they first enter the virial radius of their host. **Default implementation:** ``virialOrbitBenson2005`` Methods ------- ``orbit`` → ``type(keplerOrbit)`` Returns a Kepler orbit object describing the orbital parameters (energy, angular momentum, radial and tangential velocities) of a satellite halo at the time it first crosses the virial radius of its host halo. * ``type(treeNode), intent(inout) :: node , host`` * ``logical , intent(in ) :: acceptUnboundOrbits`` ``velocityDistributionFunction`` → ``double precision`` Returns the distribution function of orbital velocity :math:`\mathrm{d}^2p/\mathrm{d}v_r/\mathrm{d}v_\theta(v_r,v_\theta)`. * ``type (treeNode), intent(inout) :: node , host`` * ``double precision , intent(in ) :: velocityRadial, velocityTangential`` ``isAngularlyResolved`` → ``logical`` Returns true if this orbit class provides resolution of the orbital angular coordinates (:math:`\theta`,\ :math:`\phi`) when setting orbits, false otherwise. ``densityContrastDefinition`` → ``class(virialDensityContrastClass)`` Returns a ``virialDensityContrast`` object describing the virial density contrast used to define this orbit class. ``velocityTangentialMagnitudeMean`` → ``double precision`` Returns the mean of the magnitude of tangential velocity averaged over all orbits. * ``type(treeNode), intent(inout) :: node, host`` ``velocityTangentialVectorMean`` → ``double precision, dimension(3)`` Returns the mean vector of the vector tangential velocity averaged over all orbits. * ``type(treeNode), intent(inout) :: node, host`` ``angularMomentumMagnitudeMean`` → ``double precision`` Returns the mean of the magnitude of the angular momentum averaged over all orbits. * ``type(treeNode), intent(inout) :: node, host`` ``angularMomentumVectorMean`` → ``double precision, dimension(3)`` Returns the mean vector of the angular momentum averaged over all orbits. * ``type(treeNode), intent(inout) :: node, host`` ``velocityTotalRootMeanSquared`` → ``double precision`` Returns the square root of the mean of the squared total velocity averaged over all orbits. * ``type(treeNode), intent(inout) :: node, host`` ``energyMean`` → ``double precision`` Returns the square root of the mean of the energy averaged over all orbits. * ``type(treeNode), intent(inout) :: node, host`` .. _physics-virialOrbitBenson2005: ``virialOrbitBenson2005`` ------------------------- A virial orbits class which selects orbital parameters randomly from the distribution given by :cite:t:`benson_orbital_2005`. If the virial density contrast definition differs from that used by :cite:t:`benson_orbital_2005` then the orbit is assigned based on :cite:t:`benson_orbital_2005`'s definition and then propagated to the virial radius relevant to the current definition of density contrast. **(Default implementation)** .. _physics-virialOrbitFixed: ``virialOrbitFixed`` -------------------- A virial orbit class that assigns all satellite infall orbits a single fixed set of orbital parameters, with radial velocity :math:`v_\mathrm{r}=`\ ``[velocityRadial]``\ :math:`V_\mathrm{virial}` and tangential velocity :math:`v_\phi=`\ ``[velocityTangential]``\ :math:`V_\mathrm{virial}` in units of the host halo virial velocity. Default values match the approximate peak in the distribution of :cite:t:`benson_orbital_2005`. **Parameters** * ``[velocityRadial]`` (real; default ``-0.90d0``) — The radial velocity (in units of the host virial velocity) to used for the fixed virial orbits distribution. Default value matches approximate peak in the distribution of :cite:t:`benson_orbital_2005`. * ``[velocityTangential]`` (real; default ``0.75d0``) — The tangential velocity (in units of the host virial velocity) to used for the fixed virial orbits distribution. Default value matches approximate peak in the distribution of :cite:t:`benson_orbital_2005`. .. _physics-virialOrbitIsotropic: ``virialOrbitIsotropic`` ------------------------ Virial orbits which assumes an isotropic distribution of infall directions and tangential velocities applied to another virial orbit class. .. _physics-virialOrbitJiang2014: ``virialOrbitJiang2014`` ------------------------ A virial orbits class which selects orbital parameters randomly from the distribution given by :cite:t:`jiang_orbital_2014`, including the mass and mass-ratio dependence of the distributions. If the virial density contrast definition differs from that used by :cite:t:`jiang_orbital_2014` then the orbit is assigned based on :cite:t:`jiang_orbital_2014`'s definition and then propagated to the virial radius relevant to the current definition of density contrast. **Methods** * ``parametersSelect`` — Select the parameter set to use for this satellite/host pairing. **Parameters** * ``[bRatioLow]`` (real; default ``[+0.049d0,+0.548d0,+1.229d0]``) — Values of the :math:`B` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.0001`--:math:`0.005` mass ratio. * ``[bRatioIntermediate]`` (real; default ``[+1.044d0,+1.535d0,+3.396d0]``) — Values of the :math:`B` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.005`--:math:`0.05` mass ratio. * ``[bRatioHigh]`` (real; default ``[+2.878d0,+3.946d0,+2.982d0]``) — Values of the :math:`B` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.05`--:math:`0.5` mass ratio. * ``[gammaRatioLow]`` (real; default ``[+0.109d0,+0.114d0,+0.110d0]``) — Values of the :math:`\gamma` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.0001`--:math:`0.005` mass ratio. * ``[gammaRatioIntermediate]`` (real; default ``[+0.098d0,+0.087d0,+0.050d0]``) — Values of the :math:`\gamma` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.005`--:math:`0.05` mass ratio. * ``[gammaRatioHigh]`` (real; default ``[+0.071d0,+0.030d0,-0.012d0]``) — Values of the :math:`\gamma` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.05`--:math:`0.5` mass ratio. * ``[sigmaRatioLow]`` (real; default ``[+0.077d0,+0.094d0,+0.072d0]``) — Values of the :math:`\sigma` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.0001`--:math:`0.005` mass ratio. * ``[sigmaRatioIntermediate]`` (real; default ``[+0.073d0,+0.083d0,+0.118d0]``) — Values of the :math:`\sigma` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.005`--:math:`0.05` mass ratio. * ``[sigmaRatioHigh]`` (real; default ``[+0.091d0,+0.139d0,+0.187d0]``) — Values of the :math:`\sigma` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.05`--:math:`0.5` mass ratio. * ``[muRatioLow]`` (real; default ``[+1.220d0,+1.231d0,+1.254d0]``) — Values of the :math:`\mu` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.0001`--:math:`0.005` mass ratio. * ``[muRatioIntermediate]`` (real; default ``[+1.181d0,+1.201d0,+1.236d0]``) — Values of the :math:`\mu` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.005`--:math:`0.05` mass ratio. * ``[muRatioHigh]`` (real; default ``[+1.100d0,+1.100d0,+1.084d0]``) — Values of the :math:`\mu` parameter of the :cite:t:`jiang_orbital_2014` orbital velocity distribution for the three host halo mass ranges, and the :math:`0.05`--:math:`0.5` mass ratio. .. _physics-virialOrbitLi2020: ``virialOrbitLi2020`` --------------------- A virial orbit class that draws satellite infall orbital parameters from the bimodal velocity distribution of :cite:t:`li_orbital_2020` calibrated from cosmological N-body simulations. The distribution shape parameters :math:`\mu_1`, :math:`\mu_2`, :math:`\sigma_1`, and :math:`a_0` can be set to tabulated or custom values. **Methods** * ``eta`` — Evaluate the :math:`\eta` parameter of the :cite:t:`li_orbital_2020` virial orbit distribution function. **Parameters** * ``[mu1]`` (real; default ``1.20d0``) — Values of the :math:`\mu_1` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[mu2]`` (real; default ``1.04d0``) — Values of the :math:`\mu_2` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[sigma1]`` (real; default ``0.20d0``) — Values of the :math:`\sigma_1` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[a0]`` (real; default ``0.89d0``) — Values of the :math:`a_0` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[a1]`` (real; default ``0.30d0``) — Values of the :math:`a_1` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[a2]`` (real; default ``-3.33d0``) — Values of the :math:`a_2` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[a3]`` (real; default ``0.56d0``) — Values of the :math:`a_3` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[b1]`` (real; default ``-1.44d0``) — Values of the :math:`b_1` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[b2]`` (real; default ``9.60d0``) — Values of the :math:`b_2` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[c]`` (real; default ``0.43d0``) — Values of the :math:`c` parameter of the :cite:t:`li_orbital_2020` orbital velocity distribution. * ``[propagateOrbits]`` (boolean; default ``.true.``) — If true, orbits will be propagated to the virial radius of the host halo. Otherwise, no propagation is performed and orbital velocities will correspond to precisely those from the :cite:t:`li_orbital_2020` orbital velocity distribution. .. _physics-virialOrbitLossCone: ``virialOrbitLossCone`` ----------------------- A virial orbit class that draws satellite infall orbital parameters using a loss cone model, accounting for the depletion of nearly radial orbits due to merging. The velocity range and resolution of the orbital distribution grid are controlled by the ``[velocityMinimum]``, ``[velocityMaximum]``, ``[velocitiesPerUnit]``, and ``[massesPerDecade]`` parameters. **Methods** * ``tabulate`` — Tabulate the orbital velocity distribution. * ``interpolants`` — Compute interpolating factors in the orbital velocity distribution tables. * ``restoreTable`` — Restore a tabulated solution from file. * ``storeTable`` — Store a tabulated solution to file. **Parameters** * ``[velocityMinimum]`` (real) — The minimum velocity (in units of the host virial velocity) for which to compute velocity distributions. * ``[velocityMaximum]`` (real) — The maximum velocity (in units of the host virial velocity) for which to compute velocity distributions. * ``[countVelocitiesPerUnit]`` (integer) — The number of points per unit of velocity (in units of the host virial velocity) for which to compute velocity distributions. * ``[countMassesPerDecade]`` (integer) — The number of points per decade of mass for which to compute infall properties. * ``[includeInFlightGrowth]`` (boolean; default ``.true.``) — If true, linear growth of the velocity field during the flight of the secondary halo to the primary is included. * ``[haloMassFunctionA]`` (real; default ``0.707d0``) — The parameter :math:`a` of the :cite:t:`sheth_ellipsoidal_2001` halo mass function used in averaging over environment. * ``[haloMassFunctionP]`` (real; default ``0.300d0``) — The parameter :math:`p` of the :cite:t:`sheth_ellipsoidal_2001` halo mass function used in averaging over environment. * ``[haloMassFunctionNormalization]`` (real; default ``0.322d0``) — The normalization parameter :math:`A` of the :cite:t:`sheth_ellipsoidal_2001` halo mass function used in averaging over environment. * ``[velocityDispersionMultiplier]`` (real; default ``1.0d0``) — A multiplier applied to the dispersion of the cosmological velocity field. .. _physics-virialOrbitMassReduced: ``virialOrbitMassReduced`` -------------------------- A virial orbit class that modifies another :galacticus-class:`virialOrbitClass` by accounting for any reduction in mass of the primary halo below its ":term:`dark matter-only universe`" value. .. _physics-virialOrbitSpinCorrelated: ``virialOrbitSpinCorrelated`` ----------------------------- A virial orbit class which assigns infall directions and tangential velocities directions to an orbit return by another virial orbit class such that the orbital angular momentum of the satellite is correlated with the spin vector of the host. Specifically, the angle, :math:`\theta`, between the orbital angular momentum of the satellite and the spin of the host is assumed to be distributed such that :math:`P(\cos \theta) = (1 + \alpha | \lambda | \cos \theta)/2`, where :math:`|\lambda|` is the magnitude of the host halo spin, and :math:`\alpha` is a parameter. **Parameters** * ``[alpha]`` (real; default ``1.0d0``) — The parameter :math:`\alpha` which expresses the strength of the correlation between satellite orbital angular momentum and the spin of the host halo. .. _physics-virialOrbitWetzel2010: ``virialOrbitWetzel2010`` ------------------------- A virial orbits class which selects orbital parameters randomly from the distribution given by :cite:t:`wetzel_orbits_2010`, including the redshift and mass dependence of the distributions. Note that the parameter :math:`R_1` can become negative (which is unphysical) for certain regimes of mass and redshift according to the fitting function for :math:`R_1` given by :cite:t:`wetzel_orbits_2010`. Therefore, we enforce :math:`R_1>0.05`. Similarly, the parameter :math:`C_1` can become very large in some regimes which is probably an artifact of the fitting function used rather than physically meaningful (and which causes numerical difficulties in evaluating the distribution). We therefore prevent :math:`C_1` from exceeding :math:`9.999999`\ \footnoteWe use this value rather than :math:`10` since the GSL :math:`_2F_1` hypergeometric function fails in some cases when :math:`C_1\ge 10`. If the virial density contrast definition differs from that used by :cite:t:`wetzel_orbits_2010` then the orbit is assigned based on :cite:t:`wetzel_orbits_2010`'s definition and then propagated to the virial radius relevant to the current definition of density contrast.