Feel++  0.91.4
Protected Attributes | List of all members
Feel::SolverEigen< T > Class Template Referenceabstract

base class for eigen solvers More...

#include <solvereigen.hpp>

Public Types

Typedefs
typedef T value_type
 
typedef type_traits< T >::real_type real_type
 
typedef SolverEigen< value_type > solvereigen_type
 
typedef boost::shared_ptr
< solvereigen_type
solvereigen_ptrtype
 
typedef boost::tuple
< size_type, size_type,
std::vector< double > > 
solve_return_type
 
typedef Vector< value_type > vector_type
 
typedef boost::shared_ptr
< vector_type
vector_ptrtype
 
typedef MatrixSparse< value_type > sparse_matrix_type
 
typedef boost::shared_ptr
< sparse_matrix_type
sparse_matrix_ptrtype
 
typedef boost::tuple
< real_type, real_type,
vector_ptrtype > 
eigenpair_type
 
typedef std::map< real_type,
eigenpair_type > 
eigenmodes_type
 

Public Member Functions

Accessors
std::string const & prefix () const
 
EigenSolverType eigenSolverType () const
 
EigenProblemType eigenProblemType () const
 
PositionOfSpectrum postitionOfSpectrum () const
 
SpectralTransformType spectralTransform () const
 
size_type numberOfEigenvalues () const
 
size_type numberOfEigenvaluesConverged () const
 
value_type tolerance () const
 
size_type maxIterations () const
 
Mutators
void setEigenSolverType (const EigenSolverType est)
 
void setEigenProblemType (EigenProblemType ept)
 
void setPositionOfSpectrum (PositionOfSpectrum pos)
 
void setSpectralTransform (SpectralTransformType st)
 
void setTolerance (value_type tol)
 
void setMaxIterations (size_type maxiter)
 
void setNumberOfEigenValues (size_type nev)
 
void setNumberOfEigenValuesConverged (size_type ncv)
 
Methods
bool initialized () const
 
virtual void clear ()
 
virtual void init ()=0
 
 BOOST_PARAMETER_MEMBER_FUNCTION ((solve_return_type), solve, tag,(required(matrixA,(sparse_matrix_ptrtype))(matrixB,(sparse_matrix_ptrtype)))(optional(maxit,(size_type), 1000)(tolerance,(double), 1e-11)))
 
virtual solve_return_type solve (MatrixSparse< value_type > &matrix_A, int nev, int ncv, const double tol, const unsigned int m_its)=0
 
solve_return_type solve (boost::shared_ptr< MatrixSparse< value_type > > &matrix_A, int nev, int ncv, const double tol, const unsigned int m_its)
 
virtual solve_return_type solve (MatrixSparse< value_type > &matrix_A, MatrixSparse< value_type > &matrix_B, int nev, int ncv, const double tol, const unsigned int m_its)=0
 
solve_return_type solve (boost::shared_ptr< MatrixSparse< value_type > > &matrix_A, boost::shared_ptr< MatrixSparse< value_type > > &matrix_B, int nev, int ncv, const double tol, const unsigned int m_its)
 

Protected Attributes

std::string M_prefix
 
EigenSolverType M_eigen_solver_type
 
EigenProblemType M_eigen_problem_type
 
PositionOfSpectrum M_position_of_spectrum
 
SpectralTransformType M_spectral_transform
 
bool M_is_initialized
 
size_type M_nev
 number of eigenvalues
 
size_type M_ncv
 number of eigenvalues
 
size_type M_maxit
 max number of iterations
 
value_type M_tolerance
 tolerance
 

Constructors, destructor

 SolverEigen ()
 
 SolverEigen (po::variables_map const &vm, std::string const &prefix="")
 
 SolverEigen (SolverEigen const &)
 
virtual ~SolverEigen ()
 
virtual eigenpair_type eigenPair (unsigned int i)=0
 
virtual eigenmodes_type eigenModes ()=0
 
static boost::shared_ptr
< SolverEigen< value_type > > 
build (const SolverPackage solver_package=SOLVERS_SLEPC)
 
static boost::shared_ptr
< SolverEigen< value_type > > 
build (po::variables_map const &vm, std::string const &prefix=std::string())
 

Detailed Description

template<typename T>
class Feel::SolverEigen< T >

base class for eigen solvers

Author
Christophe Prud'homme

Constructor & Destructor Documentation

template<typename T >
Feel::SolverEigen< T >::SolverEigen ( )

