Bridge++  Ver. 1.3.x
eigensolver_IRLanczos.h
Go to the documentation of this file.
1 
14 #ifndef EIGENSOLVER_IRLANCZOS_INCLUDED
15 #define EIGENSOLVER_IRLANCZOS_INCLUDED
16 
17 #include "eigensolver.h"
18 #include "fopr.h"
19 #include "sorter.h"
20 #include "bridge_complex.h"
21 
22 #include "bridgeIO.h"
23 using Bridge::vout;
24 
25 //- parameters class
27 {
28  public:
30 };
31 //- end
32 
34 
48 {
49  public:
50  static const std::string class_name;
51 
52  private:
53 
54  int m_Nk;
55  int m_Np;
57  double m_Enorm_eigen;
58  double m_Vthreshold;
59 
62 
63  public:
65  : Eigensolver(), m_fopr(fopr), m_sorter(0) {}
66 
68  : Eigensolver(), m_fopr(fopr.get()), m_sorter(0) {}
69 
70 
71  void set_parameters(const Parameters& params);
72  void set_parameters(int Nk, int Np, int Niter_eigen, double Enorm_eigen,
73  double Vthreshold);
74  void set_parameters(const std::string& sort_type,
75  int Nk, int Np, int Niter_eigen, double Enorm_eigen,
76  double Vthreshold);
77 
78  void solve(std::vector<double>& TDa, std::vector<Field>& vk,
79  int& Nsbt, int& Nconv, const Field& b);
80 
81  private:
82 
83  void step(int Nm, int k,
84  std::vector<double>& TDa,
85  std::vector<double>& TDb,
86  std::vector<Field>& vk, Field& f);
87 
88  void qrtrf(std::vector<double>& TDa, std::vector<double>& TDb,
89  int Nk, int Nm, std::vector<double>& Qt,
90  double Dsh, int kmin, int kmax);
91 
92  void tqri(std::vector<double>& TDa, std::vector<double>& TDb,
93  int Nk, int Nm, std::vector<double>& Qt);
94 
95  void setUnit_Qt(int Nm, std::vector<double>& Qt);
96 
97  void schmidt_orthogonalization(Field& w, std::vector<Field>& vk, int k);
98 };
99 #endif
void qrtrf(std::vector< double > &TDa, std::vector< double > &TDb, int Nk, int Nm, std::vector< double > &Qt, double Dsh, int kmin, int kmax)
Eigenvalue solver with Implicitly Restarted Lanczos algorithm.
BridgeIO vout
Definition: bridgeIO.cpp:278
Definition: sorter.h:38
Container of Field-type object.
Definition: field.h:39
void solve(std::vector< double > &TDa, std::vector< Field > &vk, int &Nsbt, int &Nconv, const Field &b)
void tqri(std::vector< double > &TDa, std::vector< double > &TDb, int Nk, int Nm, std::vector< double > &Qt)
Class for parameters.
Definition: parameters.h:38
void setUnit_Qt(int Nm, std::vector< double > &Qt)
static const std::string class_name
void set_parameters(const Parameters &params)
Eigensolver_IRLanczos(unique_ptr< Fopr > &fopr)
void step(int Nm, int k, std::vector< double > &TDa, std::vector< double > &TDb, std::vector< Field > &vk, Field &f)
void schmidt_orthogonalization(Field &w, std::vector< Field > &vk, int k)
Eigensolver class for abstract base class of eigen solvers.
Definition: eigensolver.h:28
Base class of fermion operator family.
Definition: fopr.h:49