1 #ifndef SELDON_FILE_POLYNOMIAL_EIGENVALUE_SOLVER_HXX
13 enum {TOAR, STOAR, QARNOLDI, LINEAR, JD};
17 int GetEigensolverType()
const;
18 void SetEigensolverType(
int type);
28 typedef typename ClassComplexType<T>::Tcplx Tcplx;
29 typedef typename ClassComplexType<T>::Treal Treal;
67 virtual void FactorizeOperator(
const Vector<T>& coef);
92 template<
class T,
class Prop,
class Storage>
106 void FactorizeOperator(
const Vector<T>& coef);
112 #ifdef SELDON_WITH_MPI
113 template<
class T,
class MatStiff,
116 template<
class T,
class MatStiff,
123 #ifdef SELDON_WITH_MPI
136 bool distributed;
int nloc;
140 int nodl_scalar_, nb_unknowns_scal_;
142 int RetrieveLocalNumbers(MatStiff& K);
152 void FactorizeOperator(
const Vector<T>& coef);
161 template<
class T,
class Prop,
class Storage>
165 int type_solver = TypeEigenvalueSolver::DEFAULT);
168 #define SELDON_FILE_POLYNOMIAL_EIGENVALUE_SOLVER_HXX
void FactorizeMass()
to overload
implementation of sparse polynomial eigenvalue solver
void MltOperator(int num, const SeldonTranspose &, const Vector< T > &X, Vector< T > &Y)
Computes Y = A X where A is the operator num.
void SolveMass(const SeldonTranspose &, const Vector< T > &x, Vector< T > &y)
to overload for non-diagonal mass
SlepcParamPep & GetSlepcParameters()
returns object storing slepc parameters
virtual void SolveMass(const SeldonTranspose &, const Vector< T > &x, Vector< T > &y)
to overload for non-diagonal mass
general class for direct solver
SparseDirectSolver< T > mat_lu
LU factorization of sparse matrix.
virtual void FactorizeMass()
to overload
matrix-free implementation of polynomial eigenvalue solver
bool IsHermitianProblem() const
returns true if the problem is hermitian
void MltOperator(int num, const SeldonTranspose &, const Vector< T > &X, Vector< T > &Y)
Computes Y = A X where A is the operator num.
FeastParam & GetFeastParameters()
returns object storing Feast parameters
Class grouping different direct solvers.
int pol_degree
polynomial degree
SlepcParamPep slepc_param
Slepc parameters.
bool diagonal_mass
mass diagonal ?
bool DiagonalMass()
returns true if the mass is diagonal
void InitMatrix(const Vector< VirtualMatrix< T > * > &op, int n=-1)
inits the operators of the polynomial
void ComputeOperator(int num, const Vector< T > &coef)
computes the operator with coefficients stored in coef
bool IsSymmetricProblem() const
returns true if the problem is symmetric
int type_solver
which solver ?
void DistributeEigenvectors(Matrix< T, General, ColMajor > &eigen_vec)
changes final eigenvectors if needed
bool use_spectral_transfo
if true teta is searched (lambda = shift + 1/teta)
void SolveMass(const SeldonTranspose &, const Vector< T > &x, Vector< T > &y)
to overload for non-diagonal mass
implementation of polynomial eigenvalue solver for dense problem
void FactorizeMass()
to overload
Base class for polynomial eigenvalue solver.
matrix distributed over all the processors
virtual void ComputeOperator(int num, const Vector< T > &coef)
to overload
void SetDiagonalMass(bool diag=true)
sets a diagonal mass
void SetSpectralTransformation(bool t=true)
enables a spectral transformation
int GetPolynomialDegree() const
returns the polynomial degree
class for solving a general eigenproblem with parameter T (double or complex)
bool UseSpectralTransformation() const
returns true if a spectral transformation has to be used
parameters for Feast package
Abstract base class for all matrices.
virtual void MltOperator(int num, const SeldonTranspose &, const Vector< T > &X, Vector< T > &Y)
to overload
PolynomialEigenProblem_Base()
default constructor
Parameters for Slepc package.