Eigenvector residuals?

Questions and discussions regarding the use of Qbox
Forum rules
You must be a registered user to post in this forum. Registered users may also post new topics if they consider that their subject does not correspond to any topic already present on the forum.
Post Reply
jmoussa
Posts: 1
Joined: Wed Nov 10, 2010 5:02 am

Eigenvector residuals?

Post by jmoussa »

Is there any way to compute/output the eigenvector residuals? This is useful because eigenvectors can converge at different rates and it isn't necessarily worth it to wait for all of them to converge (for instance, many codes have "buffer" eigenvectors that are not tested for convergence). The simple work-around is to print the eigenvalues several times during the diagonalization process and use the convergence of eigenvalues as an indirect metric of eigenvector accuracy. It would be nice, but non-essential, to have the more elegant solution (residuals).
fgygi
Site Admin
Posts: 151
Joined: Tue Jun 17, 2008 7:03 pm

Re: Eigenvector residuals?

Post by fgygi »

As of release 1.52.2, the only way to check convergence of the eigenvectors is indeed to monitor the eigenvalues. There is also the <eigenvalue_sum> value that helps checking convergence when empty states are used. So yes, it would be useful to be able to trace eigenvectors' residuals. This is something that is being presently considered in order to implement a tolerance criterion for convergence of the ground state (instead of the fixed number of iterations currently given to the "run" command). The relevant issues are: 1) should the residuals be printed for each eigenvector (potentially a lot of output) or only some sum of norms (Frobenius norm of the subspace correction, infinity norm, etc. ?) 2) What is the natural scale of the residual, or in other words, how does the residual of a vector grow with system size and with basis set size, and how should it be normalized? It would be nice to have a definition of residual such that, say, a value of 1.e-4 means the same level of quality on systems of different sizes or using different values of Ecut (especially if we want to use that number to determine when to stop iterating). We don't have a good definition at this point, but we are open to suggestions.
Post Reply