-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[xtp] QPsolver for CDA and grid inefficiency #833
Comments
So, yes the rootfinding is not super. I like your approaches. I do not understand what the accelerators do, we also implemented the Newton-Method for rootfinding, which converges quickly,but only locally. Basically you have to find all the roots of a very unpleasant function and a local scheme will not help you there. Additionally the fact that our When I implemented the current method I was not happy with the runtime but it was the most robust at the moment, also because for Specific question: What should you do if no stable solution with What exactly do you mean by stable fixed points? |
Newton Method and CDA is again a bit meh, since we need to take the derivative numerically. Probably still better than going the full grid but this is why I was looking at some of these derivative-free methods. It is true that for
Depends what method we are talking about. Let's assume we run a
Do you mean
If it "works" for G0W0, which is a special case of evGW, isn't that blackboxing enough?
Not sure at which point a low
That's maybe a bit handwavy and inadequately borrowed from proper mathematics. |
true
Yeah that is the part with blackboxing, where I do not know what to do. E.g. in |
TLDR
We should be more clever with the QP solver, including:
The default method for solving the QP equations is a grid search, followed by bisection. As default, the grid is constructed with
1000
points covering the interval of[-0.5 : +0.5] Hartree
around the input QP energy.General issue:
The range covered by the interval is too small and the reported QP energy is not a stable fixed-point of
Sigma_c(w) +(Sigma_x + w_0 -V_xc) = w
.Example: H2O core level
The QP weight is defined as
Z=(1-dSigma_c(w)/dw)^-1
and for "the" solution should be on the order of 1.This can also be considered from the criterion of stability for a fixed point,
|dSigma_c(w)/dw| < 1
, which would translate to1/2 < Z < infty
. However, there is also evidence thatdSigma_c(w)/dw < 0
, so1/2 < Z < 1
.In the example above,
Z~10^-3
for both found solutions, so we can conclude that none of them is what we are looking for, which includes the reported solution.Possible solution:
Add a check for stability (e.g.,
Z>0.3
), and if none of the found roots is stable, extend the grid search.Specific issue for the CDA
The grid search becomes extremely costly for the CDA. As a rough estimate, the dielectric matrix has to be computed with the RPA, and then inverted, at each grid point for as many poles as are included in the contour. Even for the HOMO, this means way more than one pole, when the grid includes frequencies up to -0.5 Hartree. This escalates quickly when the molecules get bigger, and the spectrum denser.
Example: HOMO value for MADN (59 atoms)
From the timing, it seems that around 6000 matrix calculations and inversions (dimension 3555) need to be calculated. This is only for two QP states.
Fixed point methods
For comparison, I played around with different accelerated fixed point methods (Aitken's Delta Squared Process, and Anderson mixing).
Example: HOMO and LUMO for MADN (with exact method)
Basically four steps are enough here. Note that this one is already checking the QP weight, if this is a stable solution.
The problem with these methods is of course that
I played around with reinitialized the fixed point procedure in case an unstable FP is found. This is at this point a bit arbitrary, it worked for the H2O case mentioned above, but isn't guaranteed to work always.
Thoughts? @gtirimbo @JensWehner @felipeZ
The text was updated successfully, but these errors were encountered: