About double counting correction in DFT-based calculations

asked by Roberto Fantin (2022/08/25 14:52)

Dear all,

I have a question regarding the example that uses FPLO to simulate NiO L-edge XAS found in the previous Heidelberg workshops (2019). I am working on photoelectron spectroscopy of cobaltates and nickelates and I am trying to use Quanty to perform cluster calculations starting from DFT calculations performed with Wien2k. By using Wien2wannier/wannier90 and some python coding, I can now obtain a tight binding hamiltonian correctly implemented in Quanty and, by following your very helpful example on NiO, I can simulate XPS spectra for these compounds. However, I still miss to correctly implement the double counting correction. Specifically, I don't understand how the function CalculateRho works and in general how to compute the mean field operators starting from a hamiltonian in the form of HDFTLarge. Could you please help me out in this task by specifying what CalculateRho does and what is the general idea behind it? Thanks for the attention.

With kind regards, Roberto Fantin


, 2022/08/25 21:01, 2022/08/26 00:02

Hello Roberto,

The developers could probably give you a better explanation than I can, but in general the point of the double counting correction is remove the mean field contribution that gets introduced by the DFT step. This is both because we want to add in our own mean field terms later, namely Udd, and therefore we must first subtract out the DFT contribution before adding in our own, thereby applying a double counting correction.

The CalculateRho function takes a Tight Binding object and returns a density matrix (rho, ρ). This is done in the normal fashion where ρ = |Ψi><Ψi|, which can also be written as a ρ = aτaτ. From the density matrix you can create a mean field version of any operator you want using the process described here: MeanFieldOperator. These mean field operators are then used to subtract the mean field contribution from the HDFT Hamiltonian, which is done at some point later in the NiO example.

  Hamiltonian = HDFT - F0dd * OppF0MFDFT - F2dd * OppF2MFDFT - F4dd * OppF4MFDFT
  + F0dd * OppF0 + F2dd * OppF2 + F4dd * OppF4

Hopefully this was somewhat helpful, I can try to explain in a bit more detail if there is still any confusion.

P.S. Does anyone know how to include LaTeX, or some sort of mathematical notation within the forum? I still haven't found a way robust way of doing.

Sincerely, Charles

You could leave a comment if you were logged in.