Should the pspace preconditioner in FCI be fixed? #3043
MatthewRHermes
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
The method attribute
pspace_sizeof FCI objects indicates the maximum CI vector size for which the Hamiltonian will be diagonalized non-iteratively. At one point, it was obviously supposed to also indicate the size of the lower-energy diagonal block in the "pspace preconditioner", as described by CPL 169 463. However, the pspace preconditioner is both disabled and broken. Disabled, because here:pyscf/pyscf/fci/direct_spin1.py
Lines 680 to 685 in d57cb6d
the pspace Hamiltonian information is deleted and not passed on to the
make_precond, so we always branch to the "diagonal" preconditioner. I believe this was broken around the time that support for high-symmetry FCI became a priority, and it makes sense: applying cylindrical or spherical symmetry to the pspace Hamiltonian sounds like a bear. But separately from that, it's also broken, because in this code:pyscf/pyscf/fci/direct_spin1.py
Lines 749 to 754 in d57cb6d
the line that is supposed to actually multiply the inverted p-block Hamiltonian matrix into the residual vector is commented out. The only contribution in this function of the p-block Hamiltonian matrix is to the scalar
e1, which just scales the component of the new vector which is proportional to the old vector - a component that is supposed to be zero anyway. The meaningful component of the outputx1vector is identical to the result from the diagonal preconditioner.This broken code is unused in the PySCF core modules, but the
csf_fcimodule in PySCF-Forge makes reference to it. So, question. If I want to have a better preconditioner incsf_fci, should I:Beta Was this translation helpful? Give feedback.
All reactions