Mismatches of self-calculated MnO XAS and that in the paper PRB 85, 165113 (2012)

asked by Yaqian Guo (2020/07/19 16:13)

Hello,

I tried to reproduce the XAS calculation for MnO by referring to the tutorial of NiO Ligand field calculation of XAS and the paper PRB 85, 165113 (2012). However there are mismatches between the MnO XAS calculated by me and the MnO XAS in the paper. I would like to ask the reasons for that. Below is the details of the code I used to calculate MnO XAS:


Verbosity(0)

NF=26 NB=0 IndexDn_2p={ 0, 2, 4} IndexUp_2p={ 1, 3, 5} IndexDn_3d={ 6, 8,10,12,14} IndexUp_3d={ 7, 9,11,13,15} IndexDn_Ld={16,18,20,22,24} IndexUp_Ld={17,19,21,23,25}

Oppldots_3d=NewOperator(“ldots”,NF, IndexUp_3d, IndexDn_3d) OppSz_3d =NewOperator(“Sz” ,NF, IndexUp_3d, IndexDn_3d) OppLz_3d =NewOperator(“Lz” ,NF, IndexUp_3d, IndexDn_3d) OppNUp_2p = NewOperator(“Number”, NF, IndexUp_2p, IndexUp_2p, {1,1,1}) OppNDn_2p = NewOperator(“Number”, NF, IndexDn_2p, IndexDn_2p, {1,1,1}) OppN_2p = OppNUp_2p + OppNDn_2p OppNUp_3d = NewOperator(“Number”, NF, IndexUp_3d, IndexUp_3d, {1,1,1,1,1}) OppNDn_3d = NewOperator(“Number”, NF, IndexDn_3d, IndexDn_3d, {1,1,1,1,1}) OppN_3d = OppNUp_3d + OppNDn_3d OppNUp_Ld = NewOperator(“Number”, NF, IndexUp_Ld, IndexUp_Ld, {1,1,1,1,1}) OppNDn_Ld = NewOperator(“Number”, NF, IndexDn_Ld, IndexDn_Ld, {1,1,1,1,1}) OppN_Ld = OppNUp_Ld + OppNDn_Ld

OppF0_3d =NewOperator(“U”, NF, IndexUp_3d, IndexDn_3d, {1,0,0}) OppF2_3d =NewOperator(“U”, NF, IndexUp_3d, IndexDn_3d, {0,1,0}) OppF4_3d =NewOperator(“U”, NF, IndexUp_3d, IndexDn_3d, {0,0,1})

Akm = PotentialExpandedOnClm(“Oh”, 2, {0.6,-0.4}) OpptenDq_3d = NewOperator(“CF”, NF, IndexUp_3d, IndexDn_3d, Akm) OpptenDq_Ld = NewOperator(“CF”, NF, IndexUp_Ld, IndexDn_Ld, Akm)

Akm = PotentialExpandedOnClm(“Oh”, 2, {1,0}) OppVeg = NewOperator(“CF”, NF, IndexUp_3d, IndexDn_3d, IndexUp_Ld, IndexDn_Ld,Akm) + NewOperator(“CF”, NF, IndexUp_Ld, IndexDn_Ld, IndexUp_3d, IndexDn_3d, Akm) Akm = PotentialExpandedOnClm(“Oh”, 2, {0,1}) OppVt2g = NewOperator(“CF”, NF, IndexUp_3d, IndexDn_3d, IndexUp_Ld, IndexDn_Ld,Akm) + NewOperator(“CF”, NF, IndexUp_Ld, IndexDn_Ld, IndexUp_3d, IndexDn_3d, Akm)

Oppcldots= NewOperator(“ldots”, NF, IndexUp_2p, IndexDn_2p) OppUpdF0 = NewOperator(“U”, NF, IndexUp_2p, IndexDn_2p, IndexUp_3d, IndexDn_3d, {1,0}, {0,0}) OppUpdF2 = NewOperator(“U”, NF, IndexUp_2p, IndexDn_2p, IndexUp_3d, IndexDn_3d, {0,1}, {0,0}) OppUpdG1 = NewOperator(“U”, NF, IndexUp_2p, IndexDn_2p, IndexUp_3d, IndexDn_3d, {0,0}, {1,0}) OppUpdG3 = NewOperator(“U”, NF, IndexUp_2p, IndexDn_2p, IndexUp_3d, IndexDn_3d, {0,0}, {0,1})

t=math.sqrt(1/2)

Akm = 1_-1_t_1_1_-t TXASx = NewOperator(“CF”, NF, IndexUp_3d, IndexDn_3d, IndexUp_2p, IndexDn_2p, Akm) Akm = 1_-1_t_i_1_1_t_i TXASy = NewOperator(“CF”, NF, IndexUp_3d, IndexDn_3d, IndexUp_2p, IndexDn_2p, Akm) Akm = 1_0_1 TXASz = NewOperator(“CF”, NF, IndexUp_3d, IndexDn_3d, IndexUp_2p, IndexDn_2p, Akm)

TXASr = t*(TXASx - I * TXASy) TXASl =-t*(TXASx + I * TXASy)

nd = 5 Udd = 5.5 Upd = 7.2 Delta = 8.0

F2dd = 9.35 F4dd = 5.78 F2pd = 5.29 G1pd = 3.77 G3pd = 2.14 tenDq = 0.67 tenDqL = 1.44 Veg = 1.92 Vt2g = 1.15 zeta_3d = 0.04 zeta_2p = 6.85 Bz = 0.000001 Hz = 0.120

