PyTrilinos::Anasazi::LOBPCGSolMgrEpetra Class Reference

Inheritance diagram for PyTrilinos::Anasazi::LOBPCGSolMgrEpetra:

Inheritance graph
[legend]
Collaboration diagram for PyTrilinos::Anasazi::LOBPCGSolMgrEpetra:

Collaboration graph
[legend]

List of all members.

Public Member Functions

def __init__
def getProblem
def getNumIters
def getTimers
def solve
def setGlobalStatusTest
def getGlobalStatusTest
def setLockingStatusTest
def getLockingStatusTest
def setDebugStatusTest
def getDebugStatusTest
def __init__
def getProblem
def getNumIters
def getTimers
def solve
def setGlobalStatusTest
def getGlobalStatusTest
def setLockingStatusTest
def getLockingStatusTest
def setDebugStatusTest
def getDebugStatusTest

Public Attributes

 this


Detailed Description

The LOBPCGSolMgr provides a powerful solver manager over the LOBPCG
eigensolver.

This solver manager exists to provide a flexible manager over the
LOBPCG eigensolver intended for general use. Features provided by this
solver manager include: locking of converged eigenpairs

global convergence on only the significant eigenpairs (instead of any
eigenpairs with low residual)

recovery from LOBPCGRitzFailure when full orthogonalization is
disabled

The solver manager provides to the solver a StatusTestCombo object
constructed as follows: combo = maxiterstest OR globaltest OR
lockingtest OR debugtest  where  maxiters terminates computation when
a maximum number of iterations have been performed maxiters is a
StatusTestMaxIters object

globaltest terminates computation when global convergence has been
detected.  It is encapsulated in a StatusTestWithOrdering object, to
ensure that computation is terminated only after the most significant
eigenvalues/eigenvectors have met the convergence criteria.  If not
specified via setGlobalStatusTest(), globaltest is a StatusTestResNorm
object which tests the M-norms of the direct residuals relative to the
Ritz values.

lockingtest halts LOBPCG::iterate() in order to deflate converged
eigenpairs for locking.  It will query the underlying LOBPCG
eigensolver to determine when eigenvectors should be locked.  If not
specified via setLockingStatusTest(), lockingtest is a
StatusTestResNorm object.

debugtest allows a user to specify additional monitoring of the
iteration, encapsulated in a StatusTest object  If not specified via
setDebugStatusTest(), debugtest is ignored.  In most cases, it should
return Failed; if it returns Passed, solve() will throw an
AnasaziError exception.

Much of this behavior is controlled via parameters and options passed
to the solver manager. For more information, see LOBPCGSolMgr().

Chris Baker, Ulrich Hetmaniuk, Rich Lehoucq, Heidi Thornquist

C++ includes: AnasaziLOBPCGSolMgr.hpp 

Member Function Documentation

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::__init__ (   self,
  args 
)

__init__(self, Teuchos::RCP<(Anasazi::Eigenproblem<(double,Epetra_MultiVector,Epetra_Operator)>)> problem, 
    ParameterList pl) -> LOBPCGSolMgrEpetra

Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::LOBPCGSolMgr(const
Teuchos::RCP< Eigenproblem< ScalarType, MV, OP > > &problem,
Teuchos::ParameterList &pl)

Basic constructor for LOBPCGSolMgr.

This constructor accepts the Eigenproblem to be solved in addition to
a parameter list of options for the solver manager. These options
include the following: Solver parameters  "Which" - a string
specifying the desired eigenvalues: SM, LM, SR or LR. Default: "SR"

"Block Size" - a int specifying the block size to be used by the
underlying LOBPCG solver. Default: problem->getNEV()

"Full Ortho" - a bool specifying whether the underlying solver
should employ the full orthogonalization scheme. Default: true

"Recover" - a bool specifying whether the solver manager should
attempt to recover in the case of a LOBPCGRitzFailure when full
orthogonalization is disabled. Default: true

"Verbosity" - a sum of MsgType specifying the verbosity. Default:
Errors

"Init" - a LOBPCGState<ScalarType,MV> struct used to initialize the
LOBPCG eigensolver.

Convergence parameters (if using default convergence test; see
setGlobalStatusTest())  "Maximum Iterations" - a int specifying the
maximum number of iterations the underlying solver is allowed to
perform. Default: 100

