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

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

#include <aeigensolver_IRArnoldi.h>

Inheritance diagram for AEigensolver_IRArnoldi< 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_IRArnoldi (FOPR *fopr)
 
 AEigensolver_IRArnoldi (FOPR *fopr, const Parameters &params)
 
 ~AEigensolver_IRArnoldi ()
 
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< 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 ()
 
virtual void solve (std::vector< real_t > &TDa, std::vector< FIELD > &vk, int &Nsbt, int &Nconv, const FIELD &b)
 

Static Public Attributes

static const std::string class_name = "AEigensolver_IRArnoldi"
 

Private Member Functions

void step (int Nm, int k, std::vector< FIELD > &vk, FIELD &f)
 
void deflation (int k1, int k2, int Kdis, std::vector< complex_t > &TDa, std::vector< FIELD > &vk, complex_t &beta)
 deflation of converged eigenvectors. More...
 
void qrtrf (std::vector< complex_t > &Ht, int Nk, int Nm, std::vector< complex_t > &Qt, complex_t Dsh, int kmin, int kmax)
 
void tqri (std::vector< complex_t > &Ht, int k1, int Nk, int Nm, std::vector< complex_t > &Qt, int &nconv)
 
void setUnit_Qt (int Nm, std::vector< complex_t > &Qt)
 
void schmidt (int Nk, std::vector< FIELD > &vk)
 
void shift_wilkinson (complex_t &kappa, const complex_t a, const complex_t b, const complex_t c, const complex_t d)
 
void check_Qt (const int Nk, const int Nm, std::vector< complex_t > &Qt, std::vector< complex_t > &Ht, std::vector< complex_t > &At)
 
void eigenvector_Ht (std::vector< complex_t > &Yt, std::vector< complex_t > &St, int km, int Nm)
 
void mult_Qt (std::vector< complex_t > &Yt, std::vector< complex_t > &Qt, std::vector< complex_t > &Xt, int km, int Nm)
 Yt = Qt * Xt. More...
 
void check_eigen_Ht (std::vector< complex_t > &Ht, std::vector< complex_t > &TDa, std::vector< complex_t > &Xt, int km, int Nm)
 
void reconst_Ht (std::vector< complex_t > &Ht, std::vector< complex_t > &Qt, complex_t &beta, std::vector< FIELD > &vk, int Nk)
 
void reunit_Qt (std::vector< complex_t > &Qt, int Nk)
 
int index (int i, int j)
 

Private Attributes

Bridge::VerboseLevel m_vl
 
int m_Nk
 
int m_Np
 
int m_Nm
 Nm = Nk + Np. More...
 
int m_Niter_eigen
 
real_t m_Enorm_eigen
 
real_t m_Vthreshold
 given as an absolute value More...
 
std::string m_sort_type
 
FOPR * m_fopr
 
Sorter< complex_t > * m_sorter
 
std::vector< complex_tm_TDa2
 
std::vector< complex_tm_Qt
 
std::vector< complex_tm_Ht
 Hessenberg matrix. More...
 
std::vector< complex_tm_Ht2
 temporary Hessenberg matrix More...
 
std::vector< complex_tm_Yt
 
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_IRArnoldi< FIELD, FOPR >

Eigenvalue solver with Implicitly Restarted Arnoldi algorithm.

This template class determines eigenvalues and eigenvectors for a given non-hermitian fermion operator. [24 Feb 2020 H.Matsufuru]

Definition at line 36 of file aeigensolver_IRArnoldi.h.

Member Typedef Documentation

◆ complex_t

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

Definition at line 40 of file aeigensolver_IRArnoldi.h.

◆ real_t

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

Definition at line 39 of file aeigensolver_IRArnoldi.h.

Constructor & Destructor Documentation

◆ AEigensolver_IRArnoldi() [1/2]

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

Definition at line 73 of file aeigensolver_IRArnoldi.h.

