Number of states
asked by BODRY TEGOMO CHIOGO (2021/01/20 20:34)
Dear Quanty developers, I am working in the simulation of 3d XPS of cerium compounds with the full-multiplet configuration interaction approach. first of all, I started to calculate the ground state but I don't understand the number of states that Quanty gives in output when I take into account the spin orbit interaction. Indeed, wihtout spin orbit I got 6 states $f^1_{5/2}$,8 states $f^1_{7/2}$ and 1 states $f^0$. But when I take into account the spin orbit,the number of states corresponding to $f^1_{5/2}$ and $f^1_{7/2}$ are multiplied by 2 respectively. I got the same effet when i also took into account the crytal field. I expected to have same number of states with and without spin-orbit! Here is the 2 calculations with and without spin-orbit
1- without spin orbit i got 15 states:
# <E> <S^2> <L^2> <L_z^4f> <J^2> <l.s> <F[2]> <F[4]> <F[6]> <N^4f> <N^Lf> 1 -2.4570 0.0000 0.0000 -0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.9773 13.0227 2 -2.4000 1.1490 8.8431 -2.8367 9.9921 1.3720 0.0000 0.0000 0.0000 1.0000 13.0000 3 -2.4000 1.2120 16.8268 -1.9485 18.0388 0.7827 0.0000 0.0000 0.0000 1.0000 13.0000 4 -2.4000 1.0000 14.0000 -2.0000 15.0000 -0.5000 0.0000 0.0000 0.0000 1.0000 13.0000 5 -2.4000 1.0749 18.3876 -1.5786 19.4626 -0.4384 0.0000 0.0000 0.0000 1.0000 13.0000 6 -2.4000 1.0000 20.0000 -1.0000 21.0000 -0.5000 0.0000 0.0000 0.0000 1.0000 13.0000 7 -2.4000 1.0641 22.9427 -0.5272 24.0068 -0.4663 0.0000 0.0000 0.0000 1.0000 13.0000 8 -2.4000 1.0000 22.0000 0.0000 23.0000 -0.5000 0.0000 0.0000 0.0000 1.0000 13.0000 9 -2.4000 1.0641 22.9426 0.5272 24.0067 -0.4663 0.0000 0.0000 0.0000 1.0000 13.0000 10 -2.4000 1.0000 20.0000 1.0000 21.0000 -0.5000 0.0000 0.0000 0.0000 1.0000 13.0000 11 -2.4000 1.0749 18.3874 1.5786 19.4623 -0.4384 0.0000 0.0000 0.0000 1.0000 13.0000 12 -2.4000 1.0000 14.0000 2.0000 15.0000 -0.5000 0.0000 0.0000 0.0000 1.0000 13.0000 13 -2.4000 1.2120 16.8269 1.9485 18.0388 0.7827 0.0000 0.0000 0.0000 1.0000 13.0000 14 -2.4000 1.1490 8.8429 2.8367 9.9919 1.3720 0.0000 0.0000 0.0000 1.0000 13.0000 15 0.0570 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0227 13.9773
2- With spin orbit : zeta_4f = 0.087
# <E> <S^2> <L^2> <L_z^4f> <J^2> <l.s> <F[2]> <F[4]> <F[6]> <N^4f> <N^Lf> 1 -2.7432 1.0430 1.0430 -0.0002 0.0000 -1.9753 0.0000 0.0000 0.0000 0.9913 13.0087 2 -2.7202 1.7551 11.7551 -2.8571 12.0000 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 3 -2.7202 1.3299 13.1106 -2.4725 9.1628 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 4 -2.7202 1.5918 19.5918 -1.7143 20.0000 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 5 -2.7202 1.4783 22.6103 -1.2270 16.4360 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 6 -2.7202 1.5102 23.5102 -0.5714 24.0000 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 7 -2.7202 1.5266 25.7020 0.0001 18.8031 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 8 -2.7202 1.5102 23.5102 0.5714 24.0000 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 9 -2.7202 1.4783 22.6099 1.2271 16.4357 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 10 -2.7202 1.5918 19.5918 1.7143 20.0000 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 11 -2.7202 1.3298 13.1100 2.4726 9.1624 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 12 -2.7202 1.7551 11.7551 2.8571 12.0000 -2.0000 0.0000 0.0000 0.0000 1.0000 13.0000 13 -2.1945 0.9564 0.9564 -0.0003 0.0000 1.4667 0.0000 0.0000 0.0000 0.9853 13.0147 14 -2.1599 1.1096 9.9441 -2.7340 12.3684 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 15 -2.1599 1.7551 11.7551 -2.1429 12.0000 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 16 -2.1599 1.3487 18.5540 -1.8112 24.0873 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 17 -2.1599 1.5918 19.5918 -1.2857 20.0000 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 18 -2.1599 1.4886 23.5897 -0.9033 30.9415 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 19 -2.1599 1.5102 23.5102 -0.4286 24.0000 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 20 -2.1599 1.5348 25.2543 0.0000 33.2072 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 21 -2.1599 1.5102 23.5102 0.4286 24.0000 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 22 -2.1599 1.4886 23.5894 0.9033 30.9412 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 23 -2.1599 1.5918 19.5918 1.2857 20.0000 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 24 -2.1599 1.3487 18.5535 1.8112 24.0867 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 25 -2.1599 1.7551 11.7551 2.1429 12.0000 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 26 -2.1599 1.1095 9.9436 2.7341 12.3677 1.5000 0.0000 0.0000 0.0000 1.0000 13.0000 27 0.0577 0.0006 0.0006 0.0000 -0.0000 0.0086 0.0000 0.0000 0.0000 0.0235 13.9765
below is the script I used:
--Verbosity(0*0000) NF = 28 NB = 0 IndexDn_4f = {0,2,4,6,8,10,12} IndexUp_4f = {1,3,5,7,9,11,13} IndexDn_Lf = {14,16,18,20,22,24,26} IndexUp_Lf = {15,17,19,21,23,25,27} NElectrons_4f = 0 V = 0.1 Delta_4f_Lf_i = -2.4 NConfigurations = 2 Npsis = 27 OppSx_4f = NewOperator("Sx", NF, IndexUp_4f,IndexDn_4f) OppSy_4f = NewOperator("Sy", NF, IndexUp_4f,IndexDn_4f) OppSz_4f = NewOperator("Sz", NF, IndexUp_4f,IndexDn_4f) OppSsqr_4f = NewOperator("Ssqr", NF, IndexUp_4f,IndexDn_4f) OppSplus_4f = NewOperator("Splus", NF, IndexUp_4f,IndexDn_4f) OppSmin_4f = NewOperator("Smin", NF, IndexUp_4f,IndexDn_4f) OppLx_4f = NewOperator("Lx", NF, IndexUp_4f,IndexDn_4f) OppLy_4f = NewOperator("Ly", NF, IndexUp_4f,IndexDn_4f) OppLz_4f = NewOperator("Lz", NF, IndexUp_4f,IndexDn_4f) OppLsqr_4f = NewOperator("Lsqr", NF, IndexUp_4f,IndexDn_4f) OppLplus_4f = NewOperator("Lplus", NF, IndexUp_4f,IndexDn_4f) OppLmin_4f = NewOperator("Lmin", NF, IndexUp_4f,IndexDn_4f) OppJx_4f = NewOperator("Jx", NF, IndexUp_4f,IndexDn_4f) OppJy_4f = NewOperator("Jy", NF, IndexUp_4f,IndexDn_4f) OppJz_4f = NewOperator("Jz", NF, IndexUp_4f,IndexDn_4f) OppJsqr_4f = NewOperator("Jsqr", NF, IndexUp_4f,IndexDn_4f) OppJplus_4f = NewOperator("Jplus", NF, IndexUp_4f,IndexDn_4f) OppJmin_4f = NewOperator("Jmin", NF, IndexUp_4f,IndexDn_4f) Oppldots_4f = NewOperator("ldots", NF, IndexUp_4f,IndexDn_4f) -- Angular momentum operator for the figand f-shell OppSx_Lf = NewOperator("Sx", NF, IndexUp_Lf,IndexDn_Lf) OppSy_Lf = NewOperator("Sy", NF, IndexUp_Lf,IndexDn_Lf) OppSz_Lf = NewOperator("Sz", NF, IndexUp_Lf,IndexDn_Lf) OppSsqr_Lf = NewOperator("Ssqr", NF, IndexUp_Lf,IndexDn_Lf) OppSplus_Lf = NewOperator("Splus", NF, IndexUp_Lf,IndexDn_Lf) OppSmin_Lf = NewOperator("Smin", NF, IndexUp_Lf,IndexDn_Lf) OppLx_Lf = NewOperator("Lx", NF, IndexUp_Lf,IndexDn_Lf) OppLy_Lf = NewOperator("Ly", NF, IndexUp_Lf,IndexDn_Lf) OppLz_Lf = NewOperator("Lz", NF, IndexUp_Lf,IndexDn_Lf) OppLsqr_Lf = NewOperator("Lsqr", NF, IndexUp_Lf,IndexDn_Lf) OppLplus_Lf = NewOperator("Lplus", NF, IndexUp_Lf,IndexDn_Lf) OppLmin_Lf = NewOperator("Lmin", NF, IndexUp_Lf,IndexDn_Lf) OppJx_Lf = NewOperator("Jx", NF, IndexUp_Lf,IndexDn_Lf) OppJy_Lf = NewOperator("Jy", NF, IndexUp_Lf,IndexDn_Lf) OppJz_Lf = NewOperator("Jz", NF, IndexUp_Lf,IndexDn_Lf) OppJsqr_Lf = NewOperator("Jsqr", NF, IndexUp_Lf,IndexDn_Lf) OppJplus_Lf = NewOperator("Jplus", NF, IndexUp_Lf,IndexDn_Lf) OppJmin_Lf = NewOperator("Jmin", NF, IndexUp_Lf,IndexDn_Lf) Oppldots_Lf = NewOperator("ldots", NF, IndexUp_4f,IndexDn_4f) -- SUM OF THE OPERATOR OppSx = OppSx_4f + OppSx_Lf OppSy = OppSy_4f + OppSy_Lf OppSz = OppSz_4f + OppSz_Lf OppSsqr = OppSx*OppSx + OppSy*OppSy + OppSz*OppSz OppLx = OppLx_4f + OppLx_Lf OppLy = OppLy_4f + OppLy_Lf OppLz = OppLz_4f + OppLz_Lf OppLsqr = OppLx*OppLx + OppLy*OppLy + OppLz*OppLz OppJx = OppJx_4f + OppJx_Lf OppJy = OppJy_4f + OppJy_Lf OppJz = OppJz_4f + OppJz_Lf OppJsqr = OppJx*OppJx + OppJy*OppJy + OppJz*OppJz OppF0_4f = NewOperator("U", NF, IndexUp_4f, IndexDn_4f, {1, 0, 0, 0}) OppF2_4f = NewOperator("U", NF, IndexUp_4f, IndexDn_4f, {0, 1, 0, 0}) OppF4_4f = NewOperator("U", NF, IndexUp_4f, IndexDn_4f, {0, 0, 1, 0}) OppF6_4f = NewOperator("U", NF, IndexUp_4f, IndexDn_4f, {0, 0, 0, 1}) OppNUp_4f = NewOperator("Number", NF, IndexUp_4f,IndexUp_4f,{1,1,1,1,1,1,1}) OppNDn_4f = NewOperator("Number", NF, IndexDn_4f,IndexDn_4f,{1,1,1,1,1,1,1}) OppN_4f = OppNUp_4f + OppNDn_4f OppNUp_Lf = NewOperator("Number", NF, IndexUp_Lf,IndexUp_Lf,{1,1,1,1,1,1,1}) OppNDn_Lf = NewOperator("Number", NF, IndexDn_Lf,IndexDn_Lf,{1,1,1,1,1,1,1}) OppN_Lf = OppNUp_Lf + OppNDn_Lf -- spin orbit for the f shell and ligand shell zeta_4f_i = 0.087* 0.92 zeta_Lf_i = 0.087* 0.92 U_4f_4f_i = 0 F2_4f_4f_i = 0 * 0.55 F4_4f_4f_i = 0 * 0.55 F6_4f_4f_i = 0 * 0.55 F0_4f_4f_i = U_4f_4f_i + 4 / 195 * F2_4f_4f_i + 2 / 143 * F4_4f_4f_i + 100 / 5577 * F6_4f_4f_i Bz = 0.000001 H_i = Chop(F0_4f_4f_i *OppF0_4f + F2_4f_4f_i *OppF2_4f+ F4_4f_4f_i *OppF4_4f + F6_4f_4f_i *OppF6_4f + zeta_4f_i * Oppldots_4f + zeta_Lf_i * Oppldots_Lf + Bz*(2*OppSz_4f + OppLz_4f)) e_4f_i = (28 * Delta_4f_Lf_i - 27 * U_4f_4f_i * NElectrons_4f - U_4f_4f_i * NElectrons_4f^2) / (2 * (14 + NElectrons_4f)) e_Lf_i = NElectrons_4f * (-2 * Delta_4f_Lf_i + U_4f_4f_i * NElectrons_4f + U_4f_4f_i) / (2 * (NElectrons_4f + 14)) H_i = H_i + Chop( e_4f_i * OppN_4f + e_Lf_i * OppN_Lf) -- hybridization Hamiltonian OppV = NewOperator("Number", NF, IndexUp_4f,IndexUp_Lf, {1,1,1,1,1,1,1}) + NewOperator("Number", NF, IndexDn_4f,IndexDn_Lf, {1,1,1,1,1,1,1})+ NewOperator("Number", NF, IndexUp_Lf,IndexUp_4f, {1,1,1,1,1,1,1})+ NewOperator("Number", NF, IndexDn_Lf,IndexDn_4f, {1,1,1,1,1,1,1}) H_i = H_i +Chop(V*OppV) InitialRestrictions = {NF, NB, {" 11111111111111 00000000000000",NElectrons_4f,NElectrons_4f}, {" 00000000000000 11111111111111",14,14}} CalculationRestrictions = {NF, NB, {' 00000000000000 11111111111111', 14 - (NConfigurations - 1), 14}} psiList = Eigensystem(H_i, InitialRestrictions, Npsis, {{'restrictions', CalculationRestrictions}}) print(psiList[1]) -- weight of each configuration Oppf1 = NewOperator ( "Identity" , NF ) Oppf1.Restrictions = { NF , NB , { " 11111111111111 00000000000000" , 1 , 1 } } Oppf0 = NewOperator ( "Identity" , NF ) Oppf0.Restrictions = { NF , NB , { " 11111111111111 00000000000000" , 0 , 0 } } Oppf2 = NewOperator ( "Identity" , NF ) Oppf2.Restrictions = { NF , NB , { " 11111111111111 00000000000000" , 2 , 2 } } oppList={H_i, OppSsqr, OppLsqr,OppLz_4f, OppJsqr, Oppldots_4f, OppF2_4f, OppF4_4f, OppF6_4f,OppN_4f, OppN_Lf} print(" # <E> <S^2> <L^2> <L_z^4f> <J^2> <l.s> <F[2]> <F[4]> <F[6]> <N^4f> <N^Lf> "); for i = 1,#psiList do io.write(string.format("%3i ",i)) for j = 1,#oppList do expectationvalue = Chop(psiList[i]*oppList[j]*psiList[i]) io.write(string.format("%10.4f ",expectationvalue)) end io.write("\n") end print("Finished")
Here is the Hybridization hamiltonien that I used
OppV = NewOperator("Number", NF, IndexUp_4f,IndexUp_Lf, {1,1,1,1,1,1,1}) + NewOperator("Number", NF, IndexDn_4f,IndexDn_Lf, {1,1,1,1,1,1,1})+ NewOperator("Number", NF, IndexUp_Lf,IndexUp_4f, {1,1,1,1,1,1,1})+ NewOperator("Number", NF, IndexDn_Lf,IndexDn_4f, {1,1,1,1,1,1,1}) H_i = H_i +Chop(V*OppV)
Answers
Dear Bodry,
The total number of states possible is 1 for the f0 L14 configuration 14 * 14 = 196 for the f1 L13 configuration such that in total you could expect 197 states.
At the moment your iterative calculation starts from a single state, the f0 L14 configuration. You ask however for 27 eigenstates. If you look at the output there must be a warning, if you would not have set the verbosity to 0. I would suggest to set the initial restrictions to be the same as the calculation restrictions.
Furthermore in order to understand which state is what it is often nice to lift the degeneracies. You can do this with a small magnetic field in the z direction for example.
Best wishes and good luck, Maurits
Dear Maurits, Thank you a lot for your answer.
Sorry but I don't understand what you suggest! Indeed, I tryed to set the initial restrictions to be the same as the final restrictions. I don't get anymore the warning but the result in output is very strange for me.
also, when I would like to understand which state is what, I also calculate the weigth of the $f^0$,$f^1$, and $f^2$, in each state. When I set the initial restrictions to be the same as the final restrictions as you suggest, all the weigth of the differents configuration in each state is equal to zero.
Thank you, Bodry
Dear Bodry,
Yes, I see the problem, my mistake.
You now specify that the ligand orbitals need to have either 13 or 14 electrons. The Ce f orbitals have no restrictions. You thus defined a Hilbert space with a total number of electrons between 13 and 28.
The restrictions
should do the trick. Once the total number of electrons is fixed we do not have to impose this again, as the Hamiltonian is particle conserving, such that the CalculationRestrictions can stay the way they are
Maurits
Dear Maurits
Thank you a lot for your very quick reply. I juste tryied the new initial restrictions but there is still on probleme.
I get that in output
best regards
Bodry