The LOBPCG (Locally Optimal Block Preconditioned Conjugate Gradient) code is now publicly available as as a part of the BLOPEX package. MATLAB sources are also available directly from MathWorks.
Main features:
a matrix-free iterative method for computing several extreme eigenpairs
of symmetric positive generalized eigenproblems;
a user-defined symmetric positive preconditioner (a good preconditioner
for a stiffness matrix works well for the corresponding eigenvalue problem,
too!);
robustness with respect to random initial approximations, variable
preconditioners, and ill-conditioning (up to 10^16) of the stiffness matrix;
apparently optimal convergence speed.
Numerical comparisons suggest that LOBPCG is a genuine analog for eigenproblems of the standard preconditioned conjugate gradient method for symmetric linear systems.
The LOBPCG algorithm is presented in the paper Andrew Knyazev, Toward the Optimal Preconditioned Eigensolver: Locally Optimal Block Preconditioned Conjugate Gradient Method. SIAM Journal on Scientific Computing 23 (2001), no. 2, pp. 517-541.