Inconsistent handling of guess vectors between escf and egrad

Started by marin.sap, March 13, 2025, 11:01:48 AM

Previous topic - Next topic

marin.sap

Dear developers,

when running escf in a directory where a previous calculation has been performed, it will use the values found in the sing_a/ciss_a file:

  logfile sing_a    exists already

found      4 converged vectors on sing_a
read       4 vectors from logfile sing_a

while egrad will always construct new guess vectors even when these files exist:

logfile sing_a    will be constructed

and consequently when running calculations along paths with small displacements between subsequent geometries, escf will need significantly fewer iterations than egrad. Is there a way to get egrad to behave in the same way as escf in this case?

This would be a useful option to have since it could significantly speed up calculations in some cases. We have also been testing a recently published method for generating guess vectors (https://pubs.aip.org/aip/jcp/article/159/12/121101/2912104), but can't use it with Turbomole when running our trajectories because egrad just ignores the guess vectors.

uwe

Hello,

the geometry does change from one egrad call to the next in a geometry optimization. Using the previous solution of the excitation vectors is in general not faster than generating them from scratch (that was a finding during the implementation and later usage), but has the benefit of having a cleaner initial guess which is not biased from the step before.

But you wrote that you are running calculations with small displacements only, and that there is hope to safe a few CPKS iterations. Well, in that case it might work.

So is there a way to let egrad read in the restart files? Yes, there is an undocumented keyword which allows exactly this.

But if I were to write this keyword here in the forum, it would no longer be undocumented... and I really think it could be dangerous to use it mindlessly.

I will write you a personal message, hope that's OK.

Cheers