.. _physics-kinematicsDistribution: Kinematics Distributions ======================== Class providing kinematics distributions for mass distribution components---the temperature, velocity dispersion, and mean radial velocity of particles (or fluid elements) as a function of position. For collisional (gaseous) components the temperature profile enters the cooling and feedback calculations; for collisionless (stellar and dark matter) components the velocity dispersion is computed by solving the spherical Jeans equation given the mass distribution and its potential. Methods ------- ``isCollisional`` → ``logical`` Return true if the kinematics is collisional. ``temperature`` → ``double precision`` Return the temperature of the distribution at the given coordinates. * ``class(coordinate), intent(in ) :: coordinates`` ``temperatureGradientLogarithmic`` → ``double precision`` Return the logarithmic gradient of the temperature of the distribution at the given coordinates. * ``class(coordinate), intent(in ) :: coordinates`` ``velocityRadial`` → ``double precision`` Return the mean radial velocity at the given coordinate. * ``class(coordinate ), intent(in ) :: coordinates`` * ``class(massDistributionClass), intent(inout) :: massDistributionEmbedding`` ``velocityDispersion1D`` → ``double precision`` Return the 1D velocity dispersion at the given coordinate. * ``class(coordinate ), intent(in ) :: coordinates`` * ``class(massDistributionClass), intent(inout), target :: massDistribution_, massDistributionEmbedding`` ``velocityDispersion1DNumerical`` → ``double precision`` Return the 1D velocity dispersion at the given coordinate by numerically solving the Jeans equation. * ``class(coordinate ), intent(in ) :: coordinates`` * ``class(massDistributionClass), intent(inout), target :: massDistribution_, massDistributionEmbedding`` ``jeansEquationRadius`` → ``double precision`` Return the radius variable used in solving the Jeans equation that corresponds to a given physical radius. * ``double precision , intent(in ) :: radius`` * ``class (massDistributionClass), intent(inout) :: massDistributionEmbedding`` ``jeansEquationIntegrand`` → ``double precision`` Evaluate the integrand of the Jeans equation at the given ``radius``, returning :math:`\mathrm{G}M(r)\rho(r)/r^2` needed for numerical integration of the spherical Jeans equation to obtain the line-of-sight velocity dispersion. * ``double precision , intent(in ) :: radius`` * ``class (massDistributionClass), intent(inout) :: massDistribution_, massDistributionEmbedding`` ``solverSet`` → ``void`` Set a sub-module scope pointers on a stack to allow recursive calls to functions. * ``class (massDistributionClass), intent(in ), target :: massDistribution_, massDistributionEmbedding`` ``solverUnset`` → ``void`` Unset a sub-module scope pointers on the stack. ``reset`` → ``void`` Reset memoized (cached) velocity-dispersion state, so that a kinematics distribution attached to a re-initialized (e.g. pooled) mass distribution never returns stale results. .. _physics-kinematicsDistributionBurkert: ``kinematicsDistributionBurkert`` --------------------------------- A kinematic distribution class for Burkert mass distributions. **Methods** * ``timeFreefallTabulate`` — Tabulate the freefall time as a function of radius in a scale-free Burkert mass distribution. .. _physics-kinematicsDistributionCollisionless: ``kinematicsDistributionCollisionless`` --------------------------------------- A kinematic distribution class for collisionless (dark matter or stellar) mass distributions that computes the 1D velocity dispersion by numerically solving the isotropic Jeans equation. Convergence tolerances for the velocity dispersion integral are controlled by ``[toleranceRelativeVelocityDispersion]`` and ``[toleranceRelativeVelocityDispersionMaximum]``. **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. **Parameters** * ``[toleranceRelativeVelocityDispersion]`` (real; default ``1.0d-6``) — The relative tolerance to use in numerical solutions for the velocity dispersion in dark-matter-only density profiles. * ``[toleranceRelativeVelocityDispersionMaximum]`` (real; default ``1.0d-3``) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion in dark-matter-only density profiles. .. _physics-kinematicsDistributionCollisionlessTabulated: ``kinematicsDistributionCollisionlessTabulated`` ------------------------------------------------ A kinematic distribution base class for collisionless mass distributions that computes the 1D velocity dispersion by numerically solving the isotropic Jeans equation and caching the results in tabulated form. Numerical convergence is governed by ``[toleranceRelativeVelocityDispersion]`` and ``[toleranceRelativeVelocityDispersionMaximum]``. **Methods** * ``parameters`` — Return parameters of the current mass distribution. * ``factoryTabulation`` — Return an instance of the class with the given tabulation parameters. * ``suffix`` — Return a suffix to append to table file names. * ``fileRead`` — Read tabulation data from file. * ``fileWrite`` — Write tabulation data to file. * ``tabulate`` — (Re)tabulate the mass distribution. * ``interpolate`` — Interpolate in the mass distribution. * ``isTabulating`` — Return true if the thread associated with the object is tabulating. * ``velocityDispersion1D`` — Compute the 1D velocity dispersion at the given coordinates. * ``initialize`` — Initialize the container (specifically the number of parameters). * ``nameParameter`` — Return the name of the index parameter for a given tabulation. * ``countParameters`` — Return the number of parameters for a given tabulation. **Parameters** * ``[toleranceRelativeVelocityDispersion]`` (real; default ``1.0d-6``) — The relative tolerance to use in numerical solutions for the velocity dispersion in dark-matter-only density profiles. * ``[toleranceRelativeVelocityDispersionMaximum]`` (real; default ``1.0d-3``) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion in dark-matter-only density profiles. .. _physics-kinematicsDistributionCuspNFW: ``kinematicsDistributionCuspNFW`` --------------------------------- A kinematic distribution class for the cusp-NFW dark matter profile of :cite:p:`delos_cusp-halo_2025`, which describes halos with a central density cusp transitioning to an NFW envelope. The 1D velocity dispersion is computed from tabulated solutions to the isotropic Jeans equation for this two-component density profile. **Parameters** * ``[toleranceRelativeVelocityDispersion]`` (real; default ``1.0d-6``) — The relative tolerance to use in numerical solutions for the velocity dispersion. * ``[toleranceRelativeVelocityDispersionMaximum]`` (real; default ``1.0d-3``) — The maximum relative tolerance to use in numerical solutions for the velocity dispersion. .. _physics-kinematicsDistributionEnzoHydrostatic: ``kinematicsDistributionEnzoHydrostatic`` ----------------------------------------- A kinematic class that implements the "hydrostatic" temperature profile available in the :term:`ENZO` code. Specifically, .. math:: T(r) = \hbox{max}\left( {\mathrm{G} M(