QNANO
Eigenvector_Printer_SLEPc.h
1 #ifndef QNANO_NEW_EIGENVECTOR_PRINTER_SLEPC_DEFINED_H
2 #define QNANO_NEW_EIGENVECTOR_PRINTER_SLEPC_DEFINED_H
3 
4 #include <slepceps.h>
5 #include "tools/Eigenvector_Printer.h"
6 #include "slepc/SLEPc_Solver.h"
7 //#include "slepc/SLEPc_Kramers_Eigenvector.h"
8 
9 
11 public:
12  int MPI_rank, MPI_size;
13 
14  Mat *A;
15  EPS *eps;
16  int nrorb;
17 
20  void setup_local_orb_blocks();
21 
22  void setup(Parameter_Map &param_map);
23  void setup(){ Parameter_Map param_map; setup(param_map); }
24 
25  Eigenvector_Printer_SLEPc(Mat *A_, EPS *eps_, Organize_Blocks *org_bl) : Eigenvector_Printer(org_bl), A(A_), eps(eps_) {
26  setup();
27  }
28 
29  Eigenvector_Printer_SLEPc(SLEPc_Solver *solver, Organize_Blocks *org_bl) : Eigenvector_Printer(org_bl), A(&solver->A), eps(&solver->eps) {
30  setup();
31  }
32 /*
33  Eigenvector_Printer_SLEPc(Parameter_Map &param_map) {
34  A=NULL;
35  eps=NULL;
36  setup(param_map);
37  }
38  Eigenvector_Printer_SLEPc(){
39  A=NULL;
40  eps=NULL;
41  setup();
42  }
43 */
44  virtual ~Eigenvector_Printer_SLEPc(){}
45 
46  void check_fully_initialized() const;
47 
48  virtual int get_n_converged() const;
49  virtual double get_eigenvalue(int i) const;
50 
51 // PetscErrorCode print_SLEPc(int n_print) const;
52 
53  virtual void print_eigenvalues() const;
54  virtual void print_eigenvector(int i) const;//{ print_SLEPc(i); }
55  virtual void print_eigenvector_Kramers(int i)const;
56 
57 
59  bool has_Kramers_partner(int i)const;
60  virtual void calculate_alpha_beta_Kramers_sz( \
61  std::complex<double> &alpha, std::complex<double> &beta, int i) const;
62  virtual std::complex<double> calculate_max_phase_factor( \
63  std::complex<double> alpha, std::complex<double> beta, int i) const;
64 
65 
66 };
67 
68 
69 
70 #endif
Definition: Organize_Blocks.h:13
Definition: Parameter_Map.h:12
Definition: Eigenvector_Printer_SLEPc.h:10
Organize_Blocks_By_List local_orb_blocks
contains blocksizes for the atoms stored on the local node
Definition: Eigenvector_Printer_SLEPc.h:19
Definition: SLEPc_Solver.h:12
Definition: Organize_Blocks.h:86
bool has_Kramers_partner(int i) const
Kramers part:
Definition: Eigenvector_Printer_SLEPc.cc:66
Definition: Eigenvector_Printer.h:8
virtual void calculate_alpha_beta_Kramers_sz(std::complex< double > &alpha, std::complex< double > &beta, int i) const
Definition: Eigenvector_Printer_SLEPc.cc:127