"Convergence Tolerance" - a MagnitudeType specifying the level that
residual norms must reach to decide convergence. Default: machine
precision.

"Relative Convergence Tolerance" - a bool specifying whether
residuals norms should be scaled by their eigenvalues for the
purposing of deciding convergence. Default: true

"Convergence Norm" - a string specifying the norm for convergence
testing: "2" or "M"

Locking parameters (if using default locking test; see
setLockingStatusTest())  "Use Locking" - a bool specifying whether
the algorithm should employ locking of converged eigenpairs. Default:
false

"Max Locked" - a int specifying the maximum number of eigenpairs to
be locked. Default: problem->getNEV()

"Locking Quorum" - a int specifying the number of eigenpairs that
must meet the locking criteria before locking actually occurs.
Default: 1

"Locking Tolerance" - a MagnitudeType specifying the level that
residual norms must reach to decide locking. Default: 0.1*convergence
tolerance

"Relative Locking Tolerance" - a bool specifying whether residuals
norms should be scaled by their eigenvalues for the purposing of
deciding locking. Default: true

"Locking Norm" - a string specifying the norm for locking testing:
"2" or "M" 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::__init__ (   self,
  args 
)

__init__(self, Teuchos::RCP<(Anasazi::Eigenproblem<(double,Epetra_MultiVector,Epetra_Operator)>)> problem, 
    ParameterList pl) -> LOBPCGSolMgrEpetra

Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::LOBPCGSolMgr(const
Teuchos::RCP< Eigenproblem< ScalarType, MV, OP > > &problem,
Teuchos::ParameterList &pl)

Basic constructor for LOBPCGSolMgr.

This constructor accepts the Eigenproblem to be solved in addition to
a parameter list of options for the solver manager. These options
include the following: Solver parameters  "Which" - a string
specifying the desired eigenvalues: SM, LM, SR or LR. Default: "SR"

"Block Size" - a int specifying the block size to be used by the
underlying LOBPCG solver. Default: problem->getNEV()

"Full Ortho" - a bool specifying whether the underlying solver
should employ the full orthogonalization scheme. Default: true

"Recover" - a bool specifying whether the solver manager should
attempt to recover in the case of a LOBPCGRitzFailure when full
orthogonalization is disabled. Default: true

"Verbosity" - a sum of MsgType specifying the verbosity. Default:
Errors

"Init" - a LOBPCGState<ScalarType,MV> struct used to initialize the
LOBPCG eigensolver.

Convergence parameters (if using default convergence test; see
setGlobalStatusTest())  "Maximum Iterations" - a int specifying the
maximum number of iterations the underlying solver is allowed to
perform. Default: 100

"Convergence Tolerance" - a MagnitudeType specifying the level that
residual norms must reach to decide convergence. Default: machine
precision.

"Relative Convergence Tolerance" - a bool specifying whether
residuals norms should be scaled by their eigenvalues for the
purposing of deciding convergence. Default: true

"Convergence Norm" - a string specifying the norm for convergence
testing: "2" or "M"

Locking parameters (if using default locking test; see
setLockingStatusTest())  "Use Locking" - a bool specifying whether
the algorithm should employ locking of converged eigenpairs. Default:
false

"Max Locked" - a int specifying the maximum number of eigenpairs to
be locked. Default: problem->getNEV()

"Locking Quorum" - a int specifying the number of eigenpairs that
must meet the locking criteria before locking actually occurs.
Default: 1

"Locking Tolerance" - a MagnitudeType specifying the level that
residual norms must reach to decide locking. Default: 0.1*convergence
tolerance

"Relative Locking Tolerance" - a bool specifying whether residuals
norms should be scaled by their eigenvalues for the purposing of
deciding locking. Default: true

"Locking Norm" - a string specifying the norm for locking testing:
"2" or "M" 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getDebugStatusTest (   self,
  args 
)

getDebugStatusTest(self) -> Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)>

const Teuchos::RCP< StatusTest< ScalarType, MV, OP > > &
Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::getDebugStatusTest()
const

Get the status test for debugging. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getDebugStatusTest (   self,
  args 
)

getDebugStatusTest(self) -> Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)>

const Teuchos::RCP< StatusTest< ScalarType, MV, OP > > &
Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::getDebugStatusTest()
const

Get the status test for debugging. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getGlobalStatusTest (   self,
  args 
)

