PyTrilinos  Development
 All Classes Functions
Public Member Functions | Public Attributes
PyTrilinos.Anasazi.BlockDavidsonEpetra Class Reference
Inheritance diagram for PyTrilinos.Anasazi.BlockDavidsonEpetra:
Inheritance graph
[legend]
Collaboration diagram for PyTrilinos.Anasazi.BlockDavidsonEpetra:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def __init__
def iterate
def initialize
def isInitialized
def getState
def getNumIters
def resetNumIters
def getRitzVectors
def getRitzValues
def getRitzIndex
def getResNorms
def getRes2Norms
def getRitzRes2Norms
def getCurSubspaceDim
def getMaxSubspaceDim
def setStatusTest
def getStatusTest
def getProblem
def setBlockSize
def getBlockSize
def setAuxVecs
def getAuxVecs
def setSize
def currentStatus

Public Attributes

 this

Detailed Description

This class implements a Block Davidson iteration, a preconditioned
iteration for solving linear Hermitian eigenproblems.

This method is described in A Comparison of Eigensolvers for Large-
scale 3D Modal Analysis Using AMG-Preconditioned Iterative Methods, P.
Arbenz, U. L. Hetmaniuk, R. B. Lehoucq, R. S. Tuminaro, Internat. J.
for Numer. Methods Engrg., 64, pp. 204-236 (2005)

Chris Baker, Ulrich Hetmaniuk, Rich Lehoucq, Heidi Thornquist

C++ includes: AnasaziBlockDavidson.hpp 

Constructor & Destructor Documentation

__init__(Anasazi::BlockDavidson<(double,Epetra_MultiVector,Epetra_Operator)> self, Teuchos::RCP< Anasazi::Eigenproblem< double,Epetra_MultiVector,Epetra_Operator > > const & problem, 
    Teuchos::RCP< Anasazi::SortManager< Teuchos::ScalarTraits< double >::magnitudeType > > const & sorter, 
    Teuchos::RCP< Anasazi::OutputManager< double > > const & printer, 
    Teuchos::RCP< Anasazi::StatusTest< double,Epetra_MultiVector,Epetra_Operator > > const & tester, 
    Teuchos::RCP< Anasazi::MatOrthoManager< double,Epetra_MultiVector,Epetra_Operator > > const & ortho, 
    ParameterList params) -> BlockDavidsonEpetra

Anasazi::BlockDavidson< ScalarType, MV, OP >::BlockDavidson(const
Teuchos::RCP< Eigenproblem< ScalarType, MV, OP > > &problem, const
Teuchos::RCP< SortManager< typename Teuchos::ScalarTraits< ScalarType
>::magnitudeType > > &sorter, const Teuchos::RCP< OutputManager<
ScalarType > > &printer, const Teuchos::RCP< StatusTest< ScalarType,
MV, OP > > &tester, const Teuchos::RCP< MatOrthoManager< ScalarType,
MV, OP > > &ortho, Teuchos::ParameterList &params)

BlockDavidson constructor with eigenproblem, solver utilities, and
parameter list of solver options.

This constructor takes pointers required by the eigensolver, in
addition to a parameter list of options for the eigensolver. These
options include the following: "Block Size" - an int specifying the
block size used by the algorithm. This can also be specified using the
setBlockSize() method.

"Num Blocks" - an int specifying the maximum number of blocks
allocated for the solver basis. 

Member Function Documentation

currentStatus(BlockDavidsonEpetra self, std::ostream & os)

void
Anasazi::BlockDavidson< ScalarType, MV, OP
>::currentStatus(std::ostream &os)

This method requests that the solver print out its current status to
the given output stream. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getAuxVecs(BlockDavidsonEpetra self) -> Teuchos::Array< Teuchos::RCP< Epetra_MultiVector const > >

Teuchos::Array< Teuchos::RCP< const MV > > Anasazi::BlockDavidson<
ScalarType, MV, OP >::getAuxVecs() const

Get the auxiliary vectors for the solver. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getBlockSize(BlockDavidsonEpetra self) -> int

int
Anasazi::BlockDavidson< ScalarType, MV, OP >::getBlockSize() const

Get the blocksize used by the iterative solver. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getCurSubspaceDim(BlockDavidsonEpetra self) -> int

int
Anasazi::BlockDavidson< ScalarType, MV, OP >::getCurSubspaceDim()
const

Get the dimension of the search subspace used to generate the current
eigenvectors and eigenvalues.

An integer specifying the rank of the Krylov subspace currently in use
by the eigensolver. If isInitialized() == false, the return is 0.
Otherwise, it will be some strictly positive multiple of
getBlockSize(). 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getMaxSubspaceDim(BlockDavidsonEpetra self) -> int

int
Anasazi::BlockDavidson< ScalarType, MV, OP >::getMaxSubspaceDim()
const

