1 #ifndef TOPOLOGIC_INSULATOR_HPP 2 #define TOPOLOGIC_INSULATOR_HPP 30 pencil::ref get_pencil_()
const;
31 const std::string& get_pencil_name_()
const;
33 double dx_sh_()
const;
34 double dy_sh_()
const;
35 double width_sh_()
const;
36 point_Positions::ref rxy_sh_()
const;
38 size_t layers_()
const {
return 2;}
39 int ny_layer_sh_(
size_t)
const {
return ny()/2;}
40 void createperiodicH0(
Matrix&)
const;
41 void createperiodicHI(
Matrix&)
const;
43 static const double hbar;
47 double alpha,beta,gamma,U;
49 double prevent_degeneracy;
51 const char* name()
const {
return "Topological_insulator";}
54 void init_ny_dependent_H_params(){};
69 double deltay() {
return dy; }
71 pencil::ref get_pencil_()
const;
72 const std::string& get_pencil_name_()
const;
74 double dx_sh_()
const;
75 double dy_sh_()
const;
76 double width_sh_()
const;
77 point_Positions::ref rxy_sh_()
const;
79 size_t layers_()
const {
return 4;};
80 int ny_layer_sh_(
size_t)
const {
return ny()/4;};
83 void createperiodicH0(
Matrix&)
const;
84 void createperiodicHI(
Matrix&)
const;
85 static const double hbar;
91 double alpha,beta,gamma,U;
93 double spin_degeneracy;
94 double gh_norm, ge_norm, g_parallel;
97 const char* name()
const {
return "Topological_insulator_bothspins";}
99 void init_H_params() ;
100 void init_ny_dependent_H_params(){};
109 pencil::ref get_pencil_()
const;
110 const std::string& get_pencil_name_()
const;
112 double dx_sh_()
const;
113 double dy_sh_()
const;
114 double width_sh_()
const;
115 point_Positions::ref rxy_sh_()
const;
117 size_t layers_()
const {
return 4;};
118 int ny_layer_sh_(
size_t)
const {
return ny()/4;};
121 void createperiodicH0(
Matrix&)
const;
122 void createperiodicHI(
Matrix&)
const;
123 static const double hbar;
124 static const double q;
129 double alpha,beta,gamma,U;
130 double leftlead_off,ny_lead,ny_cyl;
134 double force_leftlead_off,force_rightlead_off,force_ny_lead;
135 double spin_degeneracy;
136 double gh_norm, ge_norm, g_parallel, delta;
140 const char* name()
const {
return "Topological_insulator_bothspins_vectorpot";}
142 void init_H_params();
143 void init_ny_dependent_H_params(){};
154 pencil::ref get_pencil_()
const;
155 const std::string& get_pencil_name_()
const;
157 double dx_sh_()
const;
158 double dy_sh_()
const;
159 double width_sh_()
const;
160 point_Positions::ref rxy_sh_()
const;
162 size_t layers_()
const {
return 4;};
163 int ny_layer_sh_(
size_t)
const {
return ny()/4;};
166 void createperiodicH0(
Matrix&)
const;
167 void createperiodicHI(
Matrix&)
const;
168 static const double hbar;
169 static const double q;
170 static const double BohrMagneton;
176 double alpha,beta,gamma,U;
177 double leftlead_off,ny_lead,ny_cyl;
179 double Ax(
int i,
int j)
const;
180 double Ay(
int i,
int j)
const;
181 double force_leftlead_off,force_rightlead_off,force_ny_lead;
185 const char* name()
const {
return "Topological_insulator_bothspins_vectorpot1";}
187 void init_H_params();
188 void init_ny_dependent_H_params(){};
192 explicit pencil_TI(
int number_of_layers): layer_number(number_of_layers){};
194 static const std::string& name() {
return name_;};
197 void update_at_slice()
const {};
199 void init_params(
const loadable_Object::const_ref& );
202 bool should_draw(
int point_layer,
203 int drawing_layer)
const;
205 size_t number_of_drawing_layers()
const;
208 double range_x()
const {
return dx;};
209 double range_y()
const {
return dy;};
210 complex get_value(
const complex v,
const double d_x,
const double d_y,
const size_t pos)
const {
212 return std::max(
dy-fabs(d_y),0.) * std::max(
dx-fabs(d_x),0.)* d_dxdy *d_dxdy * abs(v) * abs(v);
222 static const std::string name_;
235 mutable point_Positions::ref
rxy;
240 const char* name()
const {
return "general_cylindrical_Magnetic";};
242 void init_Decorator();
244 void prae_create_H0()
const;
245 void post_create_H0()
const;
246 void prae_create_HI()
const;
247 void post_create_HI()
const;
248 void prae_create_HIt()
const;
249 void post_create_HIt()
const;
251 void prae_create()
const;
253 virtual void Inserting(
row r,
column c, complex v)
const;
254 virtual void Adding(
row r,
column c, complex v)
const;
Definition: topologic_insulator.hpp:191
Definition: topologic_insulator.hpp:103
Definition: iterators.hpp:13
Wrap contained geometry together with periodic boundary conditions.
Definition: complicated_rectangle.hpp:101
double dy() const
vertical distance when going from one slice to the next, usually zero.
Definition: hamiltonian.hpp:169
Definition: topologic_insulator.hpp:148
Definition of abstract base class Hamiltonian_Decorator and simple_Hamiltonian_Decorator.
Single-spin Hamiltonian describing a topological insulator in an effective 2-band Kane model Paramete...
Definition: topologic_insulator.hpp:24
Base Matrix class for access to 2D number grids.
Definition: matrix.hpp:82
Definition: topologic_insulator.hpp:225
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
size_t ny() const
Number of total transverse points at given position.
Definition: hamiltonian.hpp:141
Definition: hamiltonian_decorator.hpp:13
Extended description of a Topological_insulator explicitly including both spin-parts Parameters: same...
Definition: topologic_insulator.hpp:64
The abstract base class for any periodic Hamiltonian.
Definition: hamiltonian.hpp:131
Definitions of abstract Hamiltonian base class.