proEQUIB – IDL Library for Equilibrium Atomic Populations and Line Emissivities

proEQUIB is a collection of IDL programs developed to calculate atomic level populations and line emissivities in statistical equilibrium in multi-level atoms for different physical conditions of the stratification layers where the chemical elements are ionized. proEQUIB includes the IDL version of the program EQUIB, which was originally written in FORTRAN by Howarth & Adams (1981), and was recently converted to IDL. It uses the IDL implementation of the MIDAS scripts by X. W. Liu and Y. Zhang from MOCASSIN for some heavy element recombination emissivities.

Usage
Plasma Diagnostics
Atom_Elj_file='/AtomNeb/atomic-data/chianti70/AtomElj.fits'
Atom_Omij_file='/AtomNeb/atomic-data/chianti70/AtomOmij.fits'
Atom_Aij_file='/AtomNeb/atomic-data/chianti70/AtomAij.fits'

atom='s'
ion='ii'
s_ii_elj=atomneb_read_elj(Atom_Elj_file, atom, ion, level_num=5) ; read Energy Levels (Ej) 
s_ii_omij=atomneb_read_omij(Atom_Omij_file, atom, ion) ; read Collision Strengths (Omegaij)
s_ii_aij=atomneb_read_aij(Atom_Aij_file, atom, ion) ; read Transition Probabilities (Aij)\ 

upper_levels='1,2,1,3/'   
lower_levels='1,5/'
density = double(2550)
line_flux_ratio=double(10.753)
temperature=calc_temperature(line_flux_ratio=line_flux_ratio, density=density, $
                          upper_levels=upper_levels, lower_levels=lower_levels, $
                          elj_data=s_ii_elj, omij_data=s_ii_omij, $
                          aij_data=s_ii_aij)
print, "Electron Temperature:", temperature

upper_levels='1,2/'   
lower_levels='1,3/'
diagtype='D'
temperature=double(7000.0);
line_flux_ratio=double(1.506);
density=calc_density(line_flux_ratio=line_flux_ratio, temperature=temperature, $
                     upper_levels=upper_levels, lower_levels=lower_levels, $
                     elj_data=s_ii_elj, omij_data=s_ii_omij, $
                     aij_data=s_ii_aij)
print, "Electron Density:", density
Abundance Analysis
Atom_Elj_file='/AtomNeb/atomic-data/chianti70/AtomElj.fits'
Atom_Omij_file='/AtomNeb/atomic-data/chianti70/AtomOmij.fits'
Atom_Aij_file='/AtomNeb/atomic-data/chianti70/AtomAij.fits'
Atom_RC_SH95_file='/AtomNeb/atomic-data-rc/rc_SH95.fits'

atom='h'
ion='ii' ; H I Rec
hi_rc_data=atomneb_read_aeff_sh95(Atom_RC_SH95_file, atom, ion)

atom='o'
ion='iii' ; [O III]
o_iii_elj=atomneb_read_elj(Atom_Elj_file, atom, ion, level_num=5) ; read Energy Levels (Ej) 
o_iii_omij=atomneb_read_omij(Atom_Omij_file, atom, ion) ; read Collision Strengths (Omegaij)
o_iii_aij=atomneb_read_aij(Atom_Aij_file, atom, ion) ; read Transition Probabilities (Aij)

levels5007='3,4/'
temperature=double(10000.0)
density=double(5000.0)
iobs5007=double(1200.0)
Abb5007=double(0.0) 

Abb5007=calc_abundance(temperature=temperature, density=density, $
                       line_flux=iobs5007, atomic_levels=levels5007,$
                       elj_data=o_iii_elj, omij_data=o_iii_omij, $
                       aij_data=o_iii_aij, h_i_aeff_data=hi_rc_data[0].Aeff)
print, Abb5007

Acknowledgement

A. Danehkar (2018) PASA 35:e005