v0.3.0: introduced proton particles distribution
v0.3.0 introduces proton particles distributions.
In the previous versions of the package, only an electron distribution was available, the latter had to be defined through a dictionary
# set the spectrum normalisation (total energy in electrons in this case)
spectrum_norm = 1e48 * u.Unit("erg")
# define the spectral function parametrisation through a dictionary
spectrum_dict = {
"type": "PowerLaw",
"parameters": {"p": 2.8, "gamma_min": 1e2, "gamma_max": 1e7},
}
# set the remaining quantities defining the blob
R_b = 1e16 * u.cm
B = 1 * u.G
z = Distance(1e27, unit=u.cm).z
delta_D = 10
Gamma = 10
blob = Blob(R_b, z, delta_D, Gamma, B, spectrum_norm, spectrum_dict)This was not very handy: I have simplified - and broke - the previous blob API.
From version 0.3.0 this is how electron distribution are defined and passed to the blob
# electron distribution
n_e = BrokenPowerLaw(
k=1e-8 * u.Unit("cm-3"),
p1=1.9,
p2=2.6,
gamma_b=1e4,
gamma_min=10,
gamma_max=1e6,
mass=m_e,
)
# set the quantities defining the blob
R_b = 1e16 * u.cm
z = Distance(1e27, unit=u.cm).z
delta_D = 10
Gamma = 10
B = 1 * u.G
blob = Blob(R_b, z, delta_D, Gamma, B, n_e=n_e)The new way of defining particle distributions also allows to define proton distributions
n_p = PowerLaw(k=0.1 * u.Unit("cm-3"), p=2.3, gamma_min=10, gamma_max=1e6, mass=m_p)
blob = Blob(R_b, z, delta_D, Gamma, B, n_e=n_e, n_p=n_p)The only difference between particle distributions is the mass argument.
This will eventually allow to describe other particle distributions.
To achieve this:
-
ElectronDistributionhas been changed toParticleDistribution. This is the base class from which all the different distributions (PowerLaw,BrokenPowerLawetc..) inherit; -
@dimaniad6 additionally implemented an
InterpolatedDistributionto read an arbitrary input particle distribution (two arrays: one for of Lorentz factors and the other for densities); -
the
Blobclass has been improved:- the different initialisation method available under the
spectrum_norm_typeargument of theBlobare now implemented in the baseParticleDistributionclass. I.e. one can initialisefrom_total_density,from_total_energy_density,from_density_at_gamma_1,from_total_energy; - several quantities are now provided as
propertiesand are evaluated on the fly from the base parameters ($R_b$ ,$z$ ,$\delta_D$ ,$\Gamma$ ,$B$ );
- the different initialisation method available under the
-
the other classes remain largely unchanged. They have just been modified internally to deal with the new definition of particle distributions;
-
note that the prefactor of the particle distribution has been renamed from
k_etok, as we are not describing exclusively electrons distributions now. This means that the corresponding parameter in the fit classes islog10_kinstead oflog10_k_e.