1 #ifndef HAMILTONIAN_CPP_H 2 #define HAMILTONIAN_CPP_H 6 #include "shared_ptr.hpp" 7 #include "exceptions.hpp" 8 #include "input_file.hpp" 47 typedef STD_TR1::shared_ptr<Hamiltonian> ref;
48 typedef STD_TR1::shared_ptr<const Hamiltonian> const_ref;
62 size_t layers()
const {
return layers_();};
83 const std::string&
pencil_name()
const {
return get_pencil_name_();};
85 STD_TR1::shared_ptr<simple_Hamiltonian> get_simple_H() {
return get_simple_H_();};
86 STD_TR1::shared_ptr<const simple_Hamiltonian> get_simple_H()
const {
return get_simple_H_();};
90 mutable STD_TR1::shared_ptr<simple_Hamiltonian> mysimple;
92 virtual std::unique_ptr<pencil> get_pencil_()
const = 0;
93 virtual const std::string& get_pencil_name_()
const = 0;
95 virtual STD_TR1::shared_ptr<const simple_Hamiltonian> get_simple_H_()
const;
96 virtual STD_TR1::shared_ptr<simple_Hamiltonian> get_simple_H_();
102 virtual size_t layers_()
const = 0;
134 typedef STD_TR1::shared_ptr<simple_Hamiltonian> ref;
135 typedef STD_TR1::shared_ptr<const simple_Hamiltonian> const_ref;
141 size_t ny()
const {
return my_ny;};
143 size_t ny_layer(
size_t layer)
const {
return ny_layer_sh_(layer);};
147 point_Positions::ref
rxy()
const{
return rxy_sh_();};
164 void set_new_ny(
int ny);
167 double dx()
const {
return dx_sh_();};
169 double dy()
const {
return dy_sh_();};
171 double width()
const {
return width_sh_();};
173 bool do_generalized()
const {
return do_generalized_();};
182 virtual void fill_basistrans_mat(
Matrix& m)
const;
183 virtual size_t get_geometry_slice_num()
const {
return 1;};
191 virtual bool do_generalized_()
const {
return false;};
193 virtual void init_H_params() = 0;
194 virtual void init_ny_dependent_H_params() = 0;
197 virtual STD_TR1::shared_ptr<const simple_Hamiltonian> get_simple_H_()
const;
198 virtual STD_TR1::shared_ptr<simple_Hamiltonian> get_simple_H_();
204 virtual double dx_sh_()
const = 0;
205 virtual double dy_sh_()
const = 0;
206 virtual double width_sh_()
const = 0;
212 virtual point_Positions::ref rxy_sh_()
const = 0;
215 const { createperiodicH0(m);};
217 const { createperiodicHI(m);};
219 const { createperiodicHIt(m);};
221 virtual void createperiodicH0(
Matrix&)
const = 0;
222 virtual void createperiodicHI(
Matrix&)
const = 0;
223 virtual void createperiodicHIt(
Matrix&)
const;
225 size_t layers_()
const;
226 virtual size_t layers_sh_()
const;
230 virtual int ny_layer_sh_(
size_t)
const;
double width() const
width of the slice at given position
Definition: hamiltonian.hpp:171
virtual int get_basistrans_size() const
rule on how to transform the hamiltonian periodic unitcell into a 90 degree rotated basis ...
Definition: hamiltonian.hpp:181
std::unique_ptr< pencil > get_pencil() const
Return one instance of a pencil used to drawing this Hamiltonian.
Definition: hamiltonian.cpp:123
int ny(const geometry_const_Iterator &pos) const
Number of total transverse points at given position.
Definition: hamiltonian.cpp:213
int ny_layer(const geometry_const_Iterator &pos) const
Number of transverse points in specific layer at given position.
Definition: hamiltonian.cpp:219
Definition: pencils.hpp:61
The abstract base class for any Hamiltonian.
Definition: hamiltonian.hpp:44
double width(const geometry_const_Iterator &pos) const
width of the slice at given position
Definition: hamiltonian.cpp:231
Definition: iterators.hpp:13
void create_HI(Matrix &m) const
fill a Matrix with the block
Definition: hamiltonian.hpp:156
size_t ny_layer(size_t layer) const
Number of transverse points in specific layer at given position.
Definition: hamiltonian.hpp:143
double dphi(const geometry_const_Iterator &pos) const
directional change when going from one slice to the next, usually zero.
Definition: hamiltonian.cpp:249
double dx(const geometry_const_Iterator &pos) const
horizontal distance between adjacent sclices
Definition: hamiltonian.cpp:237
Definition: simpleHamiltonian_visitor.hpp:25
point_Positions::ref rxy(const geometry_const_Iterator &pos) const
point_Positions of the grid-points at given position
Definition: hamiltonian.cpp:225
Abstract class that defines a geomeetry.
Definition: rectangle.hpp:31
double dy() const
vertical distance when going from one slice to the next, usually zero.
Definition: hamiltonian.hpp:169
void create_H0(Matrix &, const geometry_const_Iterator &) const
fill a Matrix with the block
Definition: hamiltonian.cpp:144
void create_HI(Matrix &, const geometry_const_Iterator &) const
fill a Matrix with the block
Definition: hamiltonian.cpp:151
void create_H0(Matrix &m) const
fill a Matrix with the block
Definition: hamiltonian.hpp:154
An abstract base class supporting xml_file_reading of input parameters.
Definition: input_file.hpp:79
double dy(const geometry_const_Iterator &pos) const
vertical distance when going from one slice to the next, usually zero.
Definition: hamiltonian.cpp:243
Base Matrix class for access to 2D number grids.
Definition: matrix.hpp:82
double dx() const
horizontal distance between adjacent sclices
Definition: hamiltonian.hpp:167
point_Positions::ref rxy() const
point_Positions of the grid-points at given position
Definition: hamiltonian.hpp:147
virtual size_t slice_num() const
number of slices per hamiltonian
Definition: hamiltonian.hpp:175
size_t ny() const
Number of total transverse points at given position.
Definition: hamiltonian.hpp:141
size_t layers() const
Number of layers of this Hamiltonian.
Definition: hamiltonian.hpp:62
virtual int lead_system_handler() const
1=Tight binding, 2 = graphene - for modebasis
Definition: hamiltonian.hpp:178
int my_ny
If my_ny is calculated and not read from the input file ("ny"), the derived class can set it initiall...
Definition: hamiltonian.hpp:183
The abstract base class for any periodic Hamiltonian.
Definition: hamiltonian.hpp:131
const std::string & pencil_name() const
name of the pencil used to drawing this type of Hamiltonian.
Definition: hamiltonian.hpp:83
void create_HIt(Matrix &s, const geometry_const_Iterator &pos) const
fill a Matrix with the block
Definition: hamiltonian.cpp:128