Tanabe-Tsugano diagram d^10 configuration

asked by Riccardo Piombo (2020/03/05 18:37)

Hi everyone,

While doing the Tanabe-Tsugano diagram of a transition metal (TM) complex, as the CuO square planar structure, I realized that when the electronic structure of the TM involves a d^n configuration with n<10 (in CuO n=9) everything's fine but when it involves an n=10 d^n configuration, as in the octahedral AgF case, my code gives me the following error: “bad argument #1 to 'pairs' (table expected, got user data)”. Here is the part of the code to which the error refers:

H_Ag = OppUdd + OppCF_4d 

H_F  = OppUpp + OppCF_Ld 

H_Cluster = H_Ag + H_F
H_0 = H_Cluster + H_Zeeman + H_Hz_ext
H_0.Name = "Cluster hamiltonian without hopping Tpd

print("N-body states energies computation")
StartRestrictions1 = {NF, NB, {"1111111111 1111111111",n4d+nL,n4d+nL}}

Npsi_i = math.Binomial(NF,n4d+nL)
psiList_N = Eigensystem(H_0, StartRestrictions1, Npsi_i)
--psiList_N = {psiList_N} 
file = assert(io.open("EnergyLevelDiagram", "w"))

print("Energy level diagram computation")
print("Loop on tuning parameter lambda")

lambda = 0.

for i=0, 25 do
  lambda = 0.1*i
  io.write(string.format("lambda = -%5.3f\n ",lambda))
  file:write(string.format("%14.7E ",lambda))
  ---> lambda == tuning parameter
  H_pert = H_0 + lambda*(-1)*OppHopLd4d 
  Eigensystem(H_pert, psiList_N)
  for key,value in pairs(psiList_N) do   -------> ERROR IS HERE!!!
    energy = value * H_pert * value
    file:write(string.format("%14.7E ",energy))

The other way around if I uncomment the following line of code (the twelfth row from the beginning of the script):

psiList_N = {psiList_N} 

The calculation is successful but it gives me an empty diagram. Can everyone please help me? Thanks in advance

P.S should the problem be linked with the fact that a d10 configuration is made by a single Slater determinant?


, 2020/03/09 11:39

The function Eigensystem behaves differently if Npsi=1 or larger than one. For a single state it returns a wave-function, for multiple states it returns a list of wave-functions.

The way Marius in Crispy circumvented this behaviour is by adding the following line after the function Eigensystem:

if not (type(PsiList_N) == 'table') then
        PsiList_N = {PsiList_N}

Last but not least, note that the energy level diagram for a $d^{10}$ configuration is rather simple.

Best wishes, Maurits

, 2020/03/11 11:17, 2020/03/11 11:25

Of course, it doesn't exist. When I talked about the Tanabe-Sugano diagram I was not precise: I meant a diagram of the energy levels varying Tpd (p-d hybridization) and not the usual 10Dq parameter of the octahedral crystal field splitting. Although they have different physical meaning they share a common argument. You can check that looking at the hamiltonian H0 in the code which does not contain any hopping term. The term lambda * (-1) * OppHopLd4d takes the place of the term tenDq * OpptenDq which can be found in the example on NiO.



   TdLeg  = Tpd
    TdLt2g = Tpd/2.

    Akm_dL = {{0, 0, (2/5)*(TdLeg) + (3/5)*(TdLt2g)} , 
       {4, 0, (21/10)*(TdLeg + (-1)*(TdLt2g))} , 
       {4,-4, (3/2)*((sqrt(7/10))*(TdLeg + (-1)*(TdLt2g)))} , 
       {4, 4, (3/2)*((sqrt(7/10))*(TdLeg + (-1)*(TdLt2g)))} }
    OppHopLd4d  = NewOperator("CF", NF, IndexUp_4d, IndexDn_4d, IndexUp_Ld, IndexDn_Ld, Akm_dL) +  
                  NewOperator("CF", NF, IndexUp_Ld, IndexDn_Ld, IndexUp_4d, IndexDn_4d, Akm_dL)
    OppHopLd4d.Name = "Oh P-d hybridization"
You could leave a comment if you were logged in.