Change default breaksym to False in _from_rhf_init_dm to improve GHF convergence#3057
Change default breaksym to False in _from_rhf_init_dm to improve GHF convergence#3057puzhichen wants to merge 1 commit into
Conversation
|
Could you post some example which shows |
Here is an example where RHF converges normally, but GHF fails to converge. |
|
Your change is breaking quite a few tests. Are the results from new guess more correct or not correct in these cases? The brokensym initial guess for GHF is quite tricky when brokensym is really needed. There're some discussions in #3058, #2591, etc. And your issue is another problem that brokensym may be a trouble when brokensym is not needed. In the "no-brokensym" condition I think using However, it still remains a question whether the default behavior of |
Thanks for the feedback. You are right, I noticed that this commit broke a number of unit tests. I am currently investigating the root causes of these failures. Apart from the tests that verify the initial guess itself, some errors seem to stem from deviations in the subsequent calculations caused by the change in the guess. This certainly highlights the sensitivity of the results to the initial guess. I also agree with your point that hard-coding I will update the PR once I verify whether the currently "broken" tests are producing physically incorrect results or just different ones. |
This PR changes the default value of the
breaksymargument in the_from_rhf_init_dmfunction (inpyscf/scf/ghf.py) from True to False.Currently, when initializing a GHF density matrix from an RHF density matrix, the function defaults to$\alpha$ -$\beta$ coupling). While testing, I observed that for certain closed-shell systems, this forced symmetry breaking in the initial guess can lead to SCF convergence issues or instabilities. In these cases, starting from a clean RHF guess (without spin-mixing) provides a more stable starting point.
breaksym=True, which introduces a perturbation to the off-diagonal blocks (