Function adas.xxdata_23

def xxdata_23(file=None, add_total=False)

Reads an adf23 ionization file and returns all of its contents in a dictionary.

Parameters

file : str
full name of ADAS adf23 file
add_total : bool
if True add the total rates to the fulldata result. if False only return data in adf23 fle. This is the default.

Returns

fulldata : dict
contents of the adf23 file
    'seq'         :  iso-electronic sequence symbol (string)
    'iz0'         :  nuclear charge
    'iz'          :  ionising ion charge
    'iz1'         :  ionised ion charge (=iz+1)
    'ctype'       :  adf23 file resol. ('ca', 'ls' or 'ic')
    'bwno_f'      :  ionisation potential of ionised ion (cm-1)
    'nlvl_f'      :  number of levels of ionised ion
    'lmet_f'      :  True  => ionised metastables marked
                     False =>                     unmarked
    'lcstrg_f'    :  True  => standard config strings for ionised ion states
                     False => cannot be determined
    'ia_f'        :  index of ionised ion levels
                        (ndlev) : ionised ion level index
    'code_f'      :  met. or excit. DR parent marker (* or #)
                        (ndlev) : ionised ion level index
    'cstrga_f'    :  ionised ion configuration strings
                        (ndlev) : ionised ion level index
    'isa_f'       :  ionised ion level multiplicity
                        (ndlev) : ionised ion level index
    'ila_f'       :  ionised ion total orb. ang. mom.
                        (ndlev) : ionised ion level index
    'xja_f'       :  ionised ion level (statistical weight-1)/2
                        (ndlev) : ionised ion level index
    'wa_f'        :  ionised ion level wave number (cm-1)
                        (ndlev) : ionised ion level index
    'nmet_f'      :  number of ionised ion metastables
    'imeta_f'     :  pointers to ionised metastables in full ionised ion state list
                        (ndlev) : ionised ion level index
    'bwno_i'      :  ionis. poten. of ionising ion (cm-1)
    'nlvl_i'      :  number of levels of ionising ion
    'lmet_i'      :  True  => ionising metastables marked
                     False =>                     unmarked
    'lcstrg_i'    :  True  => standard config strings for ionising ion states
                     False => cannot be determined
    'ia_i'        :  index of ionising ion levels
                        (ndlev) : ionising ion level index
    'code_i'      :  met. or excit. DR parent marker (* or #)
                        (ndlev) : ionising ion level index
    'cstrga_i'    :  ionising ion configuration strings
                        (ndlev) : ionising ion level index
    'isa_i'       :  ionising ion level multiplicity
                        (ndlev) : ionising ion level index
    'ila_i'       :  ionising ion total orb. ang. mom.
                        (ndlev) : ionising ion level index
    'xja_i'       :  ionising ion level (stat wt-1)/2
                        (ndlev) : ionising ion level index
    'wa_i'        :  ionising ion level wave number (cm-1)
                        (ndlev) : ionising ion level index
    'nmet_i'      :  number of ionising ion metastables
    'imeta_i'     :  pointers to ionising metastables in full ionising ion state list
                        (ndlev) : ionised ion level index
    'nte_ion'     :  number of temperatures for direct ionisation
                     data for initial metastable block
                        (ndmet) : ionising ion metastable index
    'tea_ion'     :  temperatures (K) for direct ionisation
                     data for initial metastable blockdblarr
                        (ndmet) : ionising ion metastable index
                        (ndtem) : temperature index
    'lqred_ion'   :  True  => direct ionisation data line present for ionised ion state
                     False => missing
                        (ndmet) : ionising ion metastable index
                        (ndlev) : ionised ion state index
    'qred_ion'    :  reduced direct ionisation rate coefficients
                        (ndmet) : ionising ion metastable index
                        (ndlev) : ionised ion state index
                        (ndtem) : temperature index
    'nf_a'        :  number of Auger ionised ion final states
                        (ndmet) : ionising ion metastable index
    'indf_a'      :  Auger ionised ion final state
                        (ndmet) : ionising ion metastable index
                        (ndlev) : final state index
    'lyld_a'      :  True  => Auger data for ionising ion excited state present
                     False => No Auger data
                        (ndmet) : ionising ion metastable index
                        (ndlev) : initial state index
    'yld_a'       :  Auger yields
                        (ndmet) : ionising ion metastable index
                        (ndlev) : ionising ion excited state index
                        (ndlev) : ionised ion excited state index
    'nte_exc'     :  number of temperatures for excitation
                        (ndmet) : ionising ion metastable index
    'tea_exc'     :  temperatures (K) for direct excitation data for
                     initial metastable block
                        (ndmet) : ionising ion metastable index
                        (ndtem) : temperature index
    'lqred_exc'   :  True  => direct excitation data line present for excited ion state
                     False => no data
                        (ndmet) : ionising ion metastable index
                        (ndlev) : ionising ion excited state index
    'qred_exc'    :  reduced excitation rate coefficients
                        (ndmet) : ionising ion metastable index
                        (ndlev) : ionising ion excited state index
                        (ndtem) : temperature index
    'l_ion'       :  True  => ionisation data present for metastable
                     False => not present
                        (ndmet) : ionising ion metastable index
    'l_aug'       :  True  => Auger data present for metastable
                     False => not present
                        (ndmet) : ionising ion metastable index
    'l_exc'       :  True  => excitation data present for metastable
                     False => not present
                        (ndmet) : ionising ion metastable index

    'szd_ion'     : if add_total==True the direct rate coefficient
                        (ndmet) : ionising ion metastable index
                        (ndlev) : ionised ion state index
                        (ndtem) : temperature index
    'szd_ea'      : if add_total==True the excitation-autoionization rate coefficient
                        (ndmet) : ionising ion metastable index
                        (ndlev) : ionised ion state index
                        (ndtem) : temperature index
    'szd_tot'     : if add_total==True the total rate coefficient
                        (ndmet) : ionising ion metastable index
                        (ndlev) : ionised ion state index
                        (ndtem) : temperature index

Notes

As different dimensions for direct and EA temperatures are possible, the multi-dimension arrays use the max value for the number of temperatures.

The data in adf23 are reduced rates, ie rate / (Ip-delta_E) where Ip is the ionization potential and delta_E the energy difference between the metastables (direct) or the excited levels (EA).

The optional complete rate coefficients (direct, EA and total) are calculated by a call to xxtotl_23 and are in unit cm**3 s-1.

Calls a fortran based shared object file - not pure python.

References

ADAS manual description of adf23: http://www.adas.ac.uk/man/appxa-23.pdf

Version History

  • Martin O'Mullane, 17-08-2022
    • First version

Example

Examine the CADW ionization rate data for Ar6+. Show the final states, the temperatures used and the reduced rate from ground to ground. Also show the total (direct+EA) rate coefficient for this process.

>>> import adas as adas
>>> file = '/home/adas/adas/adf23/cadw#18/ca09_ar6.dat'
>>> fulldata = adas.xxdata_23(file, add_total=True)
>>> fulldata['cstrga_f']
array(['3s1', '2s1 2p6 3s2', '2s2 2p5 3s2'], dtype='<U11')
>>> fulldata['tea_ion'], fulldata['qred_ion'][0,0,:] 
(array([[9.80e+04, 2.45e+05, 4.90e+05, 9.80e+05, 2.45e+06, 4.90e+06,
         9.80e+06, 2.45e+07, 4.90e+07, 9.80e+07, 2.45e+08, 4.90e+08]]),
 array([1.01e-09, 1.46e-09, 1.78e-09, 2.02e-09, 2.13e-09, 2.05e-09,
        1.85e-09, 1.50e-09, 1.22e-09, 9.66e-10, 6.88e-10, 5.25e-10]))
>>> fulldata['szd_tot'][0,0,:]
array([4.08208075e-16, 4.06988280e-12, 1.03740707e-10, 6.70782694e-10,
       2.48761605e-09, 3.95940845e-09, 4.87920073e-09, 5.10168996e-09,
       4.73026425e-09, 4.13119675e-09, 3.25789743e-09, 2.63673523e-09])