diff --git a/src/algebra/EigenvalueSolver.cpp b/src/algebra/EigenvalueSolver.cpp index 6125e67e6c5fad94a122028ce78bd78ef7b12e6c..c71be58ddcb1c37498a172f30a1eb39b89f43aab 100644 --- a/src/algebra/EigenvalueSolver.cpp +++ b/src/algebra/EigenvalueSolver.cpp @@ -32,6 +32,7 @@ struct EigenvalueSolver::Internals computeAllEigenvaluesOfSymmetricMatrixInInterval(EPS& eps, const PetscReal left_bound, const PetscReal right_bound) { Assert(left_bound < right_bound); + EPSSetType(eps, EPSKRYLOVSCHUR); EPSSetWhichEigenpairs(eps, EPS_ALL); EPSSetInterval(eps, left_bound - 0.01 * std::abs(left_bound), right_bound + 0.01 * std::abs(right_bound)); @@ -40,7 +41,11 @@ struct EigenvalueSolver::Internals STSetType(st, STSINVERT); KSP ksp; +#if (SLEPC_VERSION_MAJOR >= 3) && (SLEPC_VERSION_MINOR >= 15) + EPSKrylovSchurGetKSP(eps, &ksp); +#else STGetKSP(st, &ksp); +#endif KSPSetType(ksp, KSPPREONLY); PC pc;