QNANO
Eigenvector_Printer_Eigen.h
1 #ifndef QNANO_NEW_EIGENVECTOR_PRINTER_EIGEN_DEFINED_H
2 #define QNANO_NEW_EIGENVECTOR_PRINTER_EIGEN_DEFINED_H
3 
4 #include "tools/Eigenvector_Printer.h"
5 #include "eigen/Eigen_Diagonalize_Sparse_Matrix.h"
6 
7 
9 public:
10  Eigen::SelfAdjointEigenSolver<Eigen::MatrixXcd> *solver;
11  bool use_target;
12  double target;
13  int eps_nev;
14 
15  virtual void setup(Parameter_Map &param_map);
16 
17 
18  virtual int get_n_converged() const;
19 // virtual int get_actual_nr_print()const;
20  virtual double get_eigenvalue_original_order(int i) const;
21  virtual double get_eigenvalue(int i) const;
22 
23  int get_nth_closest_to_target(int n)const;
24  virtual void print_eigenvector(int i)const;
25  virtual void print_eigenvector_Kramers(int i)const;
26 // virtual void print_eigenvalues()const;
27 
28 
29  //Kramers part:
30  virtual bool has_Kramers_partner(int i)const;
31  virtual void calculate_alpha_beta_Kramers_sz( \
32  std::complex<double> &alpha, std::complex<double> &beta, int i) const;
33  virtual std::complex<double> calculate_max_phase_factor( \
34  std::complex<double> alpha, std::complex<double> beta, int i) const;
35 
36  //Constructors
38  Eigen::SelfAdjointEigenSolver<Eigen::MatrixXcd> *esolv, \
39  Organize_Blocks *org_bl, bool spinless=true) \
40  : Eigenvector_Printer(org_bl, spinless), solver(esolv){
41  }
42 
44  Eigen::SelfAdjointEigenSolver<Eigen::MatrixXcd> *esolv, \
45  Organize_Blocks *org_bl, bool spinless=true) \
46  : Eigenvector_Printer(org_bl, spinless), solver(esolv){
47 
48  setup(param_map);
49  }
50 
52  : Eigenvector_Printer(org_bl, spinless), solver(&solv->solver){
53  }
54 };
55 
56 #endif
Definition: Organize_Blocks.h:13
Definition: Parameter_Map.h:12
Definition: Eigen_Diagonalize_Sparse_Matrix.h:8
Definition: Eigenvector_Printer.h:8
Definition: Eigenvector_Printer_Eigen.h:8