Radiation Models¶
blastwave supports several radiation models selected via the model parameter in FluxDensity(). This page covers models beyond the basic synchrotron (documented in Radiation Models).
Synchrotron Self-Compton (SSC)¶
In the SSC process, synchrotron photons are upscattered by the same relativistic electrons that produced them. This becomes important when the Compton Y parameter is large (\(Y \gg 1\)), which occurs for high \(\varepsilon_e\) and/or low \(\varepsilon_B\).
The sync_ssc model computes both the synchrotron and inverse-Compton components, including Klein-Nishina suppression at high energies:
from blastwave import Jet, TopHat, ForwardJetRes
# High Compton-Y parameters
P = dict(Eiso=1e52, lf=300, theta_c=0.1, n0=1.0, A=0.0,
eps_e=0.3, eps_b=0.001, p=2.2, theta_v=0.0, d=474.33, z=0.1)
jet = Jet(TopHat(0.1, 1e52, lf0=300), 0.0, 1.0,
grid=ForwardJetRes(0.1, 129), spread=False,
eps_e=0.3, eps_b=0.001, p_fwd=2.2)
# Synchrotron only (no IC radiation, but IC cooling is still included)
flux_sync = jet.FluxDensity(t, 2.4e17, P, model="sync_ssa_smooth")
# Synchrotron + SSC (includes KN corrections)
flux_ssc = jet.FluxDensity(t, 2.4e17, P, model="sync_ssc")
SSC effects manifest in two ways:
-
IC cooling: Even when SSC radiation is not computed explicitly, the Compton Y parameter enhances the electron cooling rate, lowering \(\gamma_c\) and steepening the synchrotron spectrum above \(\nu_c\). This is included in all models via the Thomson Y correction.
-
IC radiation: The
sync_sscmodel additionally computes the upscattered photon spectrum, which dominates at hard X-ray and gamma-ray energies (\(\gtrsim 1\) MeV).
At 1 keV the synchrotron component dominates, so the sync_ssa_smooth and sync_ssc models give similar results. At 1 MeV the IC component takes over, producing significantly higher flux.
Script: examples/showcase_radiation.py
Chang-Cooper Solver¶
The numeric model solves the electron energy distribution using the Chang-Cooper finite-difference scheme rather than assuming the analytic piecewise power-law approximation. This captures:
- Time-dependent injection and cooling evolution
- Smooth spectral breaks (rather than sharp broken power laws)
- Adiabatic cooling effects
- Pile-up near the cooling break
# Analytic model (fast, ~0.1s)
flux_analytic = jet.FluxDensity(t, 3e9, P, model="sync_ssa_smooth")
# Numeric Chang-Cooper solver (slower, ~10s, more accurate breaks)
flux_numeric = jet.FluxDensity(t, 3e9, P, model="numeric")
The numeric model is particularly valuable when fitting data near spectral breaks, where the analytic approximation introduces artificial features. The trade-off is computational cost: the numeric solver is roughly 100x slower than the analytic model.
Thermal Electrons¶
The sync_thermal model adds thermal (Maxwell-Juttner) electron emission to the non-thermal power-law, following Margalit & Quataert (2021). This produces a characteristic spectral bump at radio/mm frequencies that is important for trans-relativistic shocks.
See the dedicated Thermal Electrons page for full details, including the FM25 full-volume extension, usage examples, and validation against the Ferguson & Margalit (2025) reference code.
EBL Absorption¶
For high-redshift sources observed at very high energies (\(\gtrsim 100\) GeV), the extragalactic background light (EBL) attenuates the observed flux through \(\gamma\gamma \to e^+e^-\) pair production. blastwave implements the Franceschini & Rodighiero (2018) EBL model.
Enable EBL absorption by passing ebl=True to FluxDensity():
# Intrinsic (unabsorbed) flux at ~1 TeV
flux_intrinsic = jet.FluxDensity(t, 2.4e26, P, model="sync_ssa_smooth", ebl=False)
# Observed flux with EBL absorption
flux_observed = jet.FluxDensity(t, 2.4e26, P, model="sync_ssa_smooth", ebl=True)
The EBL optical depth \(\tau_\mathrm{EBL}(\nu, z)\) increases steeply with both photon energy and source redshift. At ~1 TeV:
- \(z = 0.1\): \(\tau \sim 1\) (moderate absorption)
- \(z = 0.5\): \(\tau \sim 5\) (strong absorption)
- \(z = 1.0\): \(\tau \gg 10\) (effectively opaque)
This is critical for modeling GRB afterglows detected by Cherenkov telescopes (H.E.S.S., MAGIC, CTA).
Deep Newtonian Phase¶
At very late times (months to years), the blast wave decelerates to non-relativistic speeds (\(\beta\Gamma \ll 1\)). The standard synchrotron model assumes relativistic electrons, which breaks down in this regime. The sync_dnp model extends the emission calculation into the deep Newtonian phase:
# Standard synchrotron (valid for relativistic blast wave)
flux_std = jet.FluxDensity(t, 1e9, P, model="sync_ssa_smooth")
# Deep Newtonian correction (valid at all velocities)
flux_dnp = jet.FluxDensity(t, 1e9, P, model="sync_dnp")
The deep Newtonian correction modifies the electron distribution and emission coefficients for sub-relativistic shocks. The difference becomes significant at \(t \gtrsim 100\) days for typical ISM parameters, and is most apparent at radio frequencies where the blast wave is still detectable at late times.
The plot below shows all four features: Chang-Cooper vs analytic, thermal electrons, EBL absorption at three redshifts, and the deep Newtonian correction.
Script: examples/showcase_radiation.py