Heating of Mass Distributions¶
Class providing heating models for mass distributions—the specific energy deposited into the dark matter or stellar distribution as a function of radius, arising from processes such as tidal heating, dynamical friction, or baryonic feedback. The specific energy and its radial gradient are used to modify the density profile of the mass distribution, capturing the effect of non-gravitational energy injection on the structure of halos and galaxies.
Methods¶
specificEnergy→double precisionReturn the specific energy at the given radius.
double precision , intent(in ) :: radiusclass (massDistributionClass), intent(inout) :: massDistribution_
specificEnergyGradient→double precisionReturn the radial gradient of the specific energy at the given radius.
double precision , intent(in ) :: radiusclass (massDistributionClass), intent(inout) :: massDistribution_
specificEnergyIsEverywhereZero→logicalReturn true if the specific energy is zero everywhere (i.e. no heating).
massDistributionHeatingDecayingDarkMatter¶
Implements heating from decays and response to mass loss. The mass loss heating is parameterized as:
where \(\gamma=\)[gamma] sets the magnitude of the heating.
Methods
computeFactors— Compute memoized factors.
Parameters
[radiusEscape](real) — The radius beyond which a particle is assumed to have escaped the potential.[time](real) — The time at which decays should be evaluated.[gamma](real; ≥ 0.0; default0.5d0) — Parameter controlling the magnitude of heating due to mass loss.[includeKickHeating](boolean; default.true.) — Parameter controlling whether heating due to velocity kicks is to be included.
massDistributionHeatingImpulsiveOutflow¶
A mass distribution heating class that computes heating due to impulsive outflows—i.e. outflows occurring on timescales that are small relative to the dynamical time of the halo. The model assumed is that the energy injection is given by
where \(\alpha\) is a normalization factor, \(t_\phi = M_\mathrm{gas}/\dot{M}_\mathrm{outflow}\) is the timescale for the outflow, and \(t_\mathrm{dyn} = r_{1/2}/v_{1/2}\) is the dynamical time at the half-mass radius.
The quantity
if provided as an argument to the class constructor.
Parameters
[energyImpulsiveOutflowDisk](real) — The impulsive energy of outflows from the disk.[energyImpulsiveOutflowSpheroid](real) — The impulsive energy of outflows from the spheroid.[impulsiveEnergyFactor](real; default1.0d0) — The parameter \(\alpha\) appearing in the impulsive outflow heating rate.
massDistributionHeatingMonotonic¶
A mass distribution heating class which takes another heating source and enforces monotonic heating energy perturbation. This is achieved by enforcing the constraint that
where \(\epsilon\) is the specific heating energy (Du et al., 2024). At radii smaller than the shell-crossing radius defined by the above condition the specific energy is assumed to be proportional to \(\mathrm{G} M(r) / r\), with a smooth transition through this radius.
Methods
computeSolution— Compute a solution for the heated profile.
massDistributionHeatingMonotonicWeak¶
A mass distribution heating class which takes another heating source and enforces monotonic heating energy perturbation. This class enforces a weaker condition (compared to massDistributionHeatingMonotonic):
where \(r_\mathrm{i}\) and \(r_\mathrm{f}\) are the initial and final radii of the shell respectively.
Note that this condition does not ensure that the gradient of the specific heating energy is continuous through the shell-crossing radius. As such, the heated density profile may be discontinuous at this radius also.
Using the fact that
where \(\epsilon(r)\) is the specific heating energy as a function of radius, and \(M\) is the mass enclosed by the shell, we can re-write the above condition as
where \(\rho_\mathrm{i}(r_\mathrm{i})\) is the density in the unheated profile. Here, \(\xi\) should equal zero to precisely match the criterion for no shell-crossing. However, it is often useful to allow \(\xi\) to be a small positive number—this avoids getting too close to the boundary of the shell crossing region (where the density can diverge as there is, by definition, a caustic in density at this point).
Parameters
[toleranceShellCrossing](real; default1.0d-3) — The tolerance adopted in determining if the no-shell-crossing assumption is valid.
massDistributionHeatingNull¶
A null mass distribution heating class. The heating energy is always zero.
massDistributionHeatingSummation¶
A mass distribution heating class that sums heating over other classes.
Methods
list— Return a list of all sub-components.
massDistributionHeatingTidal¶
A mass distribution heating model which accounts for heating due to tidal shocking. The model follows the general approach of Gnedin et al. (1999). The change in the specific energy of particles at radius \(r\) in a halo is given by \(\Delta \epsilon = \Delta \epsilon_1 + \Delta \epsilon_2\), where \(\Delta \epsilon_1\), and \(\Delta \epsilon_2\) are the first and second order perturbations respectively. The first order term is given by \(\Delta \epsilon_1 = Q r^2\) where \(Q\) is the tidal tensor integrated along the orbital path (see, for example, Taylor and Babul 2001), while the second order term is given by \(\Delta \epsilon_2 = (2/3) f \sigma_\mathrm{rms} (1+\chi_\mathrm{r,v}) \sqrt{\Delta \epsilon_1}\) (Gnedin et al., 1999). For the particle velocity dispersion, \(v_\mathrm{rms}\), we use \(\sqrt{3} \sigma_\mathrm{r}(r)\), the radial velocity dispersion in the dark matter profile scaled to the total velocity dispersion assuming an isotropic velocity distribution. The position-velocity correlation function, \(\chi_\mathrm{r,v}\), is taken to be a constant given by the parameter [correlationVelocityRadius]. The coefficient, \(f=\)[coefficientSecondOrder] is introduced to allow some freedom to adjust the contribution of the second order term. It is degenerate with the value of \(\chi_\mathrm{r,v}\) but is introduced to allow for possible future promotion of \(\chi_\mathrm{r,v}\) from a constant to a function of the dark matter profile potential (Gnedin and Ostriker, 1999).
Methods
specificEnergyTerms— Compute the first and second order energy perturbations.initialize— (Re)initialize the parameters of the tidal heating distribution.
Parameters
[heatSpecificNormalized](real) — The normalized specific tidal heating, \(Q = \epsilon / r^2\).[coefficientSecondOrder0](real; default0.0d0) — The coefficient, \(a_0\), appearing in the second-order heating term, \(f_2 = a_0 + a_1 \mathrm{d}\log \rho/\mathrm{d} \log r + a_2 (\mathrm{d}\log \rho/\mathrm{d} \log r)^2\).[coefficientSecondOrder1](real; default0.0d0) — The coefficient, \(a_1\), appearing in the second-order heating term, \(f_2 = a_0 + a_1 \mathrm{d}\log \rho/\mathrm{d} \log r + a_2 (\mathrm{d}\log \rho/\mathrm{d} \log r)^2\).[coefficientSecondOrder2](real; default0.0d0) — The coefficient, \(a_2\), appearing in the second-order heating term, \(f_2 = a_0 + a_1 \mathrm{d}\log \rho/\mathrm{d} \log r + a_2 (\mathrm{d}\log \rho/\mathrm{d} \log r)^2\).[correlationVelocityRadius](real; default-1.0d0) — The velocity-position correlation function, \(\chi_\mathrm{r,v}\), as defined by Gnedin and Ostriker (1999) which controls the strength of the second order heating term.
massDistributionHeatingTwoBodyRelaxation¶
A mass distribution heating class that computes heating due to two-body relaxation.
Parameters
[massParticle](real) — The particle mass to use for two-body relaxation calculations.[lengthSoftening](real) — The softening length to use for two-body relaxation calculations.[timeRelaxing](real) — The time for which the system has been relaxing.[efficiency](real) — The fractional efficiency of two-body relaxation heating.