JuliaMolSim / DFTK.jl

Density-functional toolkit
https://docs.dftk.org
MIT License
428 stars 89 forks source link

DFT+U #329

Open max-radin opened 3 years ago

max-radin commented 3 years ago

It would be useful to have on-site Coulomb corrections, such as the method of Dudarev et. al Phys. Rev. B 57, 1505. (Maybe this is already implemented and I just missed it?)

antoine-levitt commented 3 years ago

Hi,

It's not really on our list of priorities so we probably won't get to it anytime soon, but it should be pretty easy to do. We explicitly designed the terms infrastructure to accommodate this type of orbital-dependent functionals, so it's just a matter of writing down the energy and hamiltonian contribution. Direct minimization will just work, scf will need some adaptation. If you or someone else are interested I can help.

mfherbst commented 3 years ago

I agree it would be nice, but is pretty orthogonal to what we want to tackle in the near future. Direct minimisation is probably not of much help, I'd say, because it does not yet support collinear spin and that extension could get a little more involved. But it does not look to difficult to implement it inside our SCF, I'd say. I'm also more than happy to provide help and answer questions if someone wants to implement this.

antoine-levitt commented 3 years ago

Because it works on orbitals directly direct minimization supports pretty much everything you can throw at it (except fractional occupations, but if I understand correctly the point of DFT+U is to turn things into insulators so that should be OK), you just have to pass the right things in the hamiltonian computation. OTOH in DFT+U the Hamiltonian requires projected density matrices (I think, I'd have to check). So you have to modify the SCF loop to mix these also, hence my comment (although of course that's not a big deal). Actually people have told me mixing these is pretty tricky, so that might be something interesting to take a look at also.

cyborg1995 commented 3 years ago

I would like to work on this. Is this beginner-friendly? I'm not much familiar with DFTK.jl codebase.

antoine-levitt commented 3 years ago

Not unless you're already pretty familiar with the theory