TBTK
TBTK::Solver::ArnoldiIterator Class Reference

Solves a Model using Arnoldi iteration. More...

#include <ArnoldiIterator.h>

Inheritance diagram for TBTK::Solver::ArnoldiIterator:
TBTK::Solver::Solver

Public Types

enum  Mode { Normal, ShiftAndInvert }
 

Public Member Functions

 ArnoldiIterator ()
 
virtual ~ArnoldiIterator ()
 
void setMode (Mode mode)
 
void setNumEigenValues (int numEigenValues)
 
int getNumEigenValues () const
 
void setCalculateEigenVectors (bool calculateEigenVectors)
 
bool getCalculateEigenVectors () const
 
void setNumLanczosVectors (int numLanczosVectors)
 
void setTolerance (double tolerance)
 
void setMaxIterations (int maxIterations)
 
void setCentralValue (double centralValue)
 
void run ()
 
const std::complex< double > * getEigenValues () const
 
const double getEigenValue (int state) const
 
const std::complex< double > getAmplitude (int state, const Index &index)
 
- Public Member Functions inherited from TBTK::Solver::Solver
 Solver ()
 
virtual ~Solver ()
 
virtual void setModel (Model &model)
 
ModelgetModel ()
 
const ModelgetModel () const
 

Detailed Description

Solves a Model using Arnoldi iteration.

The ArnoldiIterator can be used to calculate a few eigenvalues and eigenvectors around a given energy.

Member Enumeration Documentation

Enum class describing the different modes of operation.

Normal: Lanczos like iteration for finding extreme eigenvalues and corresponding eigen vectors.

ShiftAndInvert: Shift and invert iteration for finding eigen values around a given value and the corresponding eigen vectors.

Constructor & Destructor Documentation

TBTK::Solver::ArnoldiIterator::ArnoldiIterator ( )

Constructor.

virtual TBTK::Solver::ArnoldiIterator::~ArnoldiIterator ( )
virtual

Destructor.

Member Function Documentation

const std::complex< double > TBTK::Solver::ArnoldiIterator::getAmplitude ( int  state,
const Index index 
)
inline

Get amplitude for given eigen vector \(n\) and physical index \(x\): \(\Psi_{n}(x)\).

Parameters
stateEigen state number \(n\).
indexPhysical index \(\).
bool TBTK::Solver::ArnoldiIterator::getCalculateEigenVectors ( ) const
inline

Get wether eigen vectors are calculated or not.

const double TBTK::Solver::ArnoldiIterator::getEigenValue ( int  state) const
inline

Get eigen value.

const std::complex< double > * TBTK::Solver::ArnoldiIterator::getEigenValues ( ) const
inline

Get eigenValues.

int TBTK::Solver::ArnoldiIterator::getNumEigenValues ( ) const
inline

Get number of eigenvalues.

void TBTK::Solver::ArnoldiIterator::run ( )

Run the implicitly restarted Arnoldi algorithm.

void TBTK::Solver::ArnoldiIterator::setCalculateEigenVectors ( bool  calculateEigenVectors)
inline

Set wether eigen vectors should be calculated.

void TBTK::Solver::ArnoldiIterator::setCentralValue ( double  centralValue)
inline

Set shift.

void TBTK::Solver::ArnoldiIterator::setMaxIterations ( int  maxIterations)
inline

Set maimum number of iterations in the implicitly restarted Arnoldi algorithm.

void TBTK::Solver::ArnoldiIterator::setMode ( Mode  mode)
inline

Set mode of operation.

void TBTK::Solver::ArnoldiIterator::setNumEigenValues ( int  numEigenValues)
inline

Get mode of operation. Set the number of eigenvalues to calculate.

void TBTK::Solver::ArnoldiIterator::setNumLanczosVectors ( int  numLanczosVectors)
inline

Set the number of Lanczos vectors to use. (Dimension of the Krylov space).

void TBTK::Solver::ArnoldiIterator::setTolerance ( double  tolerance)
inline

Set the accpeted tolerance.


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