Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
eigensolver::JdbSym Class Reference

Eigenvalue solver using JDBSYM. More...

#include <jdbsym.hh>

Inheritance diagram for eigensolver::JdbSym:
Inheritance graph
[legend]
Collaboration diagram for eigensolver::JdbSym:
Collaboration graph
[legend]

List of all members.

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.

Detailed Description

Eigenvalue solver using JDBSYM.

JDBSYM is an implementation of the Jacobi-Davidson method optimized for symmetric eigenvalue problems. It solves eigenproblems of the form $ A x = \lambda x $ and $ A x = \lambda B x $ with or without preconditioning, where A is symmetric and B is symmetric positive definite. The implementation supports blocking.

See also:
Roman Geus and Oscar Chinellato, JDBSYM 0.14, 2000.
Roman Geus. The Jacobi-Davidson algorithm for solving large sparse symmetric eigenvalue problems with application to the design of accelerator cavities. PhD thesis 14734, Swiss Federal Institute of Technology Zurich, 2002.
Test:

test::GolubExample

test::GolubExampleSum

test::MaxwellTransmissionEVP

Author:
Norbert Fernandes, 2002

Definition at line 45 of file jdbsym.hh.


Constructor & Destructor Documentation

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 $ A x = \lambda B x $ where A, B are the stiffness and the mass matrices respectively.

The computation is only perfomed if getEV or getEF is called.

Parameters:
stiffStiffness matrix A
massMass matrix B
fabricSolver fabric for a linear solver (preconditioner for the shifted stiffness matrix)
tolConvergence tolerance for the eigenpairs. For a pair $ (\lambda, u) $ convergence is defined by $ \| A u - \lambda B u \| < tol $
maxitMaximal number of iterations
tauTarget value of Jacobi-Davidson algorithm. The code will find the kmax eigenvalues closest to tau.
jdtypeType of solver required. An older solver and a newer solver are possible to use.
kmaxNumber of eigenpairs to be computed
startStarting vectors. Used to build the initial search subspace
virtual eigensolver::JdbSym::~JdbSym ( ) [virtual]

Member Function Documentation

void eigensolver::JdbSym::compute_ ( ) [private]

The real compute routine.

Fills lambda_ and ev_

See also:
computed_
virtual uint eigensolver::JdbSym::converged ( ) const [inline, virtual]

Returns the number of converged eigen pairs.

Implements eigensolver::EigenSolver< Real >.

Definition at line 81 of file jdbsym.hh.

virtual const concepts::Array<concepts::Vector<Real>*>& eigensolver::JdbSym::getEF ( ) [virtual]
virtual const concepts::Array<Real>& eigensolver::JdbSym::getEV ( ) [virtual]

Returns an array with the eigen values.

Deprecated:
: this interface requires that the returned array must be hold as a member variable of the class.

(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 >.

Definition at line 80 of file jdbsym.hh.


Member Data Documentation

If false, the code will have to compute, otherwise not.

Definition at line 90 of file jdbsym.hh.

Storage space for eigenvectors.

Definition at line 115 of file jdbsym.hh.

References into storage for eigenvectors.

Definition at line 117 of file jdbsym.hh.

Definition at line 122 of file jdbsym.hh.

int eigensolver::JdbSym::it_ [private]

Actual number of iterations.

Definition at line 108 of file jdbsym.hh.

int eigensolver::JdbSym::jdbsymLock_ [static, private]

Lock for the eigen value solver.

Definition at line 126 of file jdbsym.hh.

const uint eigensolver::JdbSym::jdtype_ [private]

Type of eigen value solver.

Definition at line 104 of file jdbsym.hh.

Number of converged eigenpais.

Definition at line 110 of file jdbsym.hh.

Number of eigenvalues.

Definition at line 106 of file jdbsym.hh.

Storage space for eigenvalues.

Definition at line 113 of file jdbsym.hh.

Mass matrix (ie.

discretization of the right hand side of $ A u = \lambda u $

Definition at line 96 of file jdbsym.hh.

Definition at line 120 of file jdbsym.hh.

Maximal number of iterations.

Definition at line 100 of file jdbsym.hh.

Definition at line 123 of file jdbsym.hh.

Stiffness matrix (ie. discretazation of spatial problem)

Definition at line 92 of file jdbsym.hh.

Statistics, counts number of evaluations of matrix vector product.

Definition at line 120 of file jdbsym.hh.

Real eigensolver::JdbSym::tau_ [private]

Target value for the eigenvalues.

Definition at line 102 of file jdbsym.hh.

Real eigensolver::JdbSym::tol_ [private]

Tolerance.

Definition at line 98 of file jdbsym.hh.


The documentation for this class was generated from the following file:

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)