# XAS $M_{4,5}$ partial excitations

asked by BODRY TEGOMO CHIOGO (2021/09/21 18:20)

Dear Quanty developpers,I was inspired by the tutorial for the calculation of partial excitation at the $L_{2,3}$ edge of NiO for writing a script for XAS at the $M_{4,5}$ edge of cerium with configuration-interaction. I would like to look at excitations into the $f^0$, $f^1$ and $f^2$ configurations but there is some problems.

Here are the restrictiions I used

T4f3dx = ConjugateTranspose(T3d4fx)
T4f3dy = ConjugateTranspose(T3d4fy)
T4f3dz = ConjugateTranspose(T3d4fz)
T4f3dl = ConjugateTranspose(T3d4fl)
T4f3dr = ConjugateTranspose(T3d4fr)

TXASf0x = Clone(T3d4fx)
TXASf1x = Clone(T3d4fx)
TXASf2x = Clone(T3d4fx)
TXASf0y = Clone(T3d4fy)
TXASf1y = Clone(T3d4fy)
TXASf2y = Clone(T3d4fy)
TXASf0z = Clone(T3d4fz)
TXASf1z = Clone(T3d4fz)
TXASf2z = Clone(T3d4fz)

TXASf0x.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",1,1}}
TXASf1x.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",2,2}}
TXASf2x.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",3,3}}

TXASf0y.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",1,1}}
TXASf1y.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",2,2}}
TXASf2y.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",3,3}}

TXASf0z.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",1,1}}
TXASf1z.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",2,2}}
TXASf2z.Restrictions = {NF,NB,{"0000000000 11111111111111 00000000000000",3,3}}

All these these transitions operators give the same spectrum instead of partial excitations into the $f^0$, $f^1$ and $f^2$ configurations as I expected. I do not understand where is the mistake.

Bodry

A note further important information to know is that the spectrum is calculated with restrictions set in the following way

NConfigurations = 3
CalculationRestrictions = {NF, NB, {'0000000000 00000000000000 11111111111111', 14 - (NConfigurations - 1), 14}}
XAS_spectrum = CreateSpectra(H_f,{TXASf0z,TXASf1z,TXASf2z,T3d4fz},psiList,{{"Emin",-20},{"Emax",30},{"NE",3500},{"Gamma",0.1},{'restrictions', CalculationRestrictions}})

, 2021/09/22 09:59

Dear Bodry,

As discussed by e-mail, but here as an answer to document also for others. If you include restrictions in your calculation there are two ways you can do this, either by adding them to operators, or by giving the restrictions as parameters to the functions that calculate the eigenstates or the spectra.

These two methods can not be used simultaneously and one method will override the other.

The input that gets what you want is:

NConfigurations = 3
CalculationRestrictions = {NF, NB, {'0000000000 00000000000000 11111111111111', 14 - (NConfigurations - 1), 14}}
H_f.Restrictions = CalculationRestrictions
XAS_spectrum = CreateSpectra(H_f,{TXASf0z,TXASf1z,TXASf2z,T3d4fz},psiList,{{"Emin",-20},{"Emax",30},{"NE",3500},{"Gamma",0.1}})

Some background information: Originally I implemented the restrictions as properties of operators. This however leads to problems, such as how to deal with two operators that one sums with different restrictions. As there is (I did not find) a good solution to this question the current code does not inherent restrictions if one acts on an operator to the result. As such, using restrictions as a property of operators is extremely dangerous coding. (easy to make errors that are hard to find). To make this better we added the restrictions to the functions. The call

XAS_spectrum = CreateSpectra(H_f,{TXASf0z,TXASf1z,TXASf2z,T3d4fz},psiList,{{"Emin",-20},{"Emax",30},{"NE",3500},{"Gamma",0.1},{'restrictions', CalculationRestrictions}})

is similar to the call

H_f.Restrictions = CalculationRestrictions
TXASf0z.Restrictions = CalculationRestrictions
TXASf1z.Restrictions = CalculationRestrictions
TXASf2z.Restrictions = CalculationRestrictions
T3d4fz.Restrictions = CalculationRestrictions
XAS_spectrum = CreateSpectra(H_f,{TXASf0z,TXASf1z,TXASf2z,T3d4fz},psiList,{{"Emin",-20},{"Emax",30},{"NE",3500},{"Gamma",0.1},{'restrictions', CalculationRestrictions}})

with the difference that the later changes the original operators and the former does not.

Best wishes, Maurits