ion¶
-
class
ChiantiPy.core.
ion
(ionStr, temperature=None, eDensity=None, pDensity='default', radTemperature=None, rStar=None, abundance=None, setup=True, em=None, verbose=0)[source] [edit on github]¶ Bases:
ChiantiPy.base.ionTrails
,ChiantiPy.base.specTrails
The top level class for performing spectral calculations for an ion in the CHIANTI database.
Parameters: ionStr :
str
CHIANTI notation for the given ion, e.g. ‘fe_12’ that corresponds to the
Fe XII
ion.temperature :
float
orndarray
, optionalTemperature array (Kelvin)
eDensity :
float
orndarray
, optionalElectron density array (\(\mathrm{cm^{-3}}\) )
pDensity :
float
orndarray
, optionalProton density (\(\mathrm{cm}^{-3}\) )
radTemperature :
float
orndarray
, optionalRadiation black-body temperature (in Kelvin)
rStar :
float
orndarray
, optionalDistance from the center of the star (in stellar radii)
abundance :
float
orstr
, optionalElemental abundance relative to Hydrogen or name of CHIANTI abundance file to use, without the ‘.abund’ suffix, e.g. ‘sun_photospheric_1998_grevesse’.
If True, run ion setup function. Otherwise, provide a limited number of attributes of the selected ion
em :
float
orndarray
, optionalEmission Measure, for the line-of-sight emission measure (\(\mathrm{\int \, n_e \, n_H \, dl}\)) (\(\mathrm{cm}^{-5}\).), for the volumetric emission measure \(\mathrm{\int \, n_e \, n_H \, dV}\) (\(\mathrm{cm^{-3}}\)).
Notes
The keyword arguments temperature, eDensity, radTemperature, rStar, em must all be either a float or have the same dimension as the rest if specified as lists, tuples or arrays.
The
Defaults
dict should have the following keys:- abundfile, the elemental abundance file, unless specified in chiantirc this defaults to sun_photospheric_1998_grevesse.
- ioneqfile, the ionization equilibrium file name. Unless specified in ‘chiantirc’ this is defaults to chianti. Other choices are availble in $XUVTOP/ioneq
- wavelength, the units of wavelength (Angstroms, nm, or kev), unless specified in the ‘chiantirc’ this is defaults to ‘angstrom’.
- flux, specified whether the line intensities are give in energy or photon fluxes, unless specified in the ‘chiantirc’ this is defaults to energy.
- gui, specifies whether to use gui selection widgets (True) or to make selections on the command line (False). Unless specified in the ‘chiantirc’ this is defaults to False.
Attributes
IonStr ( str
) Name of element plus ion, e.g.fe_12
for Fe XIIZ ( int
) the nuclear charge, 26 forfe_12
.Ion ( int
) the ionization stage, 12 forfe_12
.Dielectronic ( bool
) true if the ion is a ‘dielectronic’ ion where the levels are populated by dielectronic recombination.Spectroscopic ( str
) the spectroscopic notation for the ion, such asFe XII
forfe_12
.Filename ( str
) the complete name of the filegeneric
filename in the CHIANTI database, such as$XUVTOP/fe/fe_12/fe_12
.Ip ( float
) the ionization potential of the ionFIP ( float
) the first ionization potential of the elementDefaults ( dict
) these are specified by the software unless a chiantirc file is found in ‘$HOME/.chianti’:Methods Summary
boundBoundLoss
([allLines])Calculate the summed radiative loss rate for all spectral lines of the specified ion. cireclvlDescale
(lvlType)Interpolate and extrapolate cilvl and reclvl rates. diCross
([energy, verbose])Calculate the direct ionization cross section as a function of the incident electron energy in eV, puts values into DiCross diRate
()Calculate the direct ionization rate coefficient as a function of temperature (K) drRate
()Provide the dielectronic recombination rate coefficient as a function of temperature (K). drRateLvl
([verbose])to calculate the level resolved dielectronic rate from the higher ionization stage to the ion of interest rates are determined from autoionizing A-values the dictionary self.DrRateLvl contains rate = the dielectronic rate into an autoionizing level effRate = the dielectronic rate into an autoionizing level mutilplied by the branching ratio for a stabilizing transition totalRate = the sum of all the effRates eaCross
([energy, verbose])Provide the excitation-autoionization cross section. eaDescale
()Calculates the effective collision strengths (upsilon) for excitation-autoionization as a function of temperature. eaRate
()Calculate the excitation-autoionization rate coefficient. emiss
([allLines])Calculate the emissivities for lines of the specified ion. emissList
([index, wvlRange, wvlRanges, top, …])List the emissivities. emissPlot
([index, wvlRange, top, linLog, …])Plot the emissivities. emissRatio
([wvlRange, wvlRanges, top])Plot the ratio of 2 lines or sums of lines. gofnt
([wvlRange, top, verbose, plot])Calculate the ‘so-called’ G(T) function. intensity
([allLines])Calculate the intensities for lines of the specified ion. intensityRatioInterpolate
(data[, scale, …])to take a set of date and interpolate against the IntensityRatio the scale can be one of ‘lin’/’linear’ [default], ‘loglog’, ‘logx’, ‘logy’, ioneqOne
()Provide the ionization equilibrium for the selected ion as a function of temperature. ionizCross
([energy])Provides the total ionization cross section. ionizRate
()Provides the total ionization rate. p2eRatio
()Calculates the proton density to electron density ratio using Eq. popPlot
([top, plotFile, outFile, pub])Plots populations vs temperature or eDensity. populate
([popCorrect, verbose])Calculate level populations for specified ion. recombRate
()Provides the total recombination rate coefficient. rrRate
()Provide the radiative recombination rate coefficient as a function of temperature (K). setup
([alternate_dir, verbose])Setup various CHIANTI files for the ion including .wgfa, .elvlc, .scups, .psplups, .reclvl, .cilvl, and others. setupIonrec
([alternate_dir, verbose])Setup method for ion recombination and ionization rates. spectrum
(wavelength[, filter, label, allLines])Calculates the line emission spectrum for the specified ion. twoPhoton
(wvl[, verbose])to calculate the two-photon continuum - only for hydrogen- and helium-like ions includes the elemental abundance and the ionization equilibrium includes the emission measure if specified twoPhotonEmiss
(wvl)To calculate the two-photon continuum rate coefficient - only for hydrogen- and helium-like ions twoPhotonLoss
()to calculate the two-photon energy loss rate - only for hydrogen- and helium-like ions includes the elemental abundance and the ionization equilibrium does not include the emission measure upsilonDescale
([prot])Provides the temperatures and effective collision strengths (upsilons) set prot for proton rates otherwise, ce will be set for electron collision rates uses the new format “scups” files upsilonDescaleSplups
([prot, diel])Provides the temperatures and effective collision strengths (upsilons) set prot for proton rates otherwise, ce will be set for electron collision rates Methods Documentation
-
boundBoundLoss
(allLines=1)[source] [edit on github]¶ Calculate the summed radiative loss rate for all spectral lines of the specified ion.
Parameters: allLines :
bool
If True, include losses from both observed and unobserved lines. If False, only include losses from observed lines.
includes elemental abundance and ionization fraction.
Returns: creates the attribute:
BoundBoundLoss :
dict
with the keys below.rate : the radiative loss rate (\(\mathrm{erg \, cm^{-3}} \, \mathrm{s}^{-1}\)) per unit emission measure.
temperature : (K).
eDensity : electron density (\(\mathrm{cm^{-3}}\))
-
cireclvlDescale
(lvlType)[source] [edit on github]¶ Interpolate and extrapolate cilvl and reclvl rates. lvltype must be either ‘reclvl’, ‘cilvl’ or ‘rrlvl’ Used in level population calculations.
-
diCross
(energy=None, verbose=False)[source] [edit on github]¶ Calculate the direct ionization cross section as a function of the incident electron energy in eV, puts values into DiCross
-
diRate
()[source] [edit on github]¶ Calculate the direct ionization rate coefficient as a function of temperature (K)
-
drRate
()[source] [edit on github]¶ Provide the dielectronic recombination rate coefficient as a function of temperature (K).
-
drRateLvl
(verbose=0)[source] [edit on github]¶ to calculate the level resolved dielectronic rate from the higher ionization stage to the ion of interest rates are determined from autoionizing A-values the dictionary self.DrRateLvl contains rate = the dielectronic rate into an autoionizing level effRate = the dielectronic rate into an autoionizing level mutilplied by the branching ratio for a stabilizing transition totalRate = the sum of all the effRates
-
eaCross
(energy=None, verbose=False)[source] [edit on github]¶ Provide the excitation-autoionization cross section.
Energy is given in eV.
-
eaDescale
()[source] [edit on github]¶ Calculates the effective collision strengths (upsilon) for excitation-autoionization as a function of temperature.
-
eaRate
()[source] [edit on github]¶ Calculate the excitation-autoionization rate coefficient.
-
emiss
(allLines=True)[source] [edit on github]¶ Calculate the emissivities for lines of the specified ion.
units: ergs s^-1 str^-1
Does not include elemental abundance or ionization fraction
Wavelengths are sorted
set allLines = True to include unidentified lines
-
emissList
(index=-1, wvlRange=None, wvlRanges=None, top=10, relative=0, outFile=0)[source] [edit on github]¶ List the emissivities.
wvlRange, a 2 element tuple, list or array determines the wavelength range
Top specifies to plot only the top strongest lines, default = 10
normalize = 1 specifies whether to normalize to strongest line, default = 0
-
emissPlot
(index=-1, wvlRange=None, top=10, linLog='lin', relative=0, verbose=0, plotFile=0, saveFile=0)[source] [edit on github]¶ Plot the emissivities.
wvlRange, a 2 element tuple, list or array determines the wavelength range
Top specifies to plot only the top strongest lines, default = 10
linLog specifies a linear or log plot, want either lin or log, default = lin
normalize = 1 specifies whether to normalize to strongest line, default = 0
-
emissRatio
(wvlRange=None, wvlRanges=None, top=10)[source] [edit on github]¶ Plot the ratio of 2 lines or sums of lines. Shown as a function of density and/or temperature. For a single wavelength range, set wvlRange = [wMin, wMax] For multiple wavelength ranges, set wvlRanges = [[wMin1,wMax1],[wMin2,wMax2], …] A plot of relative emissivities is shown and then a dialog appears for the user to choose a set of lines.
-
gofnt
(wvlRange=0, top=10, verbose=0, plot=True)[source] [edit on github]¶ Calculate the ‘so-called’ G(T) function.
Given as a function of both temperature and eDensity.
Only the top( set by ‘top’) brightest lines are plotted. the G(T) function is returned in a dictionary self.Gofnt
-
intensity
(allLines=1)[source] [edit on github]¶ Calculate the intensities for lines of the specified ion.
units: ergs cm^-3 s^-1 str^-1
includes elemental abundance and ionization fraction.
the emission measure ‘em’ is included if specified
-
intensityRatioInterpolate
(data, scale='lin', plot=0, verbose=0)[source] [edit on github]¶ to take a set of date and interpolate against the IntensityRatio the scale can be one of ‘lin’/’linear’ [default], ‘loglog’, ‘logx’, ‘logy’,
-
ioneqOne
()[source] [edit on github]¶ Provide the ionization equilibrium for the selected ion as a function of temperature. returned in self.IoneqOne
-
ionizCross
(energy=None)[source] [edit on github]¶ Provides the total ionization cross section.
Notes
-
ionizRate
()[source] [edit on github]¶ Provides the total ionization rate.
Calls diRate and eaRate.
-
p2eRatio
()[source] [edit on github]¶ Calculates the proton density to electron density ratio using Eq. 7 of [R59].
Notes
Uses the abundance and ionization equilibrium.
References
[R59] (1, 2) Young, P. R. et al., 2003, ApJS, 144, 135
-
popPlot
(top=10, plotFile=0, outFile=0, pub=0)[source] [edit on github]¶ Plots populations vs temperature or eDensity.
top specifies the number of the most highly populated levels to plot if pub is set, the want publication plots (bw, lw=2).
-
populate
(popCorrect=1, verbose=0, **kwargs)[source] [edit on github]¶ Calculate level populations for specified ion. possible keyword arguments include temperature, eDensity, pDensity, radTemperature and rStar
-
recombRate
()[source] [edit on github]¶ Provides the total recombination rate coefficient.
-
rrRate
()[source] [edit on github]¶ Provide the radiative recombination rate coefficient as a function of temperature (K).
-
setup
(alternate_dir=None, verbose=False)[source] [edit on github]¶ Setup various CHIANTI files for the ion including .wgfa, .elvlc, .scups, .psplups, .reclvl, .cilvl, and others.
Parameters: alternate_dir :
str
directory cotaining the necessary files for a ChiantiPy ion; use to setup an ion with files not in the current CHIANTI directory
verbose :
bool
Notes
If ion is initiated with
setup=False
, call this method to do the setup at a later point.
-
setupIonrec
(alternate_dir=None, verbose=False)[source] [edit on github]¶ Setup method for ion recombination and ionization rates.
Notes
Allows a bare-bones ion object to be setup up with just the ionization and recombination rates. For ions without a complete set of files - one that is not in the MasterList.
-
spectrum
(wavelength, filter=(<function gaussianR>, 1000.0), label=0, allLines=1)[source] [edit on github]¶ Calculates the line emission spectrum for the specified ion.
Convolves the results of intensity to make them look like an observed spectrum the default filter is the gaussianR filter with a resolving power of 1000. Other choices include chianti.filters.box and chianti.filters.gaussian. When using the box filter, the width should equal the wavelength interval to keep the units of the continuum and line spectrum the same.
includes ionization equilibrium and elemental abundances
can be called multiple times to use different filters and widths uses label to keep the separate applications of spectrum sorted by the label for example, do .spectrum( …. labe=’test1’) and do .spectrum( …. label = ‘test2’) then will get self.Spectrum.keys() = test1, test2 and self.Spectrum[‘test1’] = {‘intensity’:aspectrum, ‘wvl’:wavelength, ‘filter’:useFilter.__name__, ‘filterWidth’:useFactor}
Notes
scipy.ndimage.filters also includes a range of filters.
-
twoPhoton
(wvl, verbose=False)[source] [edit on github]¶ to calculate the two-photon continuum - only for hydrogen- and helium-like ions includes the elemental abundance and the ionization equilibrium includes the emission measure if specified
-
twoPhotonEmiss
(wvl)[source] [edit on github]¶ To calculate the two-photon continuum rate coefficient - only for hydrogen- and helium-like ions
-
twoPhotonLoss
()[source] [edit on github]¶ to calculate the two-photon energy loss rate - only for hydrogen- and helium-like ions includes the elemental abundance and the ionization equilibrium does not include the emission measure
-
upsilonDescale
(prot=0)[source] [edit on github]¶ Provides the temperatures and effective collision strengths (upsilons) set prot for proton rates otherwise, ce will be set for electron collision rates uses the new format “scups” files
-
upsilonDescaleSplups
(prot=0, diel=0)[source] [edit on github]¶ Provides the temperatures and effective collision strengths (upsilons) set prot for proton rates otherwise, ce will be set for electron collision rates