Dear Developers,<br><br>I understand the subroutine c_bands() the following way, and need an experienced developer to confirm its correctness. Please correct me whenever necessary, as correct interpretation would be crucial for my next step of work.<br>

<br>In subroutine c_bands_k(), several loops are given to solve for eigenvalues & eigenvectors (ev/vec), this is to avoid that a single CG might not successfully reach the residue minimum, so restart CG several times to ensure its convergence. For iteration beyond the second one, rotate_wfc() is first called to calculate ev/vec by direct methods with Lapack, its results are sent over to initialize the CG process  in subroutine ccgdiagg(), which is seen by noticing that psi is used in h_psi and s_psi to get new H and S, to refine the results . During the whole process, H and S are calculated on the fly and the underlying potentials and deeq are kept unchanged unless the lattice itself changes.<br>

<br>The other favor you might do to me to understand the code in shortest time is to help recommend some references on which the -notation- and -formulae- used by the code are closely based. I have the following references by my hand and found them useful, and would be really appreciated if I could be suggested more relevant references on which QE is based. <br>

<br>>> David Vanderbilt_PhysRevB.41.7892, "soft self-consistent pseudopotentials in a generalized eigenvalue formalism"<br>>> G. Kresse and D. Joubert_PhysRevB.59.1758, "From ultrasoft pseudopotentials to the projector augmented-wave method"<br>

>> J Ihm, Alex Zunger and Marvin L Cohen_J. Phys. C: Solid State Phys. 12 4409, "Momentum-space formalism for the total energy of solids"<br>>> P. E. Blochl, Phys. Rev. B 50, 17953 1994, "Projector augmented-wave method"<br>

>> R.M. Martin, Electronic Structure: Basic Theory and Practical Methods, Cambridge University Press <br><br>Thank you very much,<br><br>-- <br>Sincerely,<br>Jun<br><br><br><br>