Bridge++  Version 1.4.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 (int Nk, int Np, int Niter_eigen, double Enorm_eigen, double Vthreshold)
 
void set_parameters (const std::string &sort_type, int Nk, int Np, int Niter_eigen, double Enorm_eigen, 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 (Bridge::VerboseLevel vl)
 

Static Public Attributes

static const std::string class_name = "Eigensolver_IRLanczos"
 

Private Member Functions

void step (int Nm, 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, int Nk, int Nm, std::vector< double > &Qt, double Dsh, int kmin, int kmax)
 
void tqri (std::vector< double > &TDa, std::vector< double > &TDb, int Nk, int Nm, std::vector< double > &Qt)
 
void setUnit_Qt (int Nm, std::vector< double > &Qt)
 
void schmidt_orthogonalization (Field &w, std::vector< Field > &vk, 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 23 of file eigensolver_IRLanczos.cpp.

Member Function Documentation

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

Definition at line 447 of file eigensolver_IRLanczos.cpp.

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

Definition at line 363 of file eigensolver_IRLanczos.cpp.

void Eigensolver_IRLanczos::set_parameters ( const Parameters params)
virtual

Implements Eigensolver.

Definition at line 30 of file eigensolver_IRLanczos.cpp.

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

Definition at line 74 of file eigensolver_IRLanczos.cpp.

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

Definition at line 60 of file eigensolver_IRLanczos.cpp.

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

Definition at line 375 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 109 of file eigensolver_IRLanczos.cpp.

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

Definition at line 318 of file eigensolver_IRLanczos.cpp.

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

Definition at line 388 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: