Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
forum:data:2023:directional_x-ray_spectroscopy_potential_bug [2023/04/07 23:56] – Created from the form at forum:start Charles Cardot | forum:data:2023:directional_x-ray_spectroscopy_potential_bug [2023/04/08 01:00] (current) – Charles Cardot | ||
---|---|---|---|
Line 7: | Line 7: | ||
Hello, | Hello, | ||
- | I have been experimenting with calculating direction dependent x-ray emission | + | I have been experimenting with calculating direction dependent x-ray emission |
- | The directional dependence is encoded in the DFT step, where I distort the crystal lattice slightly (~1%) along a particular axis. When I stretch along the a-axis, I get an HDFT that looks like | + | The directional dependence is encoded in the DFT step, where I distort the crystal lattice slightly (~2%) along a particular axis. |
- | a_stretched_HDFT: | + | # lattice constants; |
+ | @l@ 4.27633759 4.18633759 4.18633759 | ||
+ | # set axis angles | ||
+ | @a@ 90. 90. 90. | ||
+ | # setup Wyckoff positions | ||
+ | | ||
+ | # Now, give list of ALL !!! Wyckoff positions. | ||
+ | @1@ Ni @ 0.00000000 | ||
+ | @2@ O @ 0.00000000 | ||
- | which makes sense in the context of the distorted octahedral crystal field. The *xy* and *xz* orbitals are still degenerate, while the *yz* is now lower energy. Also the z^2-r^2 and x^2-y^2 orbital become mixed. The MLFT calculation within Quanty proceeds much the same way as described in the 2022 and 2019 Heidelberg tutorials for DFT + MLFT, where the mean field components Coulomb interaction is subtracted from HDFT to avoid double counting. The full code can be found here (https:// | ||
- | | + | When I stretch along the a-axis and go through the regular Wannierization process to create a tight binding Hamiltonian, |
- | print(" | + | a_stretched_HDFT: |
+ | which makes sense in the context of the distorted octahedral crystal field. The //xy// and //xz// orbitals are still degenerate, while the //yz// is now lower energy. Also the //z^2-r^2// and //x^2-y^2// orbitals become mixed. The MLFT calculation within Quanty proceeds much the same way as described in the 2022 and 2019 Heidelberg tutorials for DFT + MLFT, where the mean field components Coulomb interaction is subtracted from HDFT to avoid double counting. The full code that I am running can be found here (https:// | ||
+ | | ||
+ | |||
+ | print(" | ||
--Hamiltonian = HDFT + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4 | --Hamiltonian = HDFT + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4 | ||
Hamiltonian = HDFT - F0dd * OppF0MFDFT - F2dd * OppF2MFDFT - F4dd * OppF4MFDFT | Hamiltonian = HDFT - F0dd * OppF0MFDFT - F2dd * OppF2MFDFT - F4dd * OppF4MFDFT | ||
Line 26: | Line 37: | ||
Hamiltonian = Hamiltonian/ | Hamiltonian = Hamiltonian/ | ||
Hamiltonian = Hamiltonian + ConjugateTranspose(Hamiltonian) | Hamiltonian = Hamiltonian + ConjugateTranspose(Hamiltonian) | ||
+ | | ||
esinter | esinter | ||
edinter | edinter | ||
eLinter | eLinter | ||
+ | | ||
OperatorSetTrace(Hamiltonian, | OperatorSetTrace(Hamiltonian, | ||
OperatorSetTrace(Hamiltonian, | OperatorSetTrace(Hamiltonian, | ||
OperatorSetTrace(Hamiltonian, | OperatorSetTrace(Hamiltonian, | ||
- | + | | |
print(" | print(" | ||
--XESHamiltonian = HDFT + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4 | --XESHamiltonian = HDFT + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4 | ||
Line 45: | Line 55: | ||
XESHamiltonian = XESHamiltonian/ | XESHamiltonian = XESHamiltonian/ | ||
XESHamiltonian = XESHamiltonian + ConjugateTranspose(XESHamiltonian) | XESHamiltonian = XESHamiltonian + ConjugateTranspose(XESHamiltonian) | ||
+ | | ||
epfinal | epfinal | ||
edfinal | edfinal | ||
eLfinal | eLfinal | ||
+ | | ||
OperatorSetTrace(XESHamiltonian, | OperatorSetTrace(XESHamiltonian, | ||
OperatorSetTrace(XESHamiltonian, | OperatorSetTrace(XESHamiltonian, | ||
OperatorSetTrace(XESHamiltonian, | OperatorSetTrace(XESHamiltonian, | ||
+ | | ||
print(" | print(" | ||
-- we now can create the lowest Npsi eigenstates: | -- we now can create the lowest Npsi eigenstates: | ||
Line 60: | Line 70: | ||
{DeterminantString(NFermi, | {DeterminantString(NFermi, | ||
{DeterminantString(NFermi, | {DeterminantString(NFermi, | ||
- | |||
psiList = Eigensystem(Hamiltonian, | psiList = Eigensystem(Hamiltonian, | ||
psiList = Chop(psiList) | psiList = Chop(psiList) | ||
print(StartRestrictions) | print(StartRestrictions) | ||
+ | | ||
Npsiline = {} | Npsiline = {} | ||
for i=1,Npsi,1 | for i=1,Npsi,1 | ||
Line 101: | Line 110: | ||
print(" | print(" | ||
- | When the output is plotted | + | |
+ | The plotted | ||
XES_including_MFDFT: | XES_including_MFDFT: | ||
- | where clearly the x, y, and z polarized emissions are different. I would expect the y and z spectra to be identical, with the x spectra being slightly different, as the distortion is along the a-axis. In investigating this, I noticed that omitting the subtraction of the Mean Field DFT contribution, | + | where clearly the x, y, and z polarized emissions are different. |
- | + | ||
- | print(" | + | |
+ | print(" | ||
Hamiltonian = HDFT + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4 | Hamiltonian = HDFT + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4 | ||
--Hamiltonian = HDFT - F0dd * OppF0MFDFT - F2dd * OppF2MFDFT - F4dd * OppF4MFDFT | --Hamiltonian = HDFT - F0dd * OppF0MFDFT - F2dd * OppF2MFDFT - F4dd * OppF4MFDFT | ||
Line 116: | Line 125: | ||
Hamiltonian = Hamiltonian/ | Hamiltonian = Hamiltonian/ | ||
Hamiltonian = Hamiltonian + ConjugateTranspose(Hamiltonian) | Hamiltonian = Hamiltonian + ConjugateTranspose(Hamiltonian) | ||
+ | | ||
esinter | esinter | ||
edinter | edinter | ||
eLinter | eLinter | ||
+ | | ||
OperatorSetTrace(Hamiltonian, | OperatorSetTrace(Hamiltonian, | ||
OperatorSetTrace(Hamiltonian, | OperatorSetTrace(Hamiltonian, | ||
OperatorSetTrace(Hamiltonian, | OperatorSetTrace(Hamiltonian, | ||
- | + | | |
print(" | print(" | ||
XESHamiltonian = HDFT + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4 | XESHamiltonian = HDFT + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4 | ||
Line 135: | Line 143: | ||
XESHamiltonian = XESHamiltonian/ | XESHamiltonian = XESHamiltonian/ | ||
XESHamiltonian = XESHamiltonian + ConjugateTranspose(XESHamiltonian) | XESHamiltonian = XESHamiltonian + ConjugateTranspose(XESHamiltonian) | ||
+ | | ||
epfinal | epfinal | ||
edfinal | edfinal | ||
eLfinal | eLfinal | ||
+ | | ||
OperatorSetTrace(XESHamiltonian, | OperatorSetTrace(XESHamiltonian, | ||
OperatorSetTrace(XESHamiltonian, | OperatorSetTrace(XESHamiltonian, | ||
OperatorSetTrace(XESHamiltonian, | OperatorSetTrace(XESHamiltonian, | ||
- | the issue went away and the spectra | + | causes |
+ | |||
+ | XES_excluding_MFDFT: | ||
- | XES_excluding_MFDFT: | + | with the y and z polarized emission lying exactly on top of each other, and the x emission being distinct from the other two directions. |
- | What this tells me is that the crystal structure that is reflected in the Tight Binding | + | What this tells me is that the crystal structure that is reflected in the tight binding |
</ | </ | ||
~~DISCUSSION|Answers~~ | ~~DISCUSSION|Answers~~ | ||