◆ AEigensolver_IRArnoldi() [2/2]

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

Definition at line 77 of file aeigensolver_IRArnoldi.h.

◆ ~AEigensolver_IRArnoldi()

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

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

Member Function Documentation

◆ check_eigen_Ht()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::check_eigen_Ht ( std::vector< complex_t > &  Ht,
std::vector< complex_t > &  TDa,
std::vector< complex_t > &  Xt,
int  km,
int  Nm 
)
private

Definition at line 939 of file aeigensolver_IRArnoldi-tmpl.h.

◆ check_Qt()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::check_Qt ( const int  Nk,
const int  Nm,
std::vector< complex_t > &  Qt,
std::vector< complex_t > &  Ht,
std::vector< complex_t > &  At 
)
private

Definition at line 797 of file aeigensolver_IRArnoldi-tmpl.h.

◆ class_name() [1/3]

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

Definition at line 23 of file aeigensolver_IRArnoldi.cpp.

◆ class_name() [2/3]

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

Definition at line 26 of file eigensolver_IRArnoldi.cpp.

◆ class_name() [3/3]

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

Definition at line 43 of file aeigensolver_IRArnoldi.cpp.

◆ deflation()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::deflation ( int  k1,
int  k2,
int  Kdis,
std::vector< complex_t > &  TDa,
std::vector< FIELD > &  vk,
complex_t beta 
)
private

deflation of converged eigenvectors.

Definition at line 510 of file aeigensolver_IRArnoldi-tmpl.h.

◆ eigenvector_Ht()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::eigenvector_Ht ( std::vector< complex_t > &  Yt,
std::vector< complex_t > &  St,
int  km,
int  Nm 
)
private

Definition at line 885 of file aeigensolver_IRArnoldi-tmpl.h.

◆ get_parameters()

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

Implements AEigensolver< FIELD, FOPR >.

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

◆ index()

template<typename FIELD , typename FOPR >
int AEigensolver_IRArnoldi< FIELD, FOPR >::index ( int  i,
int  j 
)
inlineprivate

Definition at line 154 of file aeigensolver_IRArnoldi.h.

◆ mult_Qt()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::mult_Qt ( std::vector< complex_t > &  Yt,
std::vector< complex_t > &  Qt,
std::vector< complex_t > &  Xt,
int  km,
int  Nm 
)
private

Yt = Qt * Xt.

Definition at line 920 of file aeigensolver_IRArnoldi-tmpl.h.

◆ qrtrf()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::qrtrf ( std::vector< complex_t > &  Ht,
int  Nk,
int  Nm,
std::vector< complex_t > &  Qt,
complex_t  Dsh,
int  kmin,
int  kmax 
)
private

Definition at line 685 of file aeigensolver_IRArnoldi-tmpl.h.

◆ reconst_Ht()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::reconst_Ht ( std::vector< complex_t > &  Ht,
std::vector< complex_t > &  Qt,
complex_t beta,
std::vector< FIELD > &  vk,
int  Nk 
)
private

Definition at line 1007 of file aeigensolver_IRArnoldi-tmpl.h.

◆ reunit_Qt()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::reunit_Qt ( std::vector< complex_t > &  Qt,
int  Nk 
)
private

Definition at line 972 of file aeigensolver_IRArnoldi-tmpl.h.

◆ schmidt()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::schmidt ( int  Nk,
std::vector< FIELD > &  vk 
)
private

Definition at line 582 of file aeigensolver_IRArnoldi-tmpl.h.

◆ set_parameters() [1/3]

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

Implements AEigensolver< FIELD, FOPR >.

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

◆ set_parameters() [2/3]

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< 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_IRArnoldi-tmpl.h.

◆ set_parameters() [3/3]

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

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

◆ setUnit_Qt()

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

Definition at line 600 of file aeigensolver_IRArnoldi-tmpl.h.

◆ shift_wilkinson()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::shift_wilkinson ( complex_t kappa,
const complex_t  a,
const complex_t  b,
const complex_t  c,
const complex_t  d 
)
private

