Eigenvalue solver using JDBSYM. More...
#include <jdbsym.hh>


Public Member Functions | |
| virtual uint | converged () const |
| Returns the number of converged eigen pairs. | |
| virtual const concepts::Array < concepts::Vector< Real > * > & | getEF () |
| virtual const concepts::Array < Real > & | getEV () |
| Returns an array with the eigen values. | |
| virtual uint | iterations () const |
| Returns the number of iterations. | |
| JdbSym (concepts::Operator< Real > &stiff, concepts::Operator< Real > &mass, Real tol, uint maxit=150, Real tau=0.0, uint jdtype=1, uint kmax=1, concepts::SolverFabric< Real > *fabric=0, const concepts::Array< concepts::Vector< Real > * > *start=0) | |
| Constructor. | |
| virtual | ~JdbSym () |
Protected Member Functions | |
| virtual std::ostream & | info (std::ostream &os) const |
| Returns information in an output stream. | |
Private Member Functions | |
| void | compute_ () |
| The real compute routine. | |
Private Attributes | |
| bool | computed_ |
| If false, the code will have to compute, otherwise not. | |
| concepts::Array< Real > | eigenvectors_ |
| Storage space for eigenvectors. | |
| concepts::Array < concepts::Vector< Real > * > | ev_ |
| References into storage for eigenvectors. | |
| concepts::SolverFabric< Real > * | fabric_ |
| int | it_ |
| Actual number of iterations. | |
| const uint | jdtype_ |
| Type of eigen value solver. | |
| int | k_conv_ |
| Number of converged eigenpais. | |
| uint | kmax_ |
| Number of eigenvalues. | |
| concepts::Array< Real > | lambda_ |
| Storage space for eigenvalues. | |
| concepts::Operator< Real > & | mass_ |
| Mass matrix (ie. | |
| uint | massCounter_ |
| uint | maxit_ |
| Maximal number of iterations. | |
| const concepts::Array < concepts::Vector< Real > * > * | start_ |
| concepts::Operator< Real > & | stiff_ |
| Stiffness matrix (ie. discretazation of spatial problem) | |
| uint | stiffCounter_ |
| Statistics, counts number of evaluations of matrix vector product. | |
| Real | tau_ |
| Target value for the eigenvalues. | |
| Real | tol_ |
| Tolerance. | |
Static Private Attributes | |
| static int | jdbsymLock_ |
| Lock for the eigen value solver. | |
Eigenvalue solver using JDBSYM.
JDBSYM is an implementation of the Jacobi-Davidson method optimized for symmetric eigenvalue problems. It solves eigenproblems of the form
and
with or without preconditioning, where A is symmetric and B is symmetric positive definite. The implementation supports blocking.
| eigensolver::JdbSym::JdbSym | ( | concepts::Operator< Real > & | stiff, |
| concepts::Operator< Real > & | mass, | ||
| Real | tol, | ||
| uint | maxit = 150, |
||
| Real | tau = 0.0, |
||
| uint | jdtype = 1, |
||
| uint | kmax = 1, |
||
| concepts::SolverFabric< Real > * | fabric = 0, |
||
| const concepts::Array< concepts::Vector< Real > * > * | start = 0 |
||
| ) |
Constructor.
Initializes the JdbSym class. As parameter it takes the few most important variables that are needed for the Jacobi-Davidson algorithm. The rest of the parameters are given as default and work in most cases. The class then solves the problem
where A, B are the stiffness and the mass matrices respectively.
The computation is only perfomed if getEV or getEF is called.
| stiff | Stiffness matrix A |
| mass | Mass matrix B |
| fabric | Solver fabric for a linear solver (preconditioner for the shifted stiffness matrix) |
| tol | Convergence tolerance for the eigenpairs. For a pair convergence is defined by |
| maxit | Maximal number of iterations |
| tau | Target value of Jacobi-Davidson algorithm. The code will find the kmax eigenvalues closest to tau. |
| jdtype | Type of solver required. An older solver and a newer solver are possible to use. |
| kmax | Number of eigenpairs to be computed |
| start | Starting vectors. Used to build the initial search subspace |
| virtual eigensolver::JdbSym::~JdbSym | ( | ) | [virtual] |
| void eigensolver::JdbSym::compute_ | ( | ) | [private] |
| virtual uint eigensolver::JdbSym::converged | ( | ) | const [inline, virtual] |
Returns the number of converged eigen pairs.
Implements eigensolver::EigenSolver< Real >.
| virtual const concepts::Array<concepts::Vector<Real>*>& eigensolver::JdbSym::getEF | ( | ) | [virtual] |
Implements eigensolver::EigenSolver< Real >.
| virtual const concepts::Array<Real>& eigensolver::JdbSym::getEV | ( | ) | [virtual] |
Returns an array with the eigen values.
(use std::auto_pointer or similar)
Implements eigensolver::EigenSolver< Real >.
| virtual std::ostream& eigensolver::JdbSym::info | ( | std::ostream & | os | ) | const [protected, virtual] |
Returns information in an output stream.
Reimplemented from eigensolver::EigenSolver< Real >.
| virtual uint eigensolver::JdbSym::iterations | ( | ) | const [inline, virtual] |
Returns the number of iterations.
Implements eigensolver::EigenSolver< Real >.
bool eigensolver::JdbSym::computed_ [private] |
concepts::Array<Real> eigensolver::JdbSym::eigenvectors_ [private] |
concepts::Array<concepts::Vector<Real>*> eigensolver::JdbSym::ev_ [private] |
concepts::SolverFabric<Real>* eigensolver::JdbSym::fabric_ [private] |
int eigensolver::JdbSym::it_ [private] |
int eigensolver::JdbSym::jdbsymLock_ [static, private] |
const uint eigensolver::JdbSym::jdtype_ [private] |
int eigensolver::JdbSym::k_conv_ [private] |
uint eigensolver::JdbSym::kmax_ [private] |
concepts::Array<Real> eigensolver::JdbSym::lambda_ [private] |
concepts::Operator<Real>& eigensolver::JdbSym::mass_ [private] |
uint eigensolver::JdbSym::massCounter_ [private] |
uint eigensolver::JdbSym::maxit_ [private] |
const concepts::Array<concepts::Vector<Real>*>* eigensolver::JdbSym::start_ [private] |
concepts::Operator<Real>& eigensolver::JdbSym::stiff_ [private] |
uint eigensolver::JdbSym::stiffCounter_ [private] |
Real eigensolver::JdbSym::tau_ [private] |
Real eigensolver::JdbSym::tol_ [private] |