Bridge++  Ver. 2.0.2
AEigensolver_IRLanczos< FIELD, FOPR > Class Template Reference

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

#include <aeigensolver_IRLanczos.h>

Inheritance diagram for AEigensolver_IRLanczos< FIELD, FOPR >:
AEigensolver< FIELD, FOPR >

Public Types

typedef FIELD::real_t real_t
 
typedef ComplexTraits< real_t >::complex_t complex_t
 
- Public Types inherited from AEigensolver< FIELD, FOPR >
typedef FIELD::real_t real_t
 
typedef ComplexTraits< real_t >::complex_t complex_t
 

Public Member Functions

 AEigensolver_IRLanczos (FOPR *fopr)
 
 AEigensolver_IRLanczos (FOPR *fopr, const Parameters &params)
 
 ~AEigensolver_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 get_parameters (Parameters &params) const
 
void solve (std::vector< real_t > &TDa, std::vector< FIELD > &vk, int &Nsbt, int &Nconv, const FIELD &b)
 
void solve (std::vector< complex_t > &TDa, std::vector< FIELD > &vk, int &Nsbt, int &Nconv, const FIELD &b)
 complex version of solve. More...
 
const std::string class_name
 
const std::string class_name
 
const std::string class_name
 
- Public Member Functions inherited from AEigensolver< FIELD, FOPR >
 AEigensolver ()
 
virtual ~AEigensolver ()
 

Static Public Attributes

static const std::string class_name = "AEigensolver_IRLanczos"
 

Private Member Functions

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

Private Attributes

Bridge::VerboseLevel m_vl
 
int m_Nk
 
int m_Np
 
int m_Niter_eigen
 
real_t m_Enorm_eigen
 
real_t m_Vthreshold
 
std::string m_sort_type
 
FOPR * m_fopr
 
Sorter< real_t > * m_sorter
 
std::vector< real_tm_TDb
 
std::vector< real_tm_TDa2
 
std::vector< real_tm_TDb2
 
std::vector< real_tm_Qt
 
std::vector< int > m_Iconv
 
std::vector< FIELD > m_B
 
FIELD m_f
 
FIELD m_v
 

Detailed Description

template<typename FIELD, typename FOPR>
class AEigensolver_IRLanczos< FIELD, FOPR >

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] Refactored as a template class. [29 May 2018 H.Matsufuru]

Definition at line 44 of file aeigensolver_IRLanczos.h.

Member Typedef Documentation

◆ complex_t

template<typename FIELD , typename FOPR >
typedef ComplexTraits<real_t>::complex_t AEigensolver_IRLanczos< FIELD, FOPR >::complex_t

Definition at line 48 of file aeigensolver_IRLanczos.h.

◆ real_t

template<typename FIELD , typename FOPR >
typedef FIELD::real_t AEigensolver_IRLanczos< FIELD, FOPR >::real_t

Definition at line 47 of file aeigensolver_IRLanczos.h.

Constructor & Destructor Documentation

◆ AEigensolver_IRLanczos() [1/2]

template<typename FIELD , typename FOPR >
AEigensolver_IRLanczos< FIELD, FOPR >::AEigensolver_IRLanczos ( FOPR *  fopr)
inline

Definition at line 78 of file aeigensolver_IRLanczos.h.

◆ AEigensolver_IRLanczos() [2/2]

template<typename FIELD , typename FOPR >
AEigensolver_IRLanczos< FIELD, FOPR >::AEigensolver_IRLanczos ( FOPR *  fopr,
const Parameters params 
)
inline

Definition at line 81 of file aeigensolver_IRLanczos.h.

◆ ~AEigensolver_IRLanczos()

template<typename FIELD , typename FOPR >
AEigensolver_IRLanczos< FIELD, FOPR >::~AEigensolver_IRLanczos

Definition at line 31 of file aeigensolver_IRLanczos-tmpl.h.

Member Function Documentation

◆ class_name() [1/3]

const std::string AEigensolver_IRLanczos< AField< double, QXS >, AFopr< AField< double, QXS > > >::class_name

