QNANO
Slater_Koster_From_TB_Hopping_Parameter.h
1 #ifndef QNANO_NEW_SLATER_KOSTER_FROM_TB_HOPPING_PARAMETER
2 #define QNANO_NEW_SLATER_KOSTER_FROM_TB_HOPPING_PARAMETER
3 
4 #include "orbitals/Select_Orbitals_List.h"
5 #include "orbitals/Slater_Koster.h"
6 #include "tightbinding/TB_Hopping_Parameter_List.h"
7 
8 
11 public:
12  typedef double (*fct_type) (const TB_Hopping_Parameter *, double, double, double, double);
13  typedef double (*fct_type_noHarrison) (const TB_Hopping_Parameter *, double, double, double);
14 
15  static double s_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
16  static double s_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
17 
18 // s-p terms:
19  static double s_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
20  static double s_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
21 
22  static double s_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
23  static double s_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
24 
25  static double s_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
26  static double s_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
27 
28 //p-s terms
29  static double px_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
30  static double px_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
31 
32  static double py_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
33  static double py_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
34 
35  static double pz_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
36  static double pz_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
37 
38 //sstar-s/p terms:
39  static double sstar_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
40  static double sstar_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
41 
42  static double s_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
43  static double s_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
44 
45  static double sstar_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
46  static double sstar_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
47 
48  static double sstar_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
49  static double sstar_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
50 
51  static double sstar_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
52  static double sstar_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
53 
54  static double sstar_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
55  static double sstar_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
56 
57  static double px_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
58  static double px_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
59 
60  static double py_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
61  static double py_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
62 
63  static double pz_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
64  static double pz_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
65 
66 //p-p terms
67  static double px_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
68  static double px_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
69 
70  static double px_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
71  static double px_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
72 
73  static double px_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
74  static double px_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
75 
76  static double py_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
77  static double py_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
78 
79  static double py_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
80  static double py_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
81 
82  static double py_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
83  static double py_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
84 
85  static double pz_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
86  static double pz_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
87 
88  static double pz_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
89  static double pz_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
90 
91  static double pz_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
92  static double pz_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
93 
94 // dxy:
95  static double s_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
96  static double s_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
97 
98  static double sstar_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
99  static double sstar_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
100 
101  static double dxy_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
102  static double dxy_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
103 
104  static double dxy_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
105  static double dxy_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
106 
107  static double px_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
108  static double px_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
109 
110  static double py_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
111  static double py_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
112 
113  static double pz_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
114  static double pz_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
115 
116  static double dxy_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
117  static double dxy_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
118 
119  static double dxy_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
120  static double dxy_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
121 
122  static double dxy_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
123  static double dxy_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
124 
125 // dyz:
126  static double s_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
127  static double s_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
128 
129  static double sstar_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
130  static double sstar_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
131 
132  static double dyz_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
133  static double dyz_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
134 
135  static double dyz_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
136  static double dyz_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
137 
138  static double px_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
139  static double px_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
140 
141  static double py_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
142  static double py_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
143 
144  static double pz_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
145  static double pz_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
146 
147  static double dyz_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
148  static double dyz_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
149 
150  static double dyz_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
151  static double dyz_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
152 
153  static double dyz_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
154  static double dyz_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
155 
156 //dxz:
157  static double s_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
158  static double s_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
159 
160  static double sstar_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
161  static double sstar_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
162 
163  static double dxz_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
164  static double dxz_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
165 
166  static double dxz_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
167  static double dxz_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
168 
169  static double px_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
170  static double px_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
171 
172  static double py_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
173  static double py_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
174 
175  static double pz_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
176  static double pz_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
177 
178  static double dxz_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
179  static double dxz_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
180 
181  static double dxz_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
182  static double dxz_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
183 
184  static double dxz_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
185  static double dxz_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
186 
187 //dx2y2:
188  static double s_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
189  static double s_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
190 
191  static double sstar_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
192  static double sstar_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
193 
194  static double dx2y2_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
195  static double dx2y2_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
196 
197  static double dx2y2_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
198  static double dx2y2_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
199 
200  static double px_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
201  static double px_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
202 
203  static double py_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
204  static double py_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
205 
206  static double pz_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
207  static double pz_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
208 
209  static double dx2y2_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
210  static double dx2y2_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
211 
212  static double dx2y2_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
213  static double dx2y2_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
214 
215  static double dx2y2_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
216  static double dx2y2_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
217 
218 //dz2:
219  static double s_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
220  static double s_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
221 
222  static double sstar_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
223  static double sstar_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
224 
225  static double dz2_s_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
226  static double dz2_s(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
227 
228  static double dz2_sstar_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
229  static double dz2_sstar(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
230 
231  static double px_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
232  static double px_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
233 
234  static double py_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
235  static double py_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
236 
237  static double pz_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
238  static double pz_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
239 
240  static double dz2_px_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
241  static double dz2_px(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
242 
243  static double dz2_py_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
244  static double dz2_py(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
245 
246  static double dz2_pz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
247  static double dz2_pz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
248 
249 //d-d diag:
250  static double dxy_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
251  static double dxy_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
252 
253  static double dyz_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
254  static double dyz_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
255 
256  static double dxz_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
257  static double dxz_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
258 
259  static double dx2y2_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
260  static double dx2y2_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
261 
262  static double dz2_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
263  static double dz2_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
264 
265 //d-d offdiags:
266  static double dxy_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
267  static double dxy_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
268 
269  static double dxy_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
270  static double dxy_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
271 
272  static double dxy_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
273  static double dxy_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
274 
275  static double dxy_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
276  static double dxy_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
277 
278 //
279  static double dyz_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
280  static double dyz_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
281 
282  static double dyz_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
283  static double dyz_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
284 
285  static double dyz_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
286  static double dyz_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
287 
288  static double dyz_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
289  static double dyz_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
290 
291 //
292  static double dxz_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
293  static double dxz_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
294 
295  static double dxz_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
296  static double dxz_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
297 
298  static double dxz_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
299  static double dxz_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
300 
301  static double dxz_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
302  static double dxz_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
303 
304 //
305  static double dx2y2_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
306  static double dx2y2_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
307 
308  static double dx2y2_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
309  static double dx2y2_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
310 
311  static double dx2y2_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
312  static double dx2y2_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
313 
314  static double dx2y2_dz2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
315  static double dx2y2_dz2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
316 
317 //
318  static double dz2_dxy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
319  static double dz2_dxy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
320 
321  static double dz2_dyz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
322  static double dz2_dyz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
323 
324  static double dz2_dxz_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
325  static double dz2_dxz(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
326 
327  static double dz2_dx2y2_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
328  static double dz2_dx2y2(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
329 
330  static double dummy(const TB_Hopping_Parameter * par_typ, double L, double M, double N, double d0overd);
331  static double dummy_noHarrison(const TB_Hopping_Parameter * par_typ, double L, double M, double N);
332 
333 
334 
335  static const fct_type hoppings[20][20];
336  static fct_type get_hopping(size_t o0, size_t o1);
337 
338  static const fct_type_noHarrison hoppings_noHarrison[20][20];
339  static fct_type_noHarrison get_hopping_noHarrison(size_t o0, size_t o1);
340 
341 
342 
343 };
344 
345 #endif
Definition: TB_Hopping_Parameter.h:11
Associate Orbitals to Slater-Koster matrix elements.
Definition: Slater_Koster_From_TB_Hopping_Parameter.h:10