The AtomDB Kappa model is designed to create spectra for spectra with non-Maxwellian electron distributions of electron energies. The coefficients of Hahn and Savin  are used to create similar electron distributions from a sum of Maxwellian electron distributions.
Given the available atomic data in AtomDB and other similar databases, it is important to ensure that the Maxwellian temperatures required to model the spectrum are present in the underlying atomic spectra database. Important work on this, including exploring the validity of the approximations is in . Note that there are no warnings included in this package for when you enter into areas where the model is not particularly valid.
How it Works
The AtomDB Kappa model uses the non-equilibrium emissivity data from the AtomDB project, combined with their ionization and recombination rates (mostly from ) to determine the spectrum. When a spectrum is required, the following steps are carried out:
- The Hahn and Savin coefficients are calculated, to seee what Maxwellian temperatures (Tm) are required and with what normalizations to create the kappa distribution
- The ionization and recombination rates are calculated at each Tm, and then summed to provide kappa ionization and recombination rates. For Tm outside the nominal 10^4 to 10^9 Kelvin range of AtomDB data, the ionization and recombination data can be extrappolated fairly safely.
- The ionization fraction for each ion is calculated using these kappa ionization and recombination rates
- For each ion present in the resulting ionization fraction, the spectrum is calculated at each Tm and then summed appropriately to give a final specturm. As spectra cannot easily be extrappolated, and Tm outside 10^4 to 10^9 K are ignored. Again, this can lead to unrealistic results.
|||Hahn and Savin Paper|
|||Cui, in prep|
Standard python installation
python setup.py install
Kronos is a python 3 only module. Depending on your system's setup, you may need to substitute
python3 for all references to
There are several useful flags that can be provided to this call, depending on your system:
--userflag causes installation in the user's home directory (useful if you lack root priviliges)
installwill install links to the current directory. This is useful if you want to edit/debug/develop the files further.
Mostly just make a kappa object, then call it
import kappa # make a quick, 2-elements kapp model a=kappa.kappamodel(elements=[6,8]) ebins = numpy.linspace(0.01,5,1001) kp = 5.0 T = 2e5 spectrum = a.calc_spectrum(kp, T, ebins)
To use the model in XSPEC, one can ignore the class details above. Unfortunately, the code only works with the XSPEC python interface, pyxspec for now. Before loading the code, you will need to edit the
kappa_xspec.py file to change the data file paths.
The kappa_xspec module contains all you need to load the kappa model into XSPEC. From a python3 shell:
# import the xspec python module import xspec # import acx2 wrapper import kappa_xspec
Once this is done, the data will load.
Three different models are loaded:
- kappa : Emission from kappa spectrum with the 14 main elements. Abundance is tied between all elements (so there is only 1 abundance keyword). Analogous to the apec model.
- vkappa : Emission from kappa spectrum with the 14 main elements. Abundance is free to vary between all the elements (though it starts frozen). Analagous to the vapec model.
- vvkappa : Emission from 27 elements, H through Ni excluding Co. Abundance is free to vary between all the elements.
Note that in the kappa and vkappa cases, unlike in the apec and vapec models, the effective abundance of the minor recombining elements is 0, not solar. This speeds up calculation time and does not significantly affect the resulting emission.
Once you have this, models can be used in pyxspec in the usual way, e.g.
m = xspec.Model('tbabs(pow+kappa)')
|kT||Plasma temperature (keV). Used for recombining particle ion fraction|
|kappa||The degree of non-Maxwellianness of the electrons|
|abund||recombining elemental abundances. (given by individual element in vacx and vvacx)|
0.1.0 May 27th 2019 Initial release
0.2.0 July 9th 2019 Error in the ionization balance calculation fixed.