Open max-radin opened 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.
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.
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.
I would like to work on this. Is this beginner-friendly? I'm not much familiar with DFTK.jl codebase.
Not unless you're already pretty familiar with the theory
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?)