51 const unsigned int max_eigenvalues)
54 x.update_ghost_values();
56 const unsigned iterations = std::min(b.size(), max_eigenvalues);
60 dealii::SolverControl control_eigen(iterations, 0.0);
64 typename dealii::SolverGMRES<VectorType>::AdditionalData data(iterations + 2);
65 data.orthogonalization_strategy =
66 dealii::LinearAlgebra::OrthogonalizationStrategy::modified_gram_schmidt;
68 dealii::SolverGMRES<VectorType> eigen_solver(control_eigen, data);
69 std::vector<std::complex<number>> eigen_values;
71 eigen_solver.connect_eigenvalues_slot(
72 [&eigen_values](
const std::vector<std::complex<number>> &evs) { eigen_values = evs; },
true);
78 eigen_solver.solve(op, x, b, dealii::PreconditionIdentity());
80 catch (
const dealii::SolverControl::NoConvergence &exc)
84 AssertDimension(eigen_values.size(), iterations);