Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 "sortField.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 
46 {
47  private:
48 
49  int m_Nk;
50  int m_Np;
52  double m_Enorm_eigen;
53  double m_Vthreshold;
54 
57 
58  public:
59 
61  : Eigensolver(), m_fopr(fopr), m_sort(sort) {}
62 
63  void set_parameters(const Parameters& params);
64  void set_parameters(int Nk, int Np, int Niter_eigen, double Enorm_eigen,
65  double Vthreshold);
66 
67  void solve(std::valarray<double>& TDa, std::valarray<Field>& vk,
68  int& Nsbt, int& Nconv, const Field& b);
69 
70  private:
71 
72  void step(int Nm, int k,
73  std::valarray<double>& TDa,
74  std::valarray<double>& TDb,
75  std::valarray<Field>& vk, Field& f);
76 
77  void qrtrf(std::valarray<double>& TDa, std::valarray<double>& TDb,
78  int Nk, int Nm, std::valarray<double>& Qt,
79  double Dsh, int kmin, int kmax);
80 
81  void tqri(std::valarray<double>& TDa, std::valarray<double>& TDb,
82  int Nk, int Nm, std::valarray<double>& Qt);
83 
84  void setUnit_Qt(int Nm, std::valarray<double>& Qt);
85 
86  void schmidt_orthogonalization(Field& w, std::valarray<Field>& vk, int k);
87 };
88 #endif