QNANO
Manybody_Hilbert_Space.h
1 #ifndef QNANO_NEW_MANYBODY_HILBERT_SPACE_DEFINED_H
2 #define QNANO_NEW_MANYBODY_HILBERT_SPACE_DEFINED_H
3 
4 #include "tools/Parameter_Map.h"
5 #include "manybody/Fermion_Double_Index.h"
6 #include "tools/Size_Provider.h"
7 
9 public:
10  int rank_e, rank_h;
11  int nr_e, nr_h;
12 
13 public:
14  inline int get_rank_e()const{return rank_e;}
15  inline int get_rank_h()const{return rank_h;}
16  inline int get_nr_e()const{return nr_e;}
17  inline int get_nr_h()const{return nr_h;}
18  //virtual size_t size()const=0;
19 
20  virtual void resize(int rk_e, int rk_h, int n_e, int n_h){
21  rank_e=rk_e; rank_h=rk_h; nr_e=n_e; nr_h=n_h;
22  }
23  virtual void setup(Parameter_Map &param_map){
24  rank_e=param_map.get_as_double("rank_e",0);
25  rank_h=param_map.get_as_double("rank_h",0);
26  nr_e=param_map.get_as_double("nr_e",0);
27  nr_h=param_map.get_as_double("nr_h",0);
28  }
29 
30  virtual int get_index(const Fermion_Double_Index & fi)const=0;
31  virtual Fermion_Double_Index get_Fermion_Double_Index(int index)const=0;
32  static std::string print_index(size_t line_counter, void* spi_ctx);
33 
34 
35  virtual Manybody_Hilbert_Space* clone()const =0;
38  setup(param_map);
39  }
40  virtual ~Manybody_Hilbert_Space(){}
41 
43  virtual bool is_Full_Hilbert_Space() const;
44 };
45 
46 #endif
Definition: Size_Provider.h:11
Definition: Parameter_Map.h:12
virtual bool is_Full_Hilbert_Space() const
indicates if Instance is the full Hilbert space with all states defined by rank_e/h and nr_e/h ...
Definition: Manybody_Hilbert_Space.cc:9
Definition: Manybody_Hilbert_Space.h:8
Definition: Fermion_Double_Index.h:14
int get_rank_e() const
nr of electron/hole states
Definition: Manybody_Hilbert_Space.h:14
int nr_e
nr of electrons/holes
Definition: Manybody_Hilbert_Space.h:11