Definition at line 842 of file aeigensolver_IRArnoldi-tmpl.h.

◆ solve()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< 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 170 of file aeigensolver_IRArnoldi-tmpl.h.

◆ step()

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

Definition at line 545 of file aeigensolver_IRArnoldi-tmpl.h.

◆ tqri()

template<typename FIELD , typename FOPR >
void AEigensolver_IRArnoldi< FIELD, FOPR >::tqri ( std::vector< complex_t > &  Ht,
int  k1,
int  Nk,
int  Nm,
std::vector< complex_t > &  Qt,
int &  nconv 
)
private

Definition at line 615 of file aeigensolver_IRArnoldi-tmpl.h.

Member Data Documentation

◆ class_name

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

Definition at line 42 of file aeigensolver_IRArnoldi.h.

◆ m_B

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

Definition at line 68 of file aeigensolver_IRArnoldi.h.

◆ m_Enorm_eigen

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

Definition at line 51 of file aeigensolver_IRArnoldi.h.

◆ m_f

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

Definition at line 69 of file aeigensolver_IRArnoldi.h.

◆ m_fopr

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

Definition at line 56 of file aeigensolver_IRArnoldi.h.

◆ m_Ht

template<typename FIELD , typename FOPR >
std::vector<complex_t> AEigensolver_IRArnoldi< FIELD, FOPR >::m_Ht
private

Hessenberg matrix.

Definition at line 62 of file aeigensolver_IRArnoldi.h.

◆ m_Ht2

template<typename FIELD , typename FOPR >
std::vector<complex_t> AEigensolver_IRArnoldi< FIELD, FOPR >::m_Ht2
private

temporary Hessenberg matrix

Definition at line 63 of file aeigensolver_IRArnoldi.h.

◆ m_Iconv

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

Definition at line 66 of file aeigensolver_IRArnoldi.h.

◆ m_Niter_eigen

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

Definition at line 50 of file aeigensolver_IRArnoldi.h.

◆ m_Nk

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

Definition at line 47 of file aeigensolver_IRArnoldi.h.

◆ m_Nm

template<typename FIELD , typename FOPR >
int AEigensolver_IRArnoldi< FIELD, FOPR >::m_Nm
private

Nm = Nk + Np.

Definition at line 49 of file aeigensolver_IRArnoldi.h.

◆ m_Np

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

Definition at line 48 of file aeigensolver_IRArnoldi.h.

◆ m_Qt

template<typename FIELD , typename FOPR >
std::vector<complex_t> AEigensolver_IRArnoldi< FIELD, FOPR >::m_Qt
private

Definition at line 60 of file aeigensolver_IRArnoldi.h.

◆ m_sort_type

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

Definition at line 54 of file aeigensolver_IRArnoldi.h.

◆ m_sorter

template<typename FIELD , typename FOPR >
Sorter<complex_t>* AEigensolver_IRArnoldi< FIELD, FOPR >::m_sorter
private

Definition at line 57 of file aeigensolver_IRArnoldi.h.

◆ m_TDa2

template<typename FIELD , typename FOPR >
std::vector<complex_t> AEigensolver_IRArnoldi< FIELD, FOPR >::m_TDa2
private

Definition at line 59 of file aeigensolver_IRArnoldi.h.

◆ m_v

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

Definition at line 70 of file aeigensolver_IRArnoldi.h.

◆ m_vl

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

Definition at line 45 of file aeigensolver_IRArnoldi.h.

◆ m_Vthreshold

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

given as an absolute value

Definition at line 52 of file aeigensolver_IRArnoldi.h.

◆ m_Yt

template<typename FIELD , typename FOPR >
std::vector<complex_t> AEigensolver_IRArnoldi< FIELD, FOPR >::m_Yt
private

Definition at line 64 of file aeigensolver_IRArnoldi.h.


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