Bridge++  Ver. 1.2.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  public:
48  static const std::string class_name;
49 
50  private:
51 
52  int m_Nk;
53  int m_Np;
55  double m_Enorm_eigen;
56  double m_Vthreshold;
57 
60 
61  public:
62 
64  : Eigensolver(), m_fopr(fopr), m_sort(sort) {}
65 
66  void set_parameters(const Parameters& params);
67  void set_parameters(int Nk, int Np, int Niter_eigen, double Enorm_eigen,
68  double Vthreshold);
69 
70  void solve(std::valarray<double>& TDa, std::valarray<Field>& vk,
71  int& Nsbt, int& Nconv, const Field& b);
72 
73  private:
74 
75  void step(int Nm, int k,
76  std::valarray<double>& TDa,
77  std::valarray<double>& TDb,
78  std::valarray<Field>& vk, Field& f);
79 
80  void qrtrf(std::valarray<double>& TDa, std::valarray<double>& TDb,
81  int Nk, int Nm, std::valarray<double>& Qt,
82  double Dsh, int kmin, int kmax);
83 
84  void tqri(std::valarray<double>& TDa, std::valarray<double>& TDb,
85  int Nk, int Nm, std::valarray<double>& Qt);
86 
87  void setUnit_Qt(int Nm, std::valarray<double>& Qt);
88 
89  void schmidt_orthogonalization(Field& w, std::valarray<Field>& vk, int k);
90 };
91 #endif
Eigenvalue solver with Implicitly Restarted Lanczos algorithm.
BridgeIO vout
Definition: bridgeIO.cpp:207
void schmidt_orthogonalization(Field &w, std::valarray< Field > &vk, int k)
Container of Field-type object.
Definition: field.h:37
Class for parameters.
Definition: parameters.h:40
static const std::string class_name
void setUnit_Qt(int Nm, std::valarray< double > &Qt)
Eigensolver_IRLanczos(Fopr *fopr, SortField *sort)
void set_parameters(const Parameters &params)
void solve(std::valarray< double > &TDa, std::valarray< Field > &vk, int &Nsbt, int &Nconv, const Field &b)
Eigensolver class for abstract base class of eigen solvers.
Definition: eigensolver.h:29
void tqri(std::valarray< double > &TDa, std::valarray< double > &TDb, int Nk, int Nm, std::valarray< double > &Qt)
Base class for sorting pair instances (value,field).
Definition: sortField.h:34
Base class of fermion operator family.
Definition: fopr.h:39
void qrtrf(std::valarray< double > &TDa, std::valarray< double > &TDb, int Nk, int Nm, std::valarray< double > &Qt, double Dsh, int kmin, int kmax)
void step(int Nm, int k, std::valarray< double > &TDa, std::valarray< double > &TDb, std::valarray< Field > &vk, Field &f)