Self-consistent modelling

agnpy does not foresee time evolution of the electron spectra, it allows though for self-consistent modelling.

In particular, the break and maximum Lorentz factor of the electron distribution (\(\gamma_{\rm b}\) and \(\gamma_{\rm max}\)) can be constrained accounting for the interplay between acceleration, cooling and escape processes. See the documentation of the specific function for the particular considerations applied. Follows a snippet showing the constraint usage. As for the radiative processes it is sufficient to pass the instance of the emission region to the constraint class:

from agnpy.emission_regions import Blob
from agnpy.constraints import SpectralConstraints

# let us cosider a default blob
blob = Blob()
# class defining the spectral constraints
constraints = SpectralConstraints(blob)

# max Lorentz factor for a Larmor radius smaller than the blob
gamma_max_larmor = constraints.gamma_max_larmor
# max Lorentz factor comparing 1st order Fermi acceleration with synchrotron energy losses
gamma_max_synch = constraints.gamma_max_synch
# break Lorentz factor comparing synchrotron cooling time scale with ballistic time scale
gamma_break_synch = constraints.gamma_break_synch

print(f"gamma_max_larmor = {gamma_max_larmor:.2e}")
print(f"gamma_max_synch = {gamma_max_synch:.2e}")
print(f"gamma_break_synch = {gamma_break_synch:.2e}")

should return

gamma_max_larmor = 5.87e+12
gamma_max_synch = 1.17e+08
gamma_break_synch = 2.32e+03

Self-consistent modelling is available also considering cooling due to external Compton on line and thermal emitters. Check the API for more possibilties.