Source code for uvex_transients.models.tdes.van_velzen

r"""Composite tidal disruption event SED, following the Van Velzen et al. (2021) ZTF sample."""

from typing import ClassVar

from astropy import units as u

from uvex_transients.models.core.base import ComposedSpectralModel
from uvex_transients.models.core.parameters import Parameter
from uvex_transients.models.core.priors import NormalPrior
from uvex_transients.models.lightcurves.generic import GREDLightcurve
from uvex_transients.models.spectra.thermal import BlackbodySpectrum

__all__ = ["VanVelzenTDESED"]


[docs] class VanVelzenTDESED(ComposedSpectralModel): r""" A constant-temperature blackbody modulated by a Gaussian-rise, exponential-decay light curve. .. math:: L_\nu(\nu, t) = L_0 \cdot \ell(t) \cdot \frac{\pi B_\nu(\nu, T)}{\sigma_\mathrm{SB} T^4}, where .. math:: \ell(t) = \begin{cases} \exp\left[-\dfrac{(t-t_\mathrm{peak})^2}{2\sigma^2}\right] & t < t_\mathrm{peak} \\[6pt] \exp\left[-\dfrac{t-t_\mathrm{peak}}{\tau}\right] & t \ge t_\mathrm{peak} \end{cases} with :math:`t_\mathrm{peak} = 5\sigma` (:class:`~uvex_transients.models.lightcurves.generic.GREDLightcurve`'s own convention -- the rise is always exactly 5 Gaussian widths long, not a separate free parameter). This is a fairly typical parameterization for a TDE SED :footcite:p:`2021ApJ...908....4V`: a constant-temperature blackbody photosphere (the :math:`\pi B_\nu(\nu, T)/(\sigma_\mathrm{SB} T^4)` factor is exactly :class:`~uvex_transients.models.spectra.thermal.BlackbodySpectrum`'s normalized shape, :math:`\int_0^\infty S(\nu, T)\,d\nu = 1`), so :math:`L_0` here is literally :math:`L_\mathrm{bol}(t_\mathrm{peak})`. Composed from :class:`~uvex_transients.models.lightcurves.generic.GREDLightcurve` (already bolometric -- :math:`L_0 \cdot \ell(t)`) and :class:`~uvex_transients.models.spectra.thermal.BlackbodySpectrum`; see :class:`~uvex_transients.models.core.base.ComposedSpectralModel` for how the two are combined. The default priors are informed by the log-normal fits to the ZTF TDE sample reported by :footcite:t:`2021ApJ...908....4V` (their Section 4.1 / Table 4), though the values below have since been hand-tuned away from those exact fits and are not currently a literal reproduction of them: log-normal in :math:`L_0`, :math:`T`, :math:`\sigma`, and :math:`\tau`, each parameterized here via a base-10 log transform on a :class:`~uvex_transients.models.core.priors.NormalPrior`. .. rubric:: Parameters The model parameters are summarized below. .. list-table:: :header-rows: 1 :widths: 18 18 64 * - Parameter - Symbol - Description * - ``amplitude`` - :math:`L_0` - Peak bolometric luminosity, :math:`L_0 = L_\mathrm{bol}(t_\mathrm{peak})`. :math:`\log_{10}(L_0/\mathrm{erg\,s^{-1}}) \sim \mathcal{N}(43.8, 0.3^2)`. * - ``sigma_rise`` - :math:`\sigma` - Gaussian width of the pre-peak rise. :math:`\log_{10}(\sigma/\mathrm{d}) \sim \mathcal{N}(0.91, 0.25^2)`. * - ``tau_decline`` - :math:`\tau` - Exponential decline timescale after peak. :math:`\log_{10}(\tau/\mathrm{d}) \sim \mathcal{N}(1.7, 0.2^2)`. * - ``temperature`` - :math:`T` - Photospheric blackbody temperature. :math:`\log_{10}(T/\mathrm{K}) \sim \mathcal{N}(4.3, 0.1^2)`. References ---------- .. footbibliography:: """ _LIGHTCURVE_CLASS = GREDLightcurve _SPECTRUM_CLASS = BlackbodySpectrum _DEFAULT_PARAMETERS: ClassVar[dict[str, Parameter]] = { "amplitude": Parameter( prior=NormalPrior(mean=43.8, sigma=0.3), scale=1.0 * u.erg / u.s, transform="log10", description="Peak bolometric luminosity, L_0 = L_bol(t_peak). log10(L_0/[erg/s]) ~ N(43.8, 0.3^2).", latex=r"L_0", ), "temperature": Parameter( prior=NormalPrior(mean=4.3, sigma=0.1), scale=1.0 * u.K, transform="log10", description="Photospheric blackbody temperature. log10(T/K) ~ N(4.3, 0.1^2).", latex=r"T", ), "sigma_rise": Parameter( prior=NormalPrior(mean=0.91, sigma=0.25), scale=1.0 * u.day, transform="log10", description="Gaussian width of the pre-peak rise. log10(sigma/day) ~ N(0.91, 0.25^2).", latex=r"\sigma", ), "tau_decline": Parameter( prior=NormalPrior(mean=1.7, sigma=0.2), scale=1.0 * u.day, transform="log10", description="Exponential decline timescale after peak. log10(tau/day) ~ N(1.7, 0.2^2).", latex=r"\tau", ), }