Constructor. Initializes Solver data structures

template<typename T >
Feel::SolverEigen< T >::SolverEigen ( po::variables_map const &  vm,
std::string const &  prefix = "" 
)

Constructor. Initializes Solver data structures

The prefix parameter allows to set different eigensolver options for different eigensolver. It allows to distinguish between these options

// register two slepc eigensolver options
add_options( solvereigen_options( "eigen1" ) ).add_options( solvereigen_options( "eigen2" ));
// build an eigen solver associated with option set eigen1
Parameters
vmvariables map
prefixstring that allows for various options of the same type
template<typename T >
Feel::SolverEigen< T >::SolverEigen ( SolverEigen< T > const &  eis)

copy constructor

template<typename T >
Feel::SolverEigen< T >::~SolverEigen ( )
virtual

Destructor.

Member Function Documentation

template<typename T >
boost::shared_ptr< SolverEigen< T > > Feel::SolverEigen< T >::build ( const SolverPackage  solver_package = SOLVERS_SLEPC)
static

Builds a SolverEigen using the linear solver package specified by solver_package

template<typename T >
boost::shared_ptr< SolverEigen< T > > Feel::SolverEigen< T >::build ( po::variables_map const &  vm,
std::string const &  prefix = std::string() 
)
static

Builds a SolverEigen using the linear solver package specified by vm

Parameters
vmvariables_map that contains the command line options and their defaults
prefixstring that allows for various options of the same type
template<typename T>
virtual void Feel::SolverEigen< T >::clear ( )
inlinevirtual

Release all memory and clear data structures.

template<typename T>
virtual eigenpair_type Feel::SolverEigen< T >::eigenPair ( unsigned int  i)
pure virtual

Returns the ith eigenvalue (real and imaginary part), and copies the \ ith eigen vector to the solution vector.

template<typename T>
EigenProblemType Feel::SolverEigen< T >::eigenProblemType ( ) const
inline

Returns the type of the eigen problem.

References Feel::SolverEigen< T >::M_eigen_problem_type.

template<typename T>
EigenSolverType Feel::SolverEigen< T >::eigenSolverType ( ) const
inline

Returns the type of eigensolver to use.

References Feel::SolverEigen< T >::M_eigen_solver_type.

template<typename T>
virtual void Feel::SolverEigen< T >::init ( )
pure virtual

Initialize data structures if not done so already.

template<typename T>
bool Feel::SolverEigen< T >::initialized ( ) const
inline
Returns
true if the data structures are initialized, false otherwise.

References Feel::SolverEigen< T >::M_is_initialized.

template<typename T>
size_type Feel::SolverEigen< T >::maxIterations ( ) const
inline

Returns the maximum number of iterations

References Feel::SolverEigen< T >::M_maxit.

template<typename T>
size_type Feel::SolverEigen< T >::numberOfEigenvalues ( ) const
inline

Returns the number of eigenvalues to compute

References Feel::SolverEigen< T >::M_nev.

template<typename T>
size_type Feel::SolverEigen< T >::numberOfEigenvaluesConverged ( ) const
inline

Returns the number of eigenvalues to compute

References Feel::SolverEigen< T >::M_ncv.

template<typename T>
PositionOfSpectrum Feel::SolverEigen< T >::postitionOfSpectrum ( ) const
inline

Returns the position of the spectrum to compute.

References Feel::SolverEigen< T >::M_position_of_spectrum.

template<typename T>
std::string const& Feel::SolverEigen< T >::prefix ( ) const
inline
Returns
the prefix that differentiates the eigen solvers

References Feel::SolverEigen< T >::M_prefix.

template<typename T>
void Feel::SolverEigen< T >::setEigenProblemType ( EigenProblemType  ept)
inline

Sets the type of the eigenproblem.

References Feel::SolverEigen< T >::M_eigen_problem_type.

template<typename T>
void Feel::SolverEigen< T >::setEigenSolverType ( const EigenSolverType  est)
inline

Sets the type of eigensolver to use.

References Feel::SolverEigen< T >::M_eigen_solver_type.

template<typename T>
void Feel::SolverEigen< T >::setMaxIterations ( size_type  maxiter)
inline

set the max number of iterations

Parameters
maxitermaximum number of iterations

References Feel::SolverEigen< T >::M_maxit.

template<typename T>
void Feel::SolverEigen< T >::setNumberOfEigenValues ( size_type  nev)
inline

