Go to the documentation of this file.
20 #ifndef LIBMESH_SLEPC_EIGEN_SOLVER_H
21 #define LIBMESH_SLEPC_EIGEN_SOLVER_H
23 #include "libmesh/libmesh_config.h"
25 #ifdef LIBMESH_HAVE_SLEPC
28 #include "libmesh/eigen_solver.h"
29 #include "libmesh/slepc_macro.h"
32 EXTERN_C_FOR_SLEPC_BEGIN
33 # include "libmesh/ignore_warnings.h"
34 # include <slepceps.h>
35 # include "libmesh/restore_warnings.h"
36 EXTERN_C_FOR_SLEPC_END
70 virtual void clear()
override;
76 virtual void init()
override;
89 virtual std::pair<unsigned int, unsigned int>
94 const unsigned int m_its)
override;
100 virtual std::pair<unsigned int, unsigned int>
105 const unsigned int m_its)
override;
111 virtual std::pair<unsigned int, unsigned int>
117 const unsigned int m_its)
override;
132 virtual std::pair<unsigned int, unsigned int>
138 const unsigned int m_its)
override;
144 virtual std::pair<unsigned int, unsigned int>
150 const unsigned int m_its)
override;
162 virtual std::pair<unsigned int, unsigned int>
168 const unsigned int m_its)
override;
180 virtual std::pair<unsigned int, unsigned int>
186 const unsigned int m_its)
override;
189 virtual std::pair<unsigned int, unsigned int>
196 const unsigned int m_its)
override;
205 virtual std::pair<Real, Real>
212 virtual std::pair<Real, Real>
247 const unsigned int m_its);
258 const unsigned int m_its);
302 #endif // #ifdef LIBMESH_HAVE_SLEPC
303 #endif // LIBMESH_SLEPC_EIGEN_SOLVER_H
Generic shell matrix, i.e.
std::pair< unsigned int, unsigned int > _solve_generalized_helper(Mat mat_A, Mat mat_B, Mat precond, int nev, int ncv, const double tol, const unsigned int m_its)
Helper function that actually performs the generalized eigensolve.
~SlepcEigenSolver()
Destructor.
The libMesh namespace provides an interface to certain functionality in the library.
virtual std::pair< Real, Real > get_eigenvalue(dof_id_type i) override
Same as above, but does not copy the eigenvector.
void set_slepc_solver_type()
Tells Slepc to use the user-specified solver stored in _eigen_solver_type.
std::pair< unsigned int, unsigned int > _solve_standard_helper(Mat mat, Mat precond, int nev, int ncv, const double tol, const unsigned int m_its)
Helper function that actually performs the standard eigensolve.
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
virtual std::pair< unsigned int, unsigned int > solve_standard(SparseMatrix< T > &matrix_A, int nev, int ncv, const double tol, const unsigned int m_its) override
This function calls the SLEPc solver to compute the eigenpairs of the SparseMatrix matrix_A.
virtual void set_initial_space(NumericVector< T > &initial_space_in) override
Use initial_space_in as the initial guess.
This class provides an interface to the SLEPc eigenvalue solver library from http://slepc....
virtual std::pair< unsigned int, unsigned int > solve_generalized(SparseMatrix< T > &matrix_A, SparseMatrix< T > &matrix_B, int nev, int ncv, const double tol, const unsigned int m_its) override
This function calls the SLEPc solver to compute the eigenpairs for the generalized eigenproblem defin...
static PetscErrorCode _petsc_shell_matrix_mult(Mat mat, Vec arg, Vec dest)
Internal function if shell matrix mode is used, this just calls the shell matrix's matrix multiplicat...
This class provides an interface to solvers for eigenvalue problems.
static PetscErrorCode _petsc_shell_matrix_get_diagonal(Mat mat, Vec dest)
Internal function if shell matrix mode is used, this just calls the shell matrix's get_diagonal funct...
virtual std::pair< Real, Real > get_eigenpair(dof_id_type i, NumericVector< T > &solution_in) override
void set_slepc_position_of_spectrum()
Tells Slepc to compute the spectrum at the position stored in _position_of_spectrum.
Real get_relative_error(unsigned int i)
virtual void attach_deflation_space(NumericVector< T > &deflation_vector) override
Attach a deflation space defined by a single vector.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void clear() override
Release all memory and clear data structures.
void set_slepc_problem_type()
Tells Slepc to deal with the type of problem stored in _eigen_problem_type.
SlepcEigenSolver(const Parallel::Communicator &comm_in)
Constructor.
virtual void init() override
Initialize data structures if not done so already.
EPS _eps
Eigenproblem solver context.