.. _physics-coolingRadius: Cooling Radii ============= Class providing models of the cooling radius (in Mpc) for gas in the hot halo surrounding a galaxy, defined as the radius within which gas can radiate its thermal energy within a specified cooling time. Gas inside the cooling radius is expected to have cooled and infallen onto the galaxy, driving star formation. The growth rate of the cooling radius determines the rate at which new gas becomes available to cool, and together with the freefall radius sets which cooling regime (rapid cooling vs.\ quasi-static) applies to a given halo. **Default implementation:** ``coolingRadiusSimple`` Methods ------- ``radius`` → ``double precision`` Returns the cooling radius for gas in the hot atmosphere surrounding the galaxy in ``node`` in units of Mpc. * ``type(treeNode), intent(inout), target :: node`` ``radiusGrowthRate`` → ``double precision`` Returns the rate of increase of the cooling radius for gas in the hot atmosphere surrounding the galaxy in ``node`` in units of Mpc/Gyr. * ``type(treeNode), intent(inout) :: node`` .. _physics-coolingRadiusBetaProfile: ``coolingRadiusBetaProfile`` ---------------------------- A cooling radius class for :math:`\beta`-profile halos. Computes the cooling radius by assuming that the hot gas density profile is a :math:`\beta`-profile (:math:`\rho(r) \propto [r^2+r_\mathrm{c}^2]^{-1}`), and that the cooling rate scales as density squared, :math:`\dot{E}\propto \rho^2`, such that the cooling time scales as inverse density, :math:`t_\mathrm{cool} \propto \rho^{-1}`. Consequently, the cooling radius is given by .. math:: r_\mathrm{cool} = r_\mathrm{virial} \left( \left[ {t_\mathrm{avail} \over t_0} - 1 \right] \left[ {t_\mathrm{virial} \over t_0} - 1 \right]^{-1} \right)^{1/2}, where :math:`t_0`, and :math:`t_\mathrm{virial}` are the cooling times at zero radius and the virial radius respectively. **Methods** * ``initialize`` — (Re)initialize the parameters of the :math:`\beta`-profile mass distribution. .. _physics-coolingRadiusIsothermal: ``coolingRadiusIsothermal`` --------------------------- A cooling radius class that computes the cooling radius by assuming an isothermal density profile, and a cooling rate proportional to density squared. This implies a cooling time: .. math:: t_\mathrm{cool} \equiv {E\over\dot{E}} \propto \rho(r)^{-1}. The cooling radius is then derived using .. math:: \rho(r_\mathrm{cool}) \propto t_\mathrm{available}^{-1} which implies .. math:: r_\mathrm{cool} = r_\mathrm{virial} \left( { t_\mathrm{available} \over t_\mathrm{cool,virial}} \right)^{1/2}, where :math:`t_\mathrm{cool,virial}` is the cooling time at the virial radius. **Methods** * ``calculationReset`` — Reset memoized calculations. .. _physics-coolingRadiusSimple: ``coolingRadiusSimple`` ----------------------- A cooling radius class that computes the cooling radius by seeking the radius at which the time available for cooling (see :galacticus-class:`coolingTimeAvailable`) equals the cooling time (see :galacticus-class:`coolingTime`). The growth rate is determined consistently based on the slope of the density profile, the density dependence of the cooling function and the rate at which the time available for cooling is increasing. This method assumes that the cooling time is a monotonic function of radius. **(Default implementation)** **Methods** * ``calculationReset`` — Reset memoized calculations.