set the number of eigenvalues to compute

References Feel::SolverEigen< T >::M_nev.

template<typename T>
void Feel::SolverEigen< T >::setNumberOfEigenValuesConverged ( size_type  ncv)
inline

set the number of eigenvalues to have converged

References Feel::SolverEigen< T >::M_ncv.

template<typename T>
void Feel::SolverEigen< T >::setPositionOfSpectrum ( PositionOfSpectrum  pos)
inline

Sets the position of the spectrum.

References Feel::SolverEigen< T >::M_position_of_spectrum.

template<typename T>
void Feel::SolverEigen< T >::setSpectralTransform ( SpectralTransformType  st)
inline

set the spectral transform

References Feel::SolverEigen< T >::M_spectral_transform.

template<typename T>
void Feel::SolverEigen< T >::setTolerance ( value_type  tol)
inline

set the tolerance

Parameters
toltolerance to reach

References Feel::SolverEigen< T >::M_tolerance.

template<typename T>
virtual solve_return_type Feel::SolverEigen< T >::solve ( MatrixSparse< value_type > &  matrix_A,
int  nev,
int  ncv,
const double  tol,
const unsigned int  m_its 
)
pure virtual

Solves the standard eigen problem and returns the number of converged eigenpairs and the number of iterations.

Referenced by Feel::SolverEigen< T >::solve().

template<typename T>
solve_return_type Feel::SolverEigen< T >::solve ( boost::shared_ptr< MatrixSparse< value_type > > &  matrix_A,
int  nev,
int  ncv,
const double  tol,
const unsigned int  m_its 
)
inline

Solves the standard eigen problem and returns the number of converged eigenpairs and the number of iterations.

References Feel::SolverEigen< T >::solve().

template<typename T>
virtual solve_return_type Feel::SolverEigen< T >::solve ( MatrixSparse< value_type > &  matrix_A,
MatrixSparse< value_type > &  matrix_B,
int  nev,
int  ncv,
const double  tol,
const unsigned int  m_its 
)
pure virtual

Solves the generalized eigen value problem $A x = \lambda Bx$ and returns the number of converged eigenpairs and the number of iterations.

template<typename T>
solve_return_type Feel::SolverEigen< T >::solve ( boost::shared_ptr< MatrixSparse< value_type > > &  matrix_A,
boost::shared_ptr< MatrixSparse< value_type > > &  matrix_B,
int  nev,
int  ncv,
const double  tol,
const unsigned int  m_its 
)
inline

Solves the generalized eigen value problem $A x = \lambda Bx$ and returns the number of converged eigenpairs and the number of iterations.

References Feel::SolverEigen< T >::solve().

template<typename T>
SpectralTransformType Feel::SolverEigen< T >::spectralTransform ( ) const
inline

Returns the spectral transforms

References Feel::SolverEigen< T >::M_spectral_transform.

template<typename T>
value_type Feel::SolverEigen< T >::tolerance ( ) const
inline

Returns the tolerance to be reached by eigenvalue solver

References Feel::SolverEigen< T >::M_tolerance.

Member Data Documentation

template<typename T>
EigenProblemType Feel::SolverEigen< T >::M_eigen_problem_type
protected

Enum stating which type of eigen problem we deal with.

Referenced by Feel::SolverEigen< T >::eigenProblemType(), and Feel::SolverEigen< T >::setEigenProblemType().

template<typename T>
EigenSolverType Feel::SolverEigen< T >::M_eigen_solver_type
protected

Enum stating which type of eigensolver to use.

Referenced by Feel::SolverEigen< T >::eigenSolverType(), and Feel::SolverEigen< T >::setEigenSolverType().

template<typename T>
bool Feel::SolverEigen< T >::M_is_initialized
protected

Flag indicating if the data structures have been initialized.

Referenced by Feel::SolverEigen< T >::initialized().

template<typename T>
PositionOfSpectrum Feel::SolverEigen< T >::M_position_of_spectrum
protected

Enum stating where to evaluate the spectrum.

Referenced by Feel::SolverEigen< T >::postitionOfSpectrum(), and Feel::SolverEigen< T >::setPositionOfSpectrum().

template<typename T>
std::string Feel::SolverEigen< T >::M_prefix
protected

prefix to differentiate eigen solvers

Referenced by Feel::SolverEigen< T >::prefix().

template<typename T>
SpectralTransformType Feel::SolverEigen< T >::M_spectral_transform
protected