I've been considering using a multigrid method to calculate the eigenvalues of a particular PDE. I know that multigrid is extremely good at finding the least eigenvalues and their associated eigenvectors, in part because these eigenvectors are very smooth. Is multigrid also a good method to calculate all the eigenvalues and eigenvectors of a PDE?
For large problems, you are almost always interested in eigenvalues with specific properties instead of all the eigenvalues at once. Eigenvalue methods for such problems are generally based on solving with a shifted operator. Multigrid can often be used to solve these shifted problems. The SLEPc documentation contains a practical description of many of these algorithms. The library solves the linear systems in the shift-and-invert methods using PETSc, so you can experiment with multigrid (and other) preconditioners when solving eigenvalue problems.