Bridge++  Version 1.5.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Eigensolver_IRLanczos Class Reference

Eigenvalue solver with Implicitly Restarted Lanczos algorithm. More...

#include <eigensolver_IRLanczos.h>

Inheritance diagram for Eigensolver_IRLanczos:
Eigensolver

Public Member Functions

 Eigensolver_IRLanczos (Fopr *fopr)
 
 Eigensolver_IRLanczos (unique_ptr< Fopr > &fopr)
 
 ~Eigensolver_IRLanczos ()
 
void set_parameters (const Parameters &params)
 
void set_parameters (const int Nk, const int Np, const int Niter_eigen, const double Enorm_eigen, const double Vthreshold)
 
void set_parameters (const std::string &sort_type, const int Nk, const int Np, const int Niter_eigen, const double Enorm_eigen, const double Vthreshold)
 
void solve (std::vector< double > &TDa, std::vector< Field > &vk, int &Nsbt, int &Nconv, const Field &b)
 
- Public Member Functions inherited from Eigensolver
 Eigensolver ()
 
virtual ~Eigensolver ()
 
void set_parameter_verboselevel (const Bridge::VerboseLevel vl)
 

Static Public Attributes

static const std::string class_name = "Eigensolver_IRLanczos"
 

Private Member Functions

void step (const int Nm, const int k, std::vector< double > &TDa, std::vector< double > &TDb, std::vector< Field > &vk, Field &f)
 
void qrtrf (std::vector< double > &TDa, std::vector< double > &TDb, const int Nk, const int Nm, std::vector< double > &Qt, const double Dsh, const int kmin, const int kmax)
 
void tqri (std::vector< double > &TDa, std::vector< double > &TDb, const int Nk, const int Nm, std::vector< double > &Qt)
 
void setUnit_Qt (const int Nm, std::vector< double > &Qt)
 
void schmidt_orthogonalization (Field &w, const std::vector< Field > &vk, const int k)
 

Private Attributes

int m_Nk
 
int m_Np
 
int m_Niter_eigen
 
double m_Enorm_eigen
 
double m_Vthreshold
 
Foprm_fopr
 
Sorterm_sorter
 

Additional Inherited Members

- Protected Attributes inherited from Eigensolver
Bridge::VerboseLevel m_vl
 

Detailed Description

Eigenvalue solver with Implicitly Restarted Lanczos algorithm.

This class determines eigenvalues and eigenvectors for a given fermion operator. Low- or high-lying eigenmodes are determined by chaning SortField class object. 28 Dec 2011 H.Matsufuru YAML is implemented. [14 Nov 2012 Y.Namekawa] unique_ptr is introduced to avoid memory leaks [21 Mar 2015 Y.Namekawa]

Definition at line 40 of file eigensolver_IRLanczos.h.

Constructor & Destructor Documentation

Eigensolver_IRLanczos::Eigensolver_IRLanczos ( Fopr fopr)
inline

Definition at line 57 of file eigensolver_IRLanczos.h.

Eigensolver_IRLanczos::Eigensolver_IRLanczos ( unique_ptr< Fopr > &  fopr)
inline

Definition at line 60 of file eigensolver_IRLanczos.h.

Eigensolver_IRLanczos::~Eigensolver_IRLanczos ( )

Definition at line 19 of file eigensolver_IRLanczos.cpp.

Member Function Documentation

void Eigensolver_IRLanczos::qrtrf ( std::vector< double > &  TDa,
std::vector< double > &  TDb,
const int  Nk,
const int  Nm,
std::vector< double > &  Qt,
const double  Dsh,
const int  kmin,
const int  kmax 
)
private

Definition at line 446 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::schmidt_orthogonalization ( Field w,
const std::vector< Field > &  vk,
const int  k 
)
private

Definition at line 362 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::set_parameters ( const Parameters params)
virtual

Implements Eigensolver.

Definition at line 26 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::set_parameters ( const int  Nk,
const int  Np,
const int  Niter_eigen,
const double  Enorm_eigen,
const double  Vthreshold 
)

Definition at line 70 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::set_parameters ( const std::string &  sort_type,
const int  Nk,
const int  Np,
const int  Niter_eigen,
const double  Enorm_eigen,
const double  Vthreshold 
)

Definition at line 56 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::setUnit_Qt ( const int  Nm,
std::vector< double > &  Qt 
)
private

Definition at line 374 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::solve ( std::vector< double > &  TDa,
std::vector< Field > &  vk,
int &  Nsbt,
int &  Nconv,
const Field b 
)
virtual

Implements Eigensolver.

Definition at line 105 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::step ( const int  Nm,
const int  k,
std::vector< double > &  TDa,
std::vector< double > &  TDb,
std::vector< Field > &  vk,
Field f 
)
private

Definition at line 315 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::tqri ( std::vector< double > &  TDa,
std::vector< double > &  TDb,
const int  Nk,
const int  Nm,
std::vector< double > &  Qt 
)
private

Definition at line 387 of file eigensolver_IRLanczos.cpp.

Member Data Documentation

const std::string Eigensolver_IRLanczos::class_name = "Eigensolver_IRLanczos"
static

Definition at line 43 of file eigensolver_IRLanczos.h.

double Eigensolver_IRLanczos::m_Enorm_eigen
private

Definition at line 50 of file eigensolver_IRLanczos.h.

Fopr* Eigensolver_IRLanczos::m_fopr
private

Definition at line 53 of file eigensolver_IRLanczos.h.

int Eigensolver_IRLanczos::m_Niter_eigen
private

Definition at line 49 of file eigensolver_IRLanczos.h.

int Eigensolver_IRLanczos::m_Nk
private

Definition at line 47 of file eigensolver_IRLanczos.h.

int Eigensolver_IRLanczos::m_Np
private

Definition at line 48 of file eigensolver_IRLanczos.h.

Sorter* Eigensolver_IRLanczos::m_sorter
private

Definition at line 54 of file eigensolver_IRLanczos.h.

double Eigensolver_IRLanczos::m_Vthreshold
private

Definition at line 51 of file eigensolver_IRLanczos.h.


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