49 const unsigned int max_eigenvalues)
52 x.update_ghost_values();
54 const unsigned iterations = std::min(b.size(), max_eigenvalues);
58 dealii::SolverControl control_eigen(iterations, 0.0);
62 typename dealii::SolverGMRES<VectorType>::AdditionalData data(iterations + 2);
63 data.orthogonalization_strategy =
64 dealii::LinearAlgebra::OrthogonalizationStrategy::modified_gram_schmidt;
66 dealii::SolverGMRES<VectorType> eigen_solver(control_eigen, data);
67 std::vector<std::complex<double>> eigen_values;
69 eigen_solver.connect_eigenvalues_slot(
70 [&eigen_values](
const std::vector<std::complex<double>> &evs) { eigen_values = evs; },
true);
76 eigen_solver.solve(op, x, b, dealii::PreconditionIdentity());
78 catch (
const dealii::SolverControl::NoConvergence &exc)
82 AssertDimension(eigen_values.size(), iterations);