QNANO
TB_Model_Slater_Koster.h
1 #ifndef QNANO_NEW_TB_MODEL_SLATER_KOSTER_DEFINED_
2 #define QNANO_NEW_TB_MODEL_SLATER_KOSTER_DEFINED_
3 
4 #include "tightbinding/TB_Model.h"
5 #include "structure/Atom_List.h"
6 #include "structure/Neighbor_List.h"
7 #include "structure/Potential.h"
8 #include "structure/Periodic_Vecs.h"
9 #include "tightbinding/TB_Parameter_List.h"
10 #include "tightbinding/TB_Hopping_Parameter_List.h"
11 #include "orbitals/Select_Orbitals_List.h"
12 #include "tightbinding/Slater_Koster_From_TB_Parameter.h"
13 #include "tightbinding/Slater_Koster_From_TB_Hopping_Parameter.h"
14 #include "tightbinding/Surface_Passivation_Block_sp.h"
15 #include "tightbinding/Select_Diagonal_Corrections.h"
16 #include "tools/Organize_Blocks.h"
17 #include "tools/QNANO_Constants.h"
18 
20 public:
27 
28  //The set of tight-binding parameters
29  TB_Parameter_List parlist;
32 
37  //defines how individual orbitals react differently to the potential
38  std::vector<std::vector<double> > potential_scale_for_orbital;
39 
40  //For evaluation at a given wave-vector:
41  bool evaluate_at_k;
42  Vec3d kvector;
43  //Inclusion of a magnetic field
44  Vec3d B_field;
45  bool use_peierls, use_free_Zeeman;
46 
47  //next-nearest neighbors
48  bool use_nn2;
49  TB_Hopping_Parameter_List nn2_parlist;
50  Neighbor_List nn2_neilist;
51 
52 
53  //additional options: spin-orbit, passivation, strain...
54  bool without_spinorbit, passivate_sp, without_strain_correction;
55  bool passivate_graphene;
56  double graphene_passivation_factor;
57 
58  virtual void setup(Parameter_Map& param_map);
59  void setup_blocksizes();
60  void setup_potential_scale_for_orbital(Parameter_Map &param_map);
61  virtual size_t get_nr_at() const{return atlist.size();}
62 
63  double peierls_phase(const Vec3d &R1, const Vec3d &D)const;
64 
65  void add_from_Surface_Passivation_Block_sp( std::vector< col_val > & col_val_vec, double *diags, const Select_Orbitals &orbs, const Surface_Passivation_Block_sp &surface_passivation_block_sp, double avg_Surface_shift, size_t baseindex)const;
66 
67  void get_row_passivate_graphene( std::vector< col_val > & col_val_vec, const int atom_index);
68 
69  virtual void get_Matrix_row_block( std::vector< col_val > & col_val_vec, const int atom_index) ;
70 
72  }
74  setup(param_map);
75  }
76  virtual ~TB_Model_Slater_Koster(){}
77 };
78 
79 
80 
81 #endif
Definition: Periodic_Vecs.h:9
Definition: Parameter_Map.h:12
Definition: Surface_Passivation_Block_sp.h:7
Atom_List atlist
List of atoms:
Definition: TB_Model_Slater_Koster.h:22
Definition: Select_Orbitals.h:11
Class to store positions and to handle operations on 3d vectors.
Definition: Vec3d.h:9
Definition: TB_Hopping_Parameter_List.h:11
Structure to store values for the potational on each atom of a given structure.
Definition: Potential.h:8
Definition: Atom_List.h:9
virtual void setup(Parameter_Map &param_map)
Definition: TB_Model_Slater_Koster.cc:12
Neighbor_List neilist_unrelaxed
List of neighbors with unrelaxed distance vectors; use for strain correction.
Definition: TB_Model_Slater_Koster.h:26
Definition: Neighbor_List.h:12
Definition: TB_Parameter_List.h:8
Select_Orbitals_List select
Secification of how many orbitals to use on which atom.
Definition: TB_Model_Slater_Koster.h:31
void get_row_passivate_graphene(std::vector< col_val > &col_val_vec, const int atom_index)
Definition: TB_Model_Slater_Koster.cc:491
Potential potential
Potential.
Definition: TB_Model_Slater_Koster.h:36
Definition: Organize_Blocks.h:86
Periodic_Vecs periodic_vec
Vectors for periodic boundary conditions.
Definition: TB_Model_Slater_Koster.h:34
virtual void get_Matrix_row_block(std::vector< col_val > &col_val_vec, const int atom_index)
Number of blocks.
Definition: TB_Model_Slater_Koster.cc:226
Neighbor_List neilist
List of neighbors:
Definition: TB_Model_Slater_Koster.h:24
virtual size_t get_nr_at() const
How many atoms.
Definition: TB_Model_Slater_Koster.h:61
Definition: Select_Orbitals_List.h:10
Definition: TB_Model.h:38
Definition: TB_Model_Slater_Koster.h:19