Go to the documentation of this file.
14 #ifndef AEIGENSOLVER_IRARNOLDI_INCLUDED
15 #define AEIGENSOLVER_IRARNOLDI_INCLUDED
35 template<
typename FIELD,
typename FOPR>
60 std::vector<complex_t>
m_Qt;
62 std::vector<complex_t>
m_Ht;
64 std::vector<complex_t>
m_Yt;
68 std::vector<FIELD>
m_B;
88 double Enorm_eigen,
double Vthreshold);
90 int Nk,
int Np,
int Niter_eigen,
91 double Enorm_eigen,
double Vthreshold);
95 void solve(std::vector<complex_t>& TDa, std::vector<FIELD>& vk,
96 int& Nsbt,
int& Nconv,
const FIELD& b);
100 void step(
int Nm,
int k,
101 std::vector<FIELD>& vk, FIELD& f);
105 std::vector<complex_t>& TDa,
106 std::vector<FIELD>& vk,
110 void qrtrf(std::vector<complex_t>& Ht,
111 int Nk,
int Nm, std::vector<complex_t>& Qt,
116 void tqri(std::vector<complex_t>& Ht,
int k1,
117 int Nk,
int Nm, std::vector<complex_t>& Qt,
int& nconv);
119 void setUnit_Qt(
int Nm, std::vector<complex_t>& Qt);
121 void schmidt(
int Nk, std::vector<FIELD>& vk);
127 void check_Qt(
const int Nk,
const int Nm,
128 std::vector<complex_t>& Qt,
129 std::vector<complex_t>& Ht,
130 std::vector<complex_t>& At);
133 std::vector<complex_t>& St,
137 void mult_Qt(std::vector<complex_t>& Yt,
138 std::vector<complex_t>& Qt,
139 std::vector<complex_t>& Xt,
143 std::vector<complex_t>& TDa,
144 std::vector<complex_t>& Xt,
148 std::vector<complex_t>& Qt,
150 std::vector<FIELD>& vk,
int Nk);
152 void reunit_Qt(std::vector<complex_t>& Qt,
int Nk);
167 static bool register_factory()
real_t m_Vthreshold
given as an absolute value
ComplexTraits< real_t >::complex_t complex_t
Common parameter class: provides parameters as singleton.
AEigensolver_IRArnoldi(FOPR *fopr, const Parameters ¶ms)
void reconst_Ht(std::vector< complex_t > &Ht, std::vector< complex_t > &Qt, complex_t &beta, std::vector< FIELD > &vk, int Nk)
std::vector< complex_t > m_Ht
Hessenberg matrix.
void solve(std::vector< complex_t > &TDa, std::vector< FIELD > &vk, int &Nsbt, int &Nconv, const FIELD &b)
complex version of solve.
void get_parameters(Parameters ¶ms) const
Sorter< complex_t > * m_sorter
void set_parameters(const Parameters ¶ms)
void qrtrf(std::vector< complex_t > &Ht, int Nk, int Nm, std::vector< complex_t > &Qt, complex_t Dsh, int kmin, int kmax)
void check_eigen_Ht(std::vector< complex_t > &Ht, std::vector< complex_t > &TDa, std::vector< complex_t > &Xt, int km, int Nm)
void tqri(std::vector< complex_t > &Ht, int k1, int Nk, int Nm, std::vector< complex_t > &Qt, int &nconv)
Bridge::VerboseLevel m_vl
void shift_wilkinson(complex_t &kappa, const complex_t a, const complex_t b, const complex_t c, const complex_t d)
void reunit_Qt(std::vector< complex_t > &Qt, int Nk)
AEigensolver_IRArnoldi(FOPR *fopr)
void check_Qt(const int Nk, const int Nm, std::vector< complex_t > &Qt, std::vector< complex_t > &Ht, std::vector< complex_t > &At)
~AEigensolver_IRArnoldi()
std::vector< int > m_Iconv
void step(int Nm, int k, std::vector< FIELD > &vk, FIELD &f)
static const std::string class_name
std::vector< complex_t > m_Yt
std::vector< complex_t > m_Ht2
temporary Hessenberg matrix
std::vector< complex_t > m_Qt
std::vector< complex_t > m_TDa2
void deflation(int k1, int k2, int Kdis, std::vector< complex_t > &TDa, std::vector< FIELD > &vk, complex_t &beta)
deflation of converged eigenvectors.
ComplexTraits< double >::complex_t complex_t
void schmidt(int Nk, std::vector< FIELD > &vk)
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.
void setUnit_Qt(int Nm, std::vector< complex_t > &Qt)
Eigenvalue solver with Implicitly Restarted Arnoldi algorithm.
Eigensolver class for abstract base class of eigen solvers.