Greens-code
A modular quantum transport code
hamiltonian_decorator.hpp
Go to the documentation of this file.
1 #ifndef H_DECORATOR_HEADER
2 #define H_DECORATOR_HEADER
3 
4 #include "hamiltonian.hpp"
5 #include "matrix.hpp"
6 
14 
15 public:
16 
17  Hamiltonian_Decorator() : my_m(NULL), my_pos(NULL) {};
18  ~Hamiltonian_Decorator() throw() {};
19 
20 
21 protected:
22 
23  Hamiltonian::const_ref get_H() const { return my_H;};
24  Matrix* get_m() const { return my_m;};
25  const geometry_const_Iterator* get_pos() const {return my_pos;};
26 
27 private:
28 
29  std::unique_ptr<pencil> get_pencil_() const;
30  const std::string& get_pencil_name_() const;
31 
32  void createH0(Matrix&,const geometry_const_Iterator& pos) const;
33  void createHI(Matrix&,const geometry_const_Iterator& pos) const;
34  void createHIt(Matrix&,const geometry_const_Iterator& pos) const;
35  size_t layers_() const {return my_H->layers();};
36 
37  int ny_(const geometry_const_Iterator& pos) const {return my_H->ny(pos);};
38  int ny_layer_(const geometry_const_Iterator& pos) const {return my_H->ny_layer(pos);};
39  double dx_(const geometry_const_Iterator& pos) const {return my_H->dx(pos);};
40  double dy_(const geometry_const_Iterator& pos) const {return my_H->dy(pos);};
41  double width_(const geometry_const_Iterator& pos) const {return my_H->width(pos);};
42 
43  virtual point_Positions::ref rxy_(const geometry_const_Iterator& pos) const;
44 
45  template <class T>
46  friend class custom_HD_Matrix;
47 
48  virtual void Inserting(row r, column c, complex v) const;
49  virtual void Adding(row r, column c, complex v) const;
50 
51  virtual complex Get(row r, column c) const;
52 
53  virtual void prae_create_H0() const= 0;
54  virtual void post_create_H0() const= 0;
55  virtual void prae_create_HI() const= 0;
56  virtual void post_create_HI() const= 0;
57  virtual void prae_create_HIt() const = 0;
58  virtual void post_create_HIt() const = 0;
59 
60  void init();
61  virtual void init_Decorator() = 0;
62 
63  Hamiltonian::ref my_H;
64  mutable Matrix* my_m;
65  mutable const geometry_const_Iterator* my_pos;
66 
67 };
68 
70 
71 public:
72 
73  simple_Hamiltonian_Decorator() : my_m(NULL) {};
74  ~simple_Hamiltonian_Decorator() throw() {};
75 
76  int lead_system_handler() const {return get_H()->lead_system_handler();};
77 
78 protected:
79 
80  simple_Hamiltonian::const_ref get_H() const { return my_H;};
81  Matrix* get_m() const { return my_m;};
82 
83 private:
84 
85  bool do_generalized_() const { return my_H->do_generalized();}
86 
87  std::unique_ptr<pencil> get_pencil_() const;
88  const std::string& get_pencil_name_() const;
89 
90  void createperiodicH0(Matrix&) const;
91  void createperiodicHI(Matrix&) const;
92 
93  size_t layers_() const {return my_H->layers();};
94 
95  int ny_layer_sh_(size_t i) const { return my_H->ny_layer(i); }
96  double dx_sh_() const {return my_H->dx();};
97  double dy_sh_() const {return my_H->dy();};
98  double width_sh_() const {return my_H->width();};
99 
100  virtual point_Positions::ref rxy_sh_() const;
101 
102  template <class T>
103  friend class custom_HD_Matrix;
104 
105  virtual void Inserting(row r, column c, complex v) const;
106  virtual void Adding(row r, column c, complex v) const;
107 
108  virtual complex Get(row r, column c) const;
109 
110  virtual void prae_create_H0() const= 0;
111  virtual void post_create_H0() const= 0;
112  virtual void prae_create_HI() const= 0;
113  virtual void post_create_HI() const= 0;
114 
115  void init_H_params();
116  void init_ny_dependent_H_params();
117 
118  virtual void init_Decorator() = 0;
119  virtual void init_ny_dependent_Decorator() = 0;
120 
121  simple_Hamiltonian::ref my_H;
122  mutable Matrix* my_m;
123 
124 };
125 
126 #endif
The abstract base class for any Hamiltonian.
Definition: hamiltonian.hpp:44
Definition: iterators.hpp:13
int lead_system_handler() const
1=Tight binding, 2 = graphene - for modebasis
Definition: hamiltonian_decorator.hpp:76
Definition: hamiltonian_decorator.hpp:69
Definition: defect_decorator.cpp:10
complex Get(row r, column c) const
Obtain an element at a given position.
Definition: matrix.hpp:96
Base Matrix class for access to 2D number grids.
Definition: matrix.hpp:82
Definition: hamiltonian_decorator.hpp:13
The abstract base class for any periodic Hamiltonian.
Definition: hamiltonian.hpp:131
Definitions of abstract Hamiltonian base class.