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:
-
ElectronDistribution
has been changed toParticleDistribution
. This is the base class from which all the different distributions (PowerLaw
,BrokenPowerLaw
etc..) inherit; -
@dimaniad6 additionally implemented an
InterpolatedDistribution
to read an arbitrary input particle distribution (two arrays: one for of Lorentz factors and the other for densities); -
the
Blob
class has been improved:- the different initialisation method available under the
spectrum_norm_type
argument of theBlob
are now implemented in the baseParticleDistribution
class. 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
properties
and 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_e
tok
, as we are not describing exclusively electrons distributions now. This means that the corresponding parameter in the fit classes islog10_k
instead oflog10_k_e
.