getGlobalStatusTest(self) -> Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)>

const Teuchos::RCP< StatusTest< ScalarType, MV, OP > > &
Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::getGlobalStatusTest()
const

Get the status test defining global convergence. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getGlobalStatusTest (   self,
  args 
)

getGlobalStatusTest(self) -> Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)>

const Teuchos::RCP< StatusTest< ScalarType, MV, OP > > &
Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::getGlobalStatusTest()
const

Get the status test defining global convergence. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getLockingStatusTest (   self,
  args 
)

getLockingStatusTest(self) -> Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)>

const Teuchos::RCP< StatusTest< ScalarType, MV, OP > > &
Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::getLockingStatusTest()
const

Get the status test defining locking. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getLockingStatusTest (   self,
  args 
)

getLockingStatusTest(self) -> Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)>

const Teuchos::RCP< StatusTest< ScalarType, MV, OP > > &
Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::getLockingStatusTest()
const

Get the status test defining locking. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getNumIters (   self,
  args 
)

getNumIters(self) -> int

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

Get the iteration count for the most recent call to  solve(). 

Reimplemented from PyTrilinos::Anasazi::SolverManagerEpetra.

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getNumIters (   self,
  args 
)

getNumIters(self) -> int

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

Get the iteration count for the most recent call to  solve(). 

Reimplemented from PyTrilinos::Anasazi::SolverManagerEpetra.

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getProblem (   self,
  args 
)

getProblem(self) -> EigenproblemEpetra

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

Return the eigenvalue problem. 

Reimplemented from PyTrilinos::Anasazi::SolverManagerEpetra.

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getProblem (   self,
  args 
)

getProblem(self) -> EigenproblemEpetra

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

Return the eigenvalue problem. 

Reimplemented from PyTrilinos::Anasazi::SolverManagerEpetra.

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getTimers (   self,
  args 
)

getTimers(self) -> Teuchos::Array<(Teuchos::RCP<(Teuchos::Time)>)>

Teuchos::Array<Teuchos::RCP<Teuchos::Time> > Anasazi::LOBPCGSolMgr<
ScalarType, MV, OP >::getTimers() const

Return the timers for this object.

The timers are ordered as follows: time spent in solve() routine

time spent locking converged eigenvectors 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::getTimers (   self,
  args 
)

getTimers(self) -> Teuchos::Array<(Teuchos::RCP<(Teuchos::Time)>)>

Teuchos::Array<Teuchos::RCP<Teuchos::Time> > Anasazi::LOBPCGSolMgr<
ScalarType, MV, OP >::getTimers() const

Return the timers for this object.

The timers are ordered as follows: time spent in solve() routine

time spent locking converged eigenvectors 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::setDebugStatusTest (   self,
  args 
)

setDebugStatusTest(self, Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)> debug)

void Anasazi::LOBPCGSolMgr< ScalarType, MV, OP
>::setDebugStatusTest(const Teuchos::RCP< StatusTest< ScalarType, MV,
OP > > &debug)

Set the status test for debugging. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::setDebugStatusTest (   self,
  args 
)

setDebugStatusTest(self, Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)> debug)

void Anasazi::LOBPCGSolMgr< ScalarType, MV, OP
>::setDebugStatusTest(const Teuchos::RCP< StatusTest< ScalarType, MV,
OP > > &debug)

Set the status test for debugging. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::setGlobalStatusTest (   self,
  args 
)

setGlobalStatusTest(self, Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)> _global)

void Anasazi::LOBPCGSolMgr< ScalarType, MV, OP
>::setGlobalStatusTest(const Teuchos::RCP< StatusTest< ScalarType, MV,
OP > > &global)

Set the status test defining global convergence. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::setGlobalStatusTest (   self,
  args 
)

setGlobalStatusTest(self, Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)> _global)

void Anasazi::LOBPCGSolMgr< ScalarType, MV, OP
>::setGlobalStatusTest(const Teuchos::RCP< StatusTest< ScalarType, MV,
OP > > &global)

Set the status test defining global convergence. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::setLockingStatusTest (   self,
  args 
)

setLockingStatusTest(self, Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)> locking)

void Anasazi::LOBPCGSolMgr< ScalarType, MV, OP
>::setLockingStatusTest(const Teuchos::RCP< StatusTest< ScalarType,
MV, OP > > &locking)

Set the status test defining locking. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::setLockingStatusTest (   self,
  args 
)

