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.