Skip to content

Conversation

@Technici4n
Copy link
Collaborator

No description provided.

@Technici4n
Copy link
Collaborator Author

For exact exchange, would the psi go into the densities as well?

@antoine-levitt
Copy link
Member

We discussed this with @mfherbst. Ideally the codensities would go there, but they're probably too expensive to store. Maybe we could do a kind of lazy structure...

@antoine-levitt
Copy link
Member

Actually we probably should think about this a bit more because it violates the assumption that the "direct arrow" is quadratic

@Technici4n
Copy link
Collaborator Author

I was thinking we might keep that quadratic assumption for direct arrows and instead go for an indirect arrow:

orbitals -> densities.orbitals -> E_x_exact

(with the first map being the identity)

It should allow for initial guessing, mixing, preconditioning, and saving (expensive but necessary for exact exchange?) of the orbitals. But I don't know if it's the best fit. For example for response you'd get both an orbital change hiding as a density change and a "normal" orbital change from the response solver.

@antoine-levitt
Copy link
Member

Actually I'm not even sure about codensities I think I was wrong there. Having orbitals in densities kind of defeats the whole purpose of the thing. We should maybe just drop the quadratic assumption, or have three kinds of terms, quadraticterm, densitiesterm and "misc" terms.

@antoine-levitt
Copy link
Member

I think hybrids are sufficiently different (and rate limiting, since they're the most expensive part by far) that they have to be special-cased anyway

@Technici4n
Copy link
Collaborator Author

Alright, pushed a big update! It's still quite messy and a lot of functionality is likely broken, but at least a basic SCF works for silicon, for Hubbard and for meta-GGAs 😉

Note 1: Having a Hubbard potential is quite unusual.
Note 2: I haven't touched other solvers such as potential mixing yet, but note that mixing the potentials will be a lot cleaner, as there won't be a need for hacks such as total_local_potential.

@antoine-levitt
Copy link
Member

Note 1: Having a Hubbard potential is quite unusual.

Really? It should be something like a Fock matrix.

Note 2: I haven't touched other solvers such as potential mixing yet, but note that mixing the potentials will be a lot cleaner, as there won't be a need for hacks such as total_local_potential.

That's a nice side effect!

@Technici4n
Copy link
Collaborator Author

Really? It should be something like a Fock matrix.

Here it's just 1/T(2) * term.U * (I - 2n). A bit unusual maybe 😄

But it's probably the right expression if we want to mix the hubbard_n (an interesting direction!)

@antoine-levitt
Copy link
Member

Yeah I want to look at hubbard mixing more closely, I don't know what people do currently.

@mfherbst
Copy link
Member

mfherbst commented Nov 18, 2025

Yeah I want to look at hubbard mixing more closely, I don't know what people do currently.

I agree, we briefly discussed this here, too. At least QuantumEspresso seems to do nothing (i.e. just rebuild every iteration with the current state)

update: see comment by @jaemolihm below !

@jaemolihm
Copy link
Contributor

Hi, Quantum ESPRESSO does mix the Hubbard occupations. If I understand correctly, it essentially concatenates the charge density at each real-space grid and the Hubbard occupations (in a TYPE mix_type), and applies Broyden mixing.

You can take a look at https://gitlab.com/QEF/q-e/-/blob/master/PW/src/mix_rho.f90 and search for lda_plus_u.

But I am not aware of any rigorous analysis of the convergence or stability.

@antoine-levitt
Copy link
Member

Thanks! Do you know if they precondition it in any way?

@jaemolihm
Copy link
Contributor

It seems preconditioning is applied only to the charge density, but not to the Hubbard occupation.

@Technici4n
Copy link
Collaborator Author

A related question is mixing and preconditioning for meta-GGAs. (May or may not be more relevant than DFT+U.) I think that QE might be missing meta-GGA DFPT, for example. (DFPT, preconditioning, convergence analysis... all are related :))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants