11import os
22import sys
3+ import typing as t
34from collections import defaultdict
45from collections import namedtuple
56
1718reversedalphabets = "zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA "
1819lchars = "SPDFGHIKLMNOPQRSTUVWXYZ"
1920
20- term_index_tuple = namedtuple ("term_index_tuple" , "twosplusone lval parity indexinsymmetry" )
21+
22+ class NaharEnergyLevel (t .NamedTuple ):
23+ indexinsymmetry : int
24+ TC : int
25+ corestateid : int
26+ elecn : int
27+ elecl : int
28+ energyreltoionpotrydberg : float
29+ twosplusone : int
30+ l : int
31+ parity : int
32+ energyabovegsinpercm : float
33+ g : int
34+ naharconfiguration : str
2135
2236
2337def read_nahar_energy_level_file (path_nahar_energy_file , atomic_number , ion_stage , flog ):
24- nahar_energy_level_row = namedtuple (
25- "energylevel" ,
26- "indexinsymmetry TC corestateid elecn elecl energyreltoionpotrydberg twosplusone l parity"
27- " energyabovegsinpercm g naharconfiguration" ,
28- )
2938 nahar_configurations = {}
30- nahar_energy_levels = [None ]
39+ nahar_energy_levels : list [ NaharEnergyLevel | None ] = [None ]
3140 nahar_level_index_of_state = {}
3241 nahar_core_states = []
3342
@@ -88,7 +97,11 @@ def read_nahar_energy_level_file(path_nahar_energy_file, atomic_number, ion_stag
8897 for _ in range (number_of_states_in_symmetry ):
8998 row = fenlist .readline ().split ()
9099 indexinsymmetry = int (row [0 ])
100+ TC = int (row [1 ])
91101 nahar_core_state_id = int (row [2 ])
102+ elecn = int (row [3 ])
103+ elecl = int (row [4 ])
104+ energyreltoionpotrydberg = float (row [5 ])
92105 if nahar_core_state_id < 1 or nahar_core_state_id > len (nahar_core_states ):
93106 flog .write (
94107 "Core state id of {:d}{}{} index {:d} is invalid (={:d}, Ncorestates={:d}). Setting"
@@ -103,7 +116,22 @@ def read_nahar_energy_level_file(path_nahar_energy_file, atomic_number, ion_stag
103116 )
104117 nahar_core_state_id = 1
105118
106- nahar_energy_levels .append (nahar_energy_level_row (* row , twosplusone , l_val , parity , - 1.0 , 0 , "" )) # ty:ignore[too-many-positional-arguments]
119+ nahar_energy_levels .append (
120+ NaharEnergyLevel (
121+ indexinsymmetry ,
122+ TC ,
123+ nahar_core_state_id ,
124+ elecn ,
125+ elecl ,
126+ energyreltoionpotrydberg ,
127+ twosplusone ,
128+ l_val ,
129+ parity ,
130+ - 1.0 ,
131+ 0 ,
132+ "" ,
133+ )
134+ )
107135
108136 energyabovegsinpercm = (
109137 (nahar_ionization_potential_rydberg + float (nahar_energy_levels [- 1 ].energyreltoionpotrydberg )) # ty:ignore[possibly-missing-attribute]
0 commit comments