29 #ifndef __SolverEigenSlepc_H
30 #define __SolverEigenSlepc_H 1
40 #if defined(FEELPP_HAS_SLEPC) && defined(FEELPP_HAS_PETSC)
41 #ifndef USE_COMPLEX_NUMBERS
44 # include <slepceps.h>
48 # include <slepceps.h>
66 class SolverEigenSlepc :
public SolverEigen<T>
68 typedef SolverEigen<T> super;
76 typedef typename super::value_type value_type;
77 typedef typename super::real_type real_type;
79 typedef typename super::solvereigen_type solvereigen_type;
80 typedef typename super::solvereigen_ptrtype solvereigen_ptrtype;
82 typedef typename super::vector_ptrtype vector_ptrtype;
83 typedef typename super::sparse_matrix_type sparse_matrix_type;
85 typedef typename super::solve_return_type solve_return_type;
86 typedef typename super::eigenpair_type eigenpair_type;
88 typedef typename super::eigenmodes_type eigenmodes_type;
100 this->M_eigen_solver_type = KRYLOVSCHUR;
103 SolverEigenSlepc( po::variables_map
const& vm, std::string
const& prefix =
"" )
109 SolverEigenSlepc( SolverEigenSlepc
const & );
147 eigenpair_type eigenPair (
unsigned int i );
152 virtual eigenmodes_type eigenModes () ;
158 real_type relativeError (
unsigned int i );
187 solve_return_type solve ( MatrixSparse<T> &matrix_A,
191 const unsigned int m_its );
202 solve_return_type solve ( MatrixSparse<T> &matrix_A,
203 MatrixSparse<T> &matrix_B,
207 const unsigned int m_its );
221 void setSlepcSolverType ();
227 void setSlepcProblemType ();
233 void setSlepcPositionOfSpectrum();
238 void setSlepcSpectralTransform();
255 po::options_description solvereigenslepc_options( std::string
const& prefix =
"" );
259 #endif // SLEPC PETSC