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])