template <int dim>
unsigned int EigenvalueProblem<dim>::solve ()
{
std::cout << " Number of eigenvectors requested: "
<< eigenvectors.size() << std::endl;
SolverControl solver_control (2000, 1e-9);
SLEPcWrappers::SolverKrylovSchur eigensolver(solver_control);
eigensolver.set_which_eigenpairs (EPS_SMALLEST_REAL);
eigensolver.set_problem_type (EPS_GHEP);
double eigen_shift = std::pow( 2.0 * PI * parameters.get_double ("Shift frequency"), 2.0);
SLEPcWrappers::TransformationShiftInvert::AdditionalData additional_data(eigen_shift);
SLEPcWrappers::TransformationShiftInvert shift (additional_data);
eigensolver.set_transformation (shift);
eigensolver.solve (stiffness_matrix,mass_matrix,eigenvalues,eigenvectors,
eigenvectors.size());
for (unsigned int i=0; i<eigenvectors.size(); ++i)
eigenvectors[i] /= eigenvectors[i].linfty_norm ();
// Finally return the number of iterations it took to converge:
return solver_control.last_step ();
}
Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv, 1);