Bridge++
Ver. 2.0.2
|
Eigenvalue solver with Implicitly Restarted Arnoldi algorithm. More...
#include <aeigensolver_IRArnoldi.h>
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 ¶ms) | |
~AEigensolver_IRArnoldi () | |
void | set_parameters (const Parameters ¶ms) |
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 ¶ms) 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_t > | m_TDa2 |
std::vector< complex_t > | m_Qt |
std::vector< complex_t > | m_Ht |
Hessenberg matrix. More... | |
std::vector< complex_t > | m_Ht2 |
temporary Hessenberg matrix More... | |
std::vector< complex_t > | m_Yt |
std::vector< int > | m_Iconv |
std::vector< FIELD > | m_B |
FIELD | m_f |
FIELD | m_v |
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.
typedef ComplexTraits<real_t>::complex_t AEigensolver_IRArnoldi< FIELD, FOPR >::complex_t |
Definition at line 40 of file aeigensolver_IRArnoldi.h.
typedef FIELD::real_t AEigensolver_IRArnoldi< FIELD, FOPR >::real_t |
Definition at line 39 of file aeigensolver_IRArnoldi.h.
|
inline |
Definition at line 73 of file aeigensolver_IRArnoldi.h.
|
inline |
Definition at line 77 of file aeigensolver_IRArnoldi.h.
AEigensolver_IRArnoldi< FIELD, FOPR >::~AEigensolver_IRArnoldi |
Definition at line 31 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 939 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 797 of file aeigensolver_IRArnoldi-tmpl.h.
const std::string AEigensolver_IRArnoldi< AField< double, QXS >, AFopr< AField< double, QXS > > >::class_name |
Definition at line 23 of file aeigensolver_IRArnoldi.cpp.
const std::string AEigensolver_IRArnoldi< Field, Fopr >::class_name |
Definition at line 26 of file eigensolver_IRArnoldi.cpp.
const std::string AEigensolver_IRArnoldi< AField< float, QXS >, AFopr< AField< float, QXS > > >::class_name |
Definition at line 43 of file aeigensolver_IRArnoldi.cpp.
|
private |
deflation of converged eigenvectors.
Definition at line 510 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 885 of file aeigensolver_IRArnoldi-tmpl.h.
|
virtual |
Implements AEigensolver< FIELD, FOPR >.
Definition at line 74 of file aeigensolver_IRArnoldi-tmpl.h.
|
inlineprivate |
Definition at line 154 of file aeigensolver_IRArnoldi.h.
|
private |
Yt = Qt * Xt.
Definition at line 920 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 685 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 1007 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 972 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 582 of file aeigensolver_IRArnoldi-tmpl.h.
|
virtual |
Implements AEigensolver< FIELD, FOPR >.
Definition at line 39 of file aeigensolver_IRArnoldi-tmpl.h.
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.
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.
|
private |
Definition at line 600 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 842 of file aeigensolver_IRArnoldi-tmpl.h.
|
virtual |
complex version of solve.
Reimplemented from AEigensolver< FIELD, FOPR >.
Definition at line 170 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 545 of file aeigensolver_IRArnoldi-tmpl.h.
|
private |
Definition at line 615 of file aeigensolver_IRArnoldi-tmpl.h.
|
static |
Definition at line 42 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 68 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 51 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 69 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 56 of file aeigensolver_IRArnoldi.h.
|
private |
Hessenberg matrix.
Definition at line 62 of file aeigensolver_IRArnoldi.h.
|
private |
temporary Hessenberg matrix
Definition at line 63 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 66 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 50 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 47 of file aeigensolver_IRArnoldi.h.
|
private |
Nm = Nk + Np.
Definition at line 49 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 48 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 60 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 54 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 57 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 59 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 70 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 45 of file aeigensolver_IRArnoldi.h.
|
private |
given as an absolute value
Definition at line 52 of file aeigensolver_IRArnoldi.h.
|
private |
Definition at line 64 of file aeigensolver_IRArnoldi.h.