Definition at line 24 of file aeigensolver_IRLanczos.cpp.

◆ class_name() [2/3]

const std::string AEigensolver_IRLanczos< Field, Fopr >::class_name

Definition at line 26 of file eigensolver_IRLanczos.cpp.

◆ class_name() [3/3]

const std::string AEigensolver_IRLanczos< AField< float, QXS >, AFopr< AField< float, QXS > > >::class_name

Definition at line 43 of file aeigensolver_IRLanczos.cpp.

◆ get_parameters()

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::get_parameters ( Parameters params) const
virtual

Implements AEigensolver< FIELD, FOPR >.

Definition at line 74 of file aeigensolver_IRLanczos-tmpl.h.

◆ qrtrf()

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::qrtrf ( std::vector< real_t > &  TDa,
std::vector< real_t > &  TDb,
int  Nk,
int  Nm,
std::vector< real_t > &  Qt,
real_t  Dsh,
int  kmin,
int  kmax 
)
private

Definition at line 596 of file aeigensolver_IRLanczos-tmpl.h.

◆ schmidt_orthogonalization()

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::schmidt_orthogonalization ( FIELD &  w,
std::vector< FIELD > &  vk,
int  k 
)
private

Definition at line 501 of file aeigensolver_IRLanczos-tmpl.h.

◆ set_parameters() [1/3]

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::set_parameters ( const Parameters params)
virtual

Implements AEigensolver< FIELD, FOPR >.

Definition at line 39 of file aeigensolver_IRLanczos-tmpl.h.

◆ set_parameters() [2/3]

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::set_parameters ( const std::string &  sort_type,
int  Nk,
int  Np,
int  Niter_eigen,
double  Enorm_eigen,
double  Vthreshold 
)

Definition at line 89 of file aeigensolver_IRLanczos-tmpl.h.

◆ set_parameters() [3/3]

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::set_parameters ( int  Nk,
int  Np,
int  Niter_eigen,
double  Enorm_eigen,
double  Vthreshold 
)

Definition at line 107 of file aeigensolver_IRLanczos-tmpl.h.

◆ setUnit_Qt()

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::setUnit_Qt ( int  Nm,
std::vector< real_t > &  Qt 
)
private

Definition at line 520 of file aeigensolver_IRLanczos-tmpl.h.

◆ solve() [1/2]

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::solve ( std::vector< complex_t > &  TDa,
std::vector< FIELD > &  vk,
int &  Nsbt,
int &  Nconv,
const FIELD &  b 
)
virtual

complex version of solve.

Reimplemented from AEigensolver< FIELD, FOPR >.

Definition at line 165 of file aeigensolver_IRLanczos-tmpl.h.

◆ solve() [2/2]

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::solve ( std::vector< real_t > &  TDa,
std::vector< FIELD > &  vk,
int &  Nsbt,
int &  Nconv,
const FIELD &  b 
)
virtual

Reimplemented from AEigensolver< FIELD, FOPR >.

Definition at line 183 of file aeigensolver_IRLanczos-tmpl.h.

◆ step()

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::step ( int  Nm,
int  k,
std::vector< real_t > &  TDa,
std::vector< real_t > &  TDb,
std::vector< FIELD > &  vk,
FIELD &  f 
)
private

Definition at line 440 of file aeigensolver_IRLanczos-tmpl.h.

◆ tqri()

template<typename FIELD , typename FOPR >
void AEigensolver_IRLanczos< FIELD, FOPR >::tqri ( std::vector< real_t > &  TDa,
std::vector< real_t > &  TDb,
int  Nk,
int  Nm,
std::vector< real_t > &  Qt,
int &  nconv 
)
private

Definition at line 535 of file aeigensolver_IRLanczos-tmpl.h.

Member Data Documentation

◆ class_name

template<typename FIELD , typename FOPR >
const std::string AEigensolver_IRLanczos< FIELD, FOPR >::class_name = "AEigensolver_IRLanczos"
static