Get the maximum dimension allocated for the search subspace. For
BlockDavidson, this always returns numBlocks*blockSize. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getNumIters(BlockDavidsonEpetra self) -> int

int
Anasazi::BlockDavidson< ScalarType, MV, OP >::getNumIters() const

Get the current iteration count. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getProblem(BlockDavidsonEpetra self) -> EigenproblemEpetra

const
Eigenproblem< ScalarType, MV, OP > & Anasazi::BlockDavidson<
ScalarType, MV, OP >::getProblem() const

Get a constant reference to the eigenvalue problem. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getRes2Norms(BlockDavidsonEpetra self) -> std::vector< Teuchos::ScalarTraits< double >::magnitudeType,std::allocator< Teuchos::ScalarTraits< double >::magnitudeType > >

std::vector< typename Teuchos::ScalarTraits< ScalarType
>::magnitudeType > Anasazi::BlockDavidson< ScalarType, MV, OP
>::getRes2Norms()

Get the current residual 2-norms, computing the norms if they are not
up-to-date with the current residual vectors.

A vector of length getCurSubspaceDim() containing the 2-norms of the
current residuals. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getResNorms(BlockDavidsonEpetra self) -> std::vector< Teuchos::ScalarTraits< double >::magnitudeType,std::allocator< Teuchos::ScalarTraits< double >::magnitudeType > >

std::vector< typename Teuchos::ScalarTraits< ScalarType
>::magnitudeType > Anasazi::BlockDavidson< ScalarType, MV, OP
>::getResNorms()

Get the current residual norms, computing the norms if they are not
up-to-date with the current residual vectors.

A vector of length getCurSubspaceDim() containing the norms of the
residuals, with respect to the orthogonalization manager's norm()
method. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getRitzIndex(BlockDavidsonEpetra self) -> VectorInt

std::vector< int > Anasazi::BlockDavidson< ScalarType, MV, OP
>::getRitzIndex()

Get the index used for extracting individual Ritz vectors from
getRitzVectors().

Because BlockDavidson is a Hermitian solver, all Ritz values are real
and all Ritz vectors can be represented in a single column of a
multivector. Therefore, getRitzIndex() is not needed when using the
output from getRitzVectors().

An int vector of size getCurSubspaceDim() composed of zeros. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getRitzRes2Norms(BlockDavidsonEpetra self) -> std::vector< Teuchos::ScalarTraits< double >::magnitudeType,std::allocator< Teuchos::ScalarTraits< double >::magnitudeType > >

std::vector< typename Teuchos::ScalarTraits< ScalarType
>::magnitudeType > Anasazi::BlockDavidson< ScalarType, MV, OP
>::getRitzRes2Norms()

Get the 2-norms of the residuals.

The Ritz residuals are not defined for the LOBPCG iteration. Hence,
this method returns the 2-norms of the direct residuals, and is
equivalent to calling getRes2Norms().

A vector of length getBlockSize() containing the 2-norms of the direct
residuals. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getRitzValues(BlockDavidsonEpetra self) -> VectorValueDouble

std::vector< Value< ScalarType > > Anasazi::BlockDavidson< ScalarType,
MV, OP >::getRitzValues()

Get the Ritz values for the previous iteration.

A vector of length getCurSubspaceDim() containing the Ritz values from
the previous projected eigensolve. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getRitzVectors(BlockDavidsonEpetra self) -> Teuchos::RCP< Epetra_MultiVector const >

Teuchos::RCP< const MV > Anasazi::BlockDavidson< ScalarType, MV, OP
>::getRitzVectors()

Get access to the current Ritz vectors.

A multivector with getBlockSize() vectors containing the sorted Ritz
vectors corresponding to the most significant Ritz values. The i-th
vector of the return corresponds to the i-th Ritz vector; there is no
need to use getRitzIndex(). 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

getState(BlockDavidsonEpetra self) -> Anasazi::BlockDavidsonState< double,Epetra_MultiVector >

BlockDavidsonState< ScalarType, MV > Anasazi::BlockDavidson<
ScalarType, MV, OP >::getState() const

Get access to the current state of the eigensolver.

The data is only valid if isInitialized() == true.

The data for the preconditioned residual is only meaningful in the
scenario that the solver throws a ::BlockDavidsonRitzFailure exception
during iterate().

A BlockDavidsonState object containing const pointers to the current
solver state. Note, these are direct pointers to the multivectors;
they are not pointers to views of the multivectors. 
getStatusTest(BlockDavidsonEpetra self) -> Teuchos::RCP< Anasazi::StatusTest< double,Epetra_MultiVector,Epetra_Operator > >

Teuchos::RCP< StatusTest< ScalarType, MV, OP > >
Anasazi::BlockDavidson< ScalarType, MV, OP >::getStatusTest() const