setLockingStatusTest(self, Teuchos::RCP<(Anasazi::StatusTest<(double,Epetra_MultiVector,Epetra_Operator)>)> locking)

void Anasazi::LOBPCGSolMgr< ScalarType, MV, OP
>::setLockingStatusTest(const Teuchos::RCP< StatusTest< ScalarType,
MV, OP > > &locking)

Set the status test defining locking. 

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::solve (   self,
  args 
)

solve(self) -> ReturnType

ReturnType
Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::solve()

This method performs possibly repeated calls to the underlying
eigensolver's iterate() routine until the problem has been solved (as
decided by the solver manager) or the solver manager decides to quit.

This method calls LOBPCG::iterate(), which will return either because
a specially constructed status test evaluates to Passed or an
exception is thrown.

A return from LOBPCG::iterate() signifies one of the following
scenarios: the maximum number of iterations has been exceeded. In this
scenario, the solver manager will place  all converged eigenpairs into
the eigenproblem and return Unconverged.

the locking conditions have been met. In this scenario, some of the
current eigenpairs will be removed  from the eigensolver and placed
into auxiliary storage. The eigensolver will be restarted with the
remaining  eigenpairs and some random information to replace the
removed eigenpairs.

global convergence has been met. In this case, the most significant
NEV eigenpairs in the solver and locked storage  have met the
convergence criterion. (Here, NEV refers to the number of eigenpairs
requested by the Eigenproblem.)  In this scenario, the solver manager
will return Converged.

an LOBPCGRitzFailure exception has been thrown. If full
orthogonalization is enabled and recovery from this exception  is
requested, the solver manager will attempt to recover from this
exception by gathering the current eigenvectors,  preconditioned
residual, and search directions from the eigensolver,
orthogonormalizing the basis composed of these  three, projecting the
eigenproblem, and restarting the eigensolver with the solution of the
project eigenproblem. Any  additional failure that occurs during this
recovery effort will result in the eigensolver returning Unconverged.

ReturnType specifying: Converged: the eigenproblem was solved to the
specification required by the solver manager.

Unconverged: the eigenproblem was not solved to the specification
desired by the solver manager 

Reimplemented from PyTrilinos::Anasazi::SolverManagerEpetra.

def PyTrilinos::Anasazi::LOBPCGSolMgrEpetra::solve (   self,
  args 
)

solve(self) -> ReturnType

ReturnType
Anasazi::LOBPCGSolMgr< ScalarType, MV, OP >::solve()

This method performs possibly repeated calls to the underlying
eigensolver's iterate() routine until the problem has been solved (as
decided by the solver manager) or the solver manager decides to quit.

This method calls LOBPCG::iterate(), which will return either because
a specially constructed status test evaluates to Passed or an
exception is thrown.

A return from LOBPCG::iterate() signifies one of the following
scenarios: the maximum number of iterations has been exceeded. In this
scenario, the solver manager will place  all converged eigenpairs into
the eigenproblem and return Unconverged.

the locking conditions have been met. In this scenario, some of the
current eigenpairs will be removed  from the eigensolver and placed
into auxiliary storage. The eigensolver will be restarted with the
remaining  eigenpairs and some random information to replace the
removed eigenpairs.

global convergence has been met. In this case, the most significant
NEV eigenpairs in the solver and locked storage  have met the
convergence criterion. (Here, NEV refers to the number of eigenpairs
requested by the Eigenproblem.)  In this scenario, the solver manager
will return Converged.

an LOBPCGRitzFailure exception has been thrown. If full
orthogonalization is enabled and recovery from this exception  is
requested, the solver manager will attempt to recover from this
exception by gathering the current eigenvectors,  preconditioned
residual, and search directions from the eigensolver,
orthogonormalizing the basis composed of these  three, projecting the
eigenproblem, and restarting the eigensolver with the solution of the
project eigenproblem. Any  additional failure that occurs during this
recovery effort will result in the eigensolver returning Unconverged.

ReturnType specifying: Converged: the eigenproblem was solved to the
specification required by the solver manager.

Unconverged: the eigenproblem was not solved to the specification
desired by the solver manager 

Reimplemented from PyTrilinos::Anasazi::SolverManagerEpetra.


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

Generated on Thu Dec 17 11:00:20 2009 for PyTrilinos by  doxygen 1.5.9