Definition at line 50 of file aeigensolver_IRLanczos.h.

◆ m_B

template<typename FIELD , typename FOPR >
std::vector<FIELD> AEigensolver_IRLanczos< FIELD, FOPR >::m_B
private

Definition at line 73 of file aeigensolver_IRLanczos.h.

◆ m_Enorm_eigen

template<typename FIELD , typename FOPR >
real_t AEigensolver_IRLanczos< FIELD, FOPR >::m_Enorm_eigen
private

Definition at line 58 of file aeigensolver_IRLanczos.h.

◆ m_f

template<typename FIELD , typename FOPR >
FIELD AEigensolver_IRLanczos< FIELD, FOPR >::m_f
private

Definition at line 74 of file aeigensolver_IRLanczos.h.

◆ m_fopr

template<typename FIELD , typename FOPR >
FOPR* AEigensolver_IRLanczos< FIELD, FOPR >::m_fopr
private

Definition at line 63 of file aeigensolver_IRLanczos.h.

◆ m_Iconv

template<typename FIELD , typename FOPR >
std::vector<int> AEigensolver_IRLanczos< FIELD, FOPR >::m_Iconv
private

Definition at line 71 of file aeigensolver_IRLanczos.h.

◆ m_Niter_eigen

template<typename FIELD , typename FOPR >
int AEigensolver_IRLanczos< FIELD, FOPR >::m_Niter_eigen
private

Definition at line 57 of file aeigensolver_IRLanczos.h.

◆ m_Nk

template<typename FIELD , typename FOPR >
int AEigensolver_IRLanczos< FIELD, FOPR >::m_Nk
private

Definition at line 55 of file aeigensolver_IRLanczos.h.

◆ m_Np

template<typename FIELD , typename FOPR >
int AEigensolver_IRLanczos< FIELD, FOPR >::m_Np
private

Definition at line 56 of file aeigensolver_IRLanczos.h.

◆ m_Qt

template<typename FIELD , typename FOPR >
std::vector<real_t> AEigensolver_IRLanczos< FIELD, FOPR >::m_Qt
private

Definition at line 69 of file aeigensolver_IRLanczos.h.

◆ m_sort_type

template<typename FIELD , typename FOPR >
std::string AEigensolver_IRLanczos< FIELD, FOPR >::m_sort_type
private

Definition at line 61 of file aeigensolver_IRLanczos.h.

◆ m_sorter

template<typename FIELD , typename FOPR >
Sorter<real_t>* AEigensolver_IRLanczos< FIELD, FOPR >::m_sorter
private

Definition at line 64 of file aeigensolver_IRLanczos.h.

◆ m_TDa2

template<typename FIELD , typename FOPR >
std::vector<real_t> AEigensolver_IRLanczos< FIELD, FOPR >::m_TDa2
private

Definition at line 67 of file aeigensolver_IRLanczos.h.

◆ m_TDb

template<typename FIELD , typename FOPR >
std::vector<real_t> AEigensolver_IRLanczos< FIELD, FOPR >::m_TDb
private

Definition at line 66 of file aeigensolver_IRLanczos.h.

◆ m_TDb2

template<typename FIELD , typename FOPR >
std::vector<real_t> AEigensolver_IRLanczos< FIELD, FOPR >::m_TDb2
private

Definition at line 68 of file aeigensolver_IRLanczos.h.

◆ m_v

template<typename FIELD , typename FOPR >
FIELD AEigensolver_IRLanczos< FIELD, FOPR >::m_v
private

Definition at line 75 of file aeigensolver_IRLanczos.h.

◆ m_vl

template<typename FIELD , typename FOPR >
Bridge::VerboseLevel AEigensolver_IRLanczos< FIELD, FOPR >::m_vl
private

Definition at line 53 of file aeigensolver_IRLanczos.h.

◆ m_Vthreshold

template<typename FIELD , typename FOPR >
real_t AEigensolver_IRLanczos< FIELD, FOPR >::m_Vthreshold
private

Definition at line 59 of file aeigensolver_IRLanczos.h.


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