Level-shifting of the virtual orbitals seems to have been implemented for MSSCF, OCC, and other modules, but not for the SCF module as far as I can tell. In my experience with other programs this is more useful in converging the SCF than MOM or damping, though there is a risk of forcing convergence to an excited state. (I have yet to find a case where MOM or damping actually led to convergence.) Can this feature be implemented in a future release? In the meantime, is there a way to shift the virtual orbitals up in energy via some code in the input file?
I don’t have Molpro, but as far as I know level shifting is done by shifting the Fock matrix (MO basis) elements for the virtual orbitals up in energy by the amount specified (something like 0.3 to 0.5 au as a default).
Did you want me to create a pull request for this? I thought only developers could do that…
Second that. And if implementing the levelshift is clear to you, but the logic around the many convergence accelerators is too daunting in C++, be aware that as soon as 1.2 is released, we’re moving SCF iteration management to python, so it’ll be much easier to build a smart SCF driver.