CreateAtomicIndicesList(orbs) takes a list of strings and tries to interpret each as an atomic orbital by checking the last characters. If these are either 's', 'p', 'd', 'f', 'g' or 'h' the string will be interpreted as a non-relativistic orbital with the corresponding l quantum number, separated into Up and Down states. If the string ends on “1/2”, “12”, “3/2”, “32”,…, “9/2” or “92” it will be interpreted as a relativistic orbital with the corresponding j quantum number.
The function then assigns quantum numbers to these states.
Compare CreateAtomicIndicesDict().
A small Example:
orbitalsNonRel = {"H_1s","Fe_2s","Fe_2p","Fe_3s","Fe_3d"} orbitalsRel = {"H_1s12","Fe_2s12","Fe_3s12","Fe_2p12","Fe_2p32","Fe_3d32","Fe_3d52"} IndNonRel, NFNonRel = CreateAtomicIndicesList(orbitalsNonRel) IndRel, NFRel = CreateAtomicIndicesList(orbitalsRel) print("\nIndNonRel:") print(IndNonRel) print("\nNFNonRel:") print(NFNonRel) print("\nIndRel:") print(IndRel) print("\nNFRel:") print(NFRel)
IndNonRel: { { 0 } , { 1 } , { 2 } , { 3 } , { 4 , 6 , 8 } , { 5 , 7 , 9 } , { 10 } , { 11 } , { 12 , 14 , 16 , 18 , 20 } , { 13 , 15 , 17 , 19 , 21 } } NFNonRel: 22 IndRel: { { 0 , 1 } , { 2 , 3 } , { 4 , 5 } , { 6 , 7 } , { 8 , 9 , 10 , 11 } , { 12 , 13 , 14 , 15 } , { 16 , 17 , 18 , 19 , 20 , 21 } } NFRel: 22