CreateAtomicIndicesList

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().

Input

• orbs : A list of strings that can be interpreted as atomic orbitals.
• Possible Options are:
• “kappas”: Bool value. If set to true the Output has an entry Ind[“kappas”], which is a list of all $\kappa$ values of the states.

Output

• Ind : A list of lists of the indices corresponding to the orbitals given in orbs, in the same order.
• NF: The number of fermionic states in the system.

Example

A small Example:

Input

Example.Quanty
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)

Result

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