ed = (10*Delta-nd*(19+nd)*Udd/2)/(10+nd) eL = nd*1) / (16+nd) edfinal = (10*Delta - nd*(31+nd)*Udd/2-90*Upd) / (16+nd) eLfinal = ((1+nd)*(nd*Udd/2+6*Upd) - (6+nd)*Delta) / (16+nd)

F0dd = Udd + (F2dd+F4dd) * 2/63 F0pd = Upd + (1/15)*G1pd + (3/70)*G3pd

Hamiltonian = F0dd*OppF0_3d + F2dd*OppF2_3d + F4dd*OppF4_3d + zeta_3d*Oppldots_3d + Bz*(2*OppSz_3d + OppLz_3d) + Hz * OppSz_3d + tenDq*OpptenDq_3d + tenDqL*OpptenDq_Ld + Veg * OppVeg + Vt2g * OppVt2g + ed * OppN_3d + eL * OppN_Ld

XASHamiltonian = F0dd*OppF0_3d + F2dd*OppF2_3d + F4dd*OppF4_3d + zeta_3d*Oppldots_3d + Bz*(2*OppSz_3d + OppLz_3d)+ Hz * OppSz_3d + tenDq*OpptenDq_3d + tenDqL*OpptenDq_Ld + Veg * OppVeg + Vt2g * OppVt2g + edfinal * OppN_3d + eLfinal * OppN_Ld + epfinal * OppN_2p + zeta_2p * Oppcldots + F0pd * OppUpdF0 + F2pd * OppUpdF2 + G1pd * OppUpdG1 + G3pd * OppUpdG3

Npsi=3 StartRestrictions = {NF, NB, {“000000 1111111111 0000000000”,5,5}, {“111111 0000000000 1111111111”,16,16}} psiList = Eigensystem(Hamiltonian, StartRestrictions, Npsi)

XASSpectra = CreateSpectra(XASHamiltonian, {TXASz, TXASr, TXASl}, psiList, emin_-15_emax_25_ne_2000_gamma_0.1)

XASSpectra.Broaden(0.4, 3.7_0.45_-2.2_0.65_0.0_0.65_1.0_2.00_6_2.00_8_0.80_13.2_0.80_14.0_0.90_16.0_0.90_17.0_2.00)

XASIsoSpectra = Spectra.Sum(XASSpectra,{1,0,0, 1,0,0, 1,0,0})

XASSpectra.Print(file_xasspec.dat) XASIsoSpectra.Print(file_xasisospec.dat)

gnuplotInput = 000000" set style line 2 lt 1 lw 1 lc rgb "#FF0000" set style line 3 lt 1 lw 3 lc rgb "#000000" set xlabel "E (eV)" font "Times,12" set ylabel "Intensity (arb. units)" font "Times,12" set out 'XASSpec.ps' set size 1.0, 1.0 set terminal postscript portrait enhanced color "Times" 12 set multiplot layout 3, 3 plot "XASSpec.dat" u 1:(- ) title 'z-polarized Sz=-1' with lines ls 1 plot "XASSpec.dat" u 1:(- ) title 'z-polarized Sz= 0' with lines ls 1 plot "XASSpec.dat" u 1:(- ) title 'z-polarized Sz= 1' with lines ls 1 plot "XASSpec.dat" u 1:(- ) title 'r-polarized Sz=-1' with lines ls 1 plot "XASSpec.dat" u 1:(-) title 'r-polarized Sz= 0' with lines ls 1 plot "XASSpec.dat" u 1:(-) title 'r-polarized Sz= 1' with lines ls 1 plot "XASSpec.dat" u 1:(-) title 'l-polarized Sz=-1' with lines ls 1 plot "XASSpec.dat" u 1:(-) title 'l-polarized Sz= 0' with lines ls 1 plot "XASSpec.dat" u 1:(-) title 'l-polarized Sz= 1' with lines ls 1 unset multiplot energyshift=857.6 intensityscale=64 plot "XASSpec.dat" using (@@+energyshift):((---) * intensityscale) title 'isotropic theory' with lines ls 1,\ "../../NiO Experiment/XAS_L23_PRB_57_11623_1998" using 1:2 title 'isotropic experiment' with lines ls 2 set size 1.0, 0.6 intensityscale=48 set out 'XASIsoSpec.ps' set xrange [847:877] plot "../../NiO Experiment/XAS_L23_PRB_57_11623_1998" using 1:2 title 'isotropic experiment' with filledcurves y1=0,\ "XASIsoSpec.dat" using (@@+energyshift):((-) * intensityscale) title 'isotropic theory' with lines ls 3

file = io.open(“XASSpec.gnuplot”, “w”) file:write(gnuplotInput) file:close()

os.execute(“gnuplot XASSpec.gnuplot”)

os.execute(“ ps2pdf XASSpec.ps ; ps2pdf XASIsoSpec.ps”)


By this code I could get the isotropic XAS of MnO. However it does not match with the MnO XAS in paper PRB 85, 165113 (2012). The main difference is that the positions of L2 and L3 edge of MnO XAS I calculated are around 867eV and 857 eV. In paper PRB 85, 165113 (2012) positions of L2 and L3 edge of MnO XAS are about 641eV and 650eV. Another difference is that the XAS I calculated does not have many satellite peaks as in the paper.

Could you please kindly tell me why is that? Is it because of the parameters I set are not good? Or I missed some steps in the code?

Thank you so much for the help.

Yaqian

1)
1+nd)*Udd/2-Delta)/(10+nd) epfinal = (10*Delta + (1+nd)*(nd*Udd/2-(10+nd)*Upd
You could leave a comment if you were logged in.
Print/export