Get the current StatusTest used by the solver. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

initialize(BlockDavidsonEpetra self, Anasazi::BlockDavidsonState< double,Epetra_MultiVector > newstate)
initialize(BlockDavidsonEpetra self)

void
Anasazi::BlockDavidson< ScalarType, MV, OP >::initialize()

Initialize the solver with the initial vectors from the eigenproblem
or random data. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

isInitialized(BlockDavidsonEpetra self) -> bool

bool
Anasazi::BlockDavidson< ScalarType, MV, OP >::isInitialized() const

Indicates whether the solver has been initialized or not.

bool indicating the state of the solver.

If isInitialized() == true:  getCurSubspaceDim() > 0 and is a multiple
of getBlockSize()

the first getCurSubspaceDim() vectors of V are orthogonal to auxiliary
vectors and have orthonormal columns

the principal submatrix of order getCurSubspaceDim() of KK contains
the project eigenproblem matrix

X contains the Ritz vectors with respect to the current Krylov basis

T contains the Ritz values with respect to the current Krylov basis

KX == Op*X

MX == M*X if M != Teuchos::null  Otherwise, MX == Teuchos::null

R contains the residual vectors with respect to X 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

iterate(BlockDavidsonEpetra self)

void
Anasazi::BlockDavidson< ScalarType, MV, OP >::iterate()

This method performs BlockDavidson iterations until the status test
indicates the need to stop or an error occurs (in which case, an
appropriate exception is thrown).

iterate() will first determine whether the solver is uninitialized; if
not, it will call initialize(). After initialization, the solver
performs block Davidson iterations until the status test evaluates as
::Passed, at which point the method returns to the caller.

The block Davidson iteration proceeds as follows: The current residual
(R) is preconditioned to form H

H is orthogonalized against the auxiliary vectors and the previous
basis vectors, and made orthonormal.

The current basis is expanded with H and used to project the problem
matrix.

The projected eigenproblem is solved, and the desired eigenvectors and
eigenvalues are selected.

These are used to form the new eigenvector estimates (X).

The new residual (R) is formed.

The status test is queried at the beginning of the iteration.

Possible exceptions thrown include std::invalid_argument or one of the
BlockDavidson-specific exceptions. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

resetNumIters(BlockDavidsonEpetra self)

void
Anasazi::BlockDavidson< ScalarType, MV, OP >::resetNumIters()

Reset the iteration count. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

setAuxVecs(BlockDavidsonEpetra self, Teuchos::Array< Teuchos::RCP< Epetra_MultiVector const > > const & auxvecs)

void
Anasazi::BlockDavidson< ScalarType, MV, OP >::setAuxVecs(const
Teuchos::Array< Teuchos::RCP< const MV > > &auxvecs)

Set the auxiliary vectors for the solver.

Because the current basis V cannot be assumed orthogonal to the new
auxiliary vectors, a call to setAuxVecs() will reset the solver to the
uninitialized state. This happens only in the case where the new
auxiliary vectors have a combined dimension of greater than zero.

In order to preserve the current state, the user will need to extract
it from the solver using getState(), orthogonalize it against the new
auxiliary vectors, and reinitialize using initialize(). 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

setBlockSize(BlockDavidsonEpetra self, int blockSize)

void
Anasazi::BlockDavidson< ScalarType, MV, OP >::setBlockSize(int
blockSize)

Set the blocksize.

This method is required to support the interface provided by
Eigensolver. However, the preferred method of setting the allocated
size for the BlockDavidson eigensolver is setSize(). In fact,
setBlockSize() simply calls setSize(), maintaining the current number
of blocks.

The block size determines the number of Ritz vectors and values that
are computed on each iteration, thereby determining the increase in
the Krylov subspace at each iteration. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.

setSize(BlockDavidsonEpetra self, int blockSize, int numBlocks)

void
Anasazi::BlockDavidson< ScalarType, MV, OP >::setSize(int blockSize,
int numBlocks)

Set the blocksize and number of blocks to be used by the iterative
solver in solving this eigenproblem.

Changing either the block size or the number of blocks will reset the
solver to an uninitialized state.

The requested block size must be strictly positive; the number of
blocks must be greater than one. Invalid arguments will result in a
std::invalid_argument exception. 
setStatusTest(BlockDavidsonEpetra self, Teuchos::RCP< Anasazi::StatusTest< double,Epetra_MultiVector,Epetra_Operator > > test)

void
Anasazi::BlockDavidson< ScalarType, MV, OP
>::setStatusTest(Teuchos::RCP< StatusTest< ScalarType, MV, OP > >
test)

Set a new StatusTest for the solver. 

Reimplemented from PyTrilinos.Anasazi.EigensolverEpetra.


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