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 [2025/11/20 03:30] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| 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~~ | ||