QNANO
Hartree_Fock.h
1 #ifndef QNANO_NEW_HARTREE_FOCK_DEFINED_H
2 #define QNANO_NEW_HARTREE_FOCK_DEFINED_H
3 
4 #include "tools/Tensor2.h"
5 #include "manybody/Manybody_Hamiltonian.h"
6 
7 
8 class Hartree_Fock: public virtual Sparse_Matrix_Generator, public virtual Organize_Blocks_Single{
9 public:
10 
12 
13  Tensor2 dense_e;
14  Tensor2 dense_h;
15  Tensor2 Veff_e;
16  Tensor2 Veff_h;
17  bool current_e;
18 
19 
20  int get_rank_e()const{return Hmb.hilbert->get_rank_e();}
21  int get_rank_h()const{return Hmb.hilbert->get_rank_h();}
22  int get_nr_e()const{return Hmb.hilbert->get_nr_e();}
23  int get_nr_h()const{return Hmb.hilbert->get_nr_h();}
24 
25  void update_Veff_e();
26  void update_Veff_h();
27  void switch_to_solve_e();
28  void switch_to_solve_h();
29  double correction_e();
30  double correction_h();
31 
32  double calculate_total_energy()const;
33 
34  void setup(Parameter_Map &param_map);
35 
36  virtual void get_Matrix_row_block( std::vector< col_val > & col_val_vec, const int atom_index);
37 
38 
39 
40  Hartree_Fock(){
41  }
42  Hartree_Fock(Parameter_Map &param_map){
43  setup(param_map);
44  }
45 };
46 
47 #endif
Definition: Organize_Blocks.h:42
Definition: Parameter_Map.h:12
Definition: Hartree_Fock.h:8
Definition: Sparse_Matrix_Generator.h:22
virtual void get_Matrix_row_block(std::vector< col_val > &col_val_vec, const int atom_index)
Number of blocks.
Definition: Hartree_Fock.cc:146
int get_rank_e() const
nr of electron/hole states
Definition: Manybody_Hilbert_Space.h:14
Definition: Manybody_Hamiltonian.h:14