Eötvös Quantum Utilities  v4.9.146
Providing the Horsepowers in the Quantum Realm
BiTeI_Lead_Hamiltonians.m
Go to the documentation of this file.
1 %% Eotvos Quantum Transport Utilities - BiTeI_Lead_Hamiltonians
2 % Copyright (C) 2017 Tajkov Zoltan, Peter Rakyta, Ph.D.
3 %
4 % This program is free software: you can redistribute it and/or modify
5 % it under the terms of the GNU General Public License as published by
6 % the Free Software Foundation, either version 3 of the License, or
7 % (at your option) any later version.
8 %
9 % This program is distributed in the hope that it will be useful,
10 % but WITHOUT ANY WARRANTY; without even the implied warranty of
11 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 % GNU General Public License for more details.
13 %
14 % You should have received a copy of the GNU General Public License
15 % along with this program. If not, see http://www.gnu.org/licenses/.
16 %
17 %> @addtogroup lattices Lattices
18 %> @{
19 %> @file BiTeI_Lead_Hamiltonians.m
20 %> @brief Class to create the Hamiltonian of one unit cell on a BiTeI lattice. (for details see http://onlinelibrary.wiley.com/doi/10.1002/pssc.201700215/full)
21 %> @}
22 %> @brief Class to create the Hamiltonian of one unit cell on a BiTeI lattice. (for details see http://onlinelibrary.wiley.com/doi/10.1002/pssc.201700215/full)
23 %> @Available
24 %> EQuUs v4.9 or later
25 %%
27 
28 
29 methods (Static = true)
30 %% BiTeILattice_Lead_Hamiltonians
31 %> @brief Creates Hamiltonians H_0 and H_1 for BiTeI lattice structure
32 %> @image html BiTeI.jpg
33 %> @image latex BiTeI.jpg
34 %> @param lead_param An instance of structure #Lattice_BiTeI (or its subclass) containing the physical parameters.
35 %> @param M Number of sites in the cross section of the lead.
36 %> @return [1] The Hamiltonian of one slab in the ribbon.
37 %> @return [2] The coupling between the slabs.
38 %> @return [3] The transverse coupling between the slabs for transverse calculations.
39 %> @return [4] A structure Coordinates containing the coordinates of the sites.
40 function [H0, H1, H1_transverse, coordinates] = BiTeILattice_Lead_Hamiltonians(lead_param, M )
41 %Ez a függvény arra lesz hivatott, hogy a BiTeI-gr-BiTeI rendszerben egy
42 %ribbon Hamilton mátrixait megcsinálja a transzport nyelvezetén keresztül.
43 %A mátrixoknak összesen (t1,t2,mz1,mz2,m,eps) hat paramétere van, amelyeket
44 %be kell építeni. A függvény le fogja gyártani a megfelelő vastagságú
45 %hexagonális ribbon koordinátáit és mátrixait.
46 
47  % check the structure containing the physical parameters
48  supClasses = superclasses(lead_param);
49  if sum( strcmp( supClasses, 'Lattice_BiTeI' ) ) == 0
50  error(['EQuUs:Lattices:', class(obj), ':BiTeILattice_Lead_Hamiltonians'], 'Invalid type of the input parameter');
51  end
52 
53  if mod(M,6)>0
54  save('BiTeILattice_Lead_Hamiltonians.mat')
55  error(['EQuUs:Lattices:', class(obj), ':BiTeILattice_Lead_Hamiltonians'], 'M should be .....')
56  end
57 
58  H1_transverse = []; %Ez majd egyszer le lesz programozva
59  eps=lead_param.epsilon; %Beolvassuk a paramétereket.
60  t1=lead_param.vargamma1; %Beolvassuk a paramétereket.
61  t2=lead_param.vargamma2;
62  mz1=lead_param.SOintrinsic;
63  mz2=lead_param.vargamma3;
64  m=lead_param.SO_rashba_intrinsic;
65  t3=t2;
66 
67  %Most megcsináljuk az alap építőköveket, mint például a nulla mátrix, a
68  %pauli mátrixok.
69  N=zeros(2); %nulla mátrix
70  S0=[1,0;0,1];
71  S1=[0,1;1,0];
72  S2=[0,-1i;1i,0];
73  S3=[1,0;0,-1];
74 % lead_param;
75 
76 
77  %Most a Hamilton operátor alap építőkövei jönnek
78 % U=[eps*S0,N,N,N,t2*S0+1i*mz1*S3,t3*S0-1i*mz1*S3; ...
79 % N,eps*S0,N,t2*S0+1i*mz1*S3,t3*S0-1i*mz1*S3,N; ...
80 % N,N,eps*S0,t3*S0-1i*mz1*S3,N,t2*S0+1i*mz1*S3; ...
81 % N,t2*S0-1i*mz1*S3,t3*S0+1i*mz1*S3,eps*S0,N,N; ...
82 % t2*S0-1i*mz1*S3,t3*S0+1i*mz1*S3,N,N,eps*S0,N; ...
83 % t3*S0+1i*mz1*S3,N,t2*S0-1i*mz1*S3,N,N,eps*S0];
84 % Um=[N,N,N,N,sxp,-1i*m*S1; ...
85 % N,N,N,1i*m*S1,-sxm,N; ...
86 % N,N,N,-sxp,N,sxm; ...
87 % N,-1i*m*S1,sxp,N,N,N; ...
88 % -sxp,sxm,N,N,N,N; ...
89 % 1i*m*S1,N,-sxm,N,N,N];
90 % %H0-kat a T1 mátrixok építik fel!!!
91 % T2=[N,N,N,N,N,N; ...
92 % -1i*mz2*S3,N,1i*mz2*S3,N,N,t1*S0; ...
93 % N,N,N,N,N,N; ...
94 % N,N,N,N,N,1i*mz2*S3; ...
95 % N,N,N,N,N,-1i*mz2*S3; ...
96 % N,N,N,N,N,N];
97 %
98 %
99 % T1= [N,1i*mz2*S3,-1i*mz2*S3,t1*S0,N,N; ...
100 % N,N,N,N,N,N; ...
101 % N,N,N,N,N,N; ...
102 % N,N,N,N,N,N; ...
103 % N,N,N,1i*mz2*S3,N,N; ...
104 % N,N,N,-1i*mz2*S3,N,N];
105 %
106 %
107 %
108 % T12 =[N,N,-1i*mz2*S3,N,N,N; ...
109 % N,N,1i*mz2*S3,N,N,N; ...
110 % N,N,N,N,N,N; ...
111 % N,N,N,N,N,N; ...
112 % N,N,t1*S0,1i*mz2*S3,N,-1i*mz2*S3; ...
113 % N,N,N,N,N,N];
114 
115 
116  %Most újra kell kezdeni, remélhetőleg az új rendszer már jobban fog
117  %viselkedni. Elsőként megint az elemi építőköveket kell megalkotni,
118  %ezek már 24x24-es mátrixok lesznek. Akkor most álljanak itt az új
119  %mátrixok. Azért a kötések megmaradtak csak át kell őket cimkézni.
120  %Ezért most kimentem az adott kötéseket, majd ezek lesznek az elemi
121  %építőkövekben.
122 
123  %Valami baj van az inplane SOC-cal. Szerintem az, hogy nem megfelelően
124  %lettek elforgatva. Ezt most végig kell bogarászni... Egyesével...
125  r=sqrt(3)/2; %mint root, csak a rövidítések kedvéért.
126  sxp = 1i*m*(S1*1/2+r*S2);
127  sxm = -1i*m*(-S1*r+S2*1/2);
128 
129  b25=t3*S0-1i*mz1*S3 + 1i*m*(-S1*r+S2*1/2);%sxm;
130  b21=-1i*mz2*S3;
131  b23=-1i*mz2*S3-1i*mz2*S3;
132  b24=t2*S0+1i*mz1*S3+1i*m*S1;
133  b26=t1*S0;
134 
135  b52=t3*S0+1i*mz1*S3+sxm;
136  b51=t2*S0-1i*mz1*S3-sxp;
137  b54=1i*mz2*S3;
138  b53=t1*S0;
139  b56=-1i*mz2*S3-1i*mz2*S3;
140 
141  b12=1i*mz2*S3;
142  b15=t2*S0+1i*mz1*S3+sxp;
143  b14=t1*S0;
144  b13=-1i*mz2*S3-1i*mz2*S3;
145  b16=t3*S0-1i*mz1*S3-1i*m*S1;
146 
147  b45=-1i*mz2*S3;%b54'; %EZT MEG KELL BESZÉLNI. VAN, VAGY NINCS???
148  b41=t1*S0;%b14'; %EZT MEG KELL BESZÉLNI. VAN, VAGY NINCS???
149  b43=t3*S0+1i*mz1*S3+sxp;
150  b46=1i*mz2*S3;
151  b42=t2*S0-1i*mz1*S3-1i*m*S1;
152 
153  b34=t3*S0-1i*mz1*S3-sxp;
154  b36=t2*S0+1i*mz1*S3+sxm;
155  b32=1i*mz2*S3+1i*mz2*S3;%b23'; %-b23;%EZT MEG KELL BESZÉLNI. VAN, VAGY NINCS???
156  b31=1i*mz2*S3+1i*mz2*S3;%b13'; %-b13;%EZT MEG KELL BESZÉLNI. VAN, VAGY NINCS???
157  b35=t1*S0;%b53'; %-b13;%EZT MEG KELL BESZÉLNI. VAN, VAGY NINCS???
158 
159  b64=-1i*mz2*S3;
160  b65=1i*mz2*S3+1i*mz2*S3;%b56'; %-b13;%EZT MEG KELL BESZÉLNI. VAN, VAGY NINCS???
161  b61=t3*S0+1i*mz1*S3+1i*m*S1;
162  b62=t1*S0;%b26'; %-b13;%EZT MEG KELL BESZÉLNI. VAN, VAGY NINCS???
163  b63=t2*S0-1i*mz1*S3-sxm;
164 
165 
166  %U írja le az egy elemi cellában lévő atomokat.
167 
168  U=[N,b25,b21,N,N,N,N,b23,N,N,N,N; ...
169  b52,N,b51,b54,N,N,b54,b53,b56,N,N,N; ...
170  b12,b15,N,b14,b13,N,N,b13,N,b12,N,N; ...
171  N,b45,b41,N,b43,b46,N,N,b46,b42,b45,N; ...
172  N,N,b31,b34,N,b36,N,N,N,b32,N,b31; ...
173  N,N,N,b64,b63,N,N,N,N,N,b65,b61; ...
174  N,b45,N,N,N,N,N,b43,b46,N,N,N; ...
175  b32,b35,b31,N,N,N,b34,N,b36,b32,N,N; ...
176  N,b65,N,b64,N,N,b64,b63,N,b62,b65,N; ...
177  N,N,b21,b24,b23,N,N,b23,b26,N,b25,b21; ...
178  N,N,N,b54,N,b56,N,N,b56,b52,N,b51; ...
179  N,N,N,N,b13,b16,N,N,N,b12,b15,N];
180 
181 
182  U=U+eps*eye(24); %on-site energiákat külön adjuk hozzá
183 
184 
185  Tx=[N,N,N,N,N,N,N,N,N,N,N,N; ...
186  N,N,N,N,N,N,N,N,N,N,N,N; ...
187  N,N,N,N,N,N,N,N,N,N,N,N; ...
188  N,N,N,N,N,N,N,N,N,N,N,N; ...
189  N,N,N,N,N,N,N,N,N,N,N,N; ...
190  N,N,N,N,N,N,N,N,N,N,N,N; ...
191  b42,b45,N,N,N,N,N,N,N,N,N,N; ...
192  b32,N,b31,N,N,N,N,N,N,N,N,N; ...
193  N,b65,b61,b64,N,N,N,N,N,N,N,N; ...
194  N,N,b21,N,b23,N,N,N,N,N,N,N; ...
195  N,N,N,b54,b53,b56,N,N,N,N,N,N; ...
196  N,N,N,N,b13,N,N,N,N,N,N,N];
197 
198  Ty=[N,N,N,N,N,N,N,N,N,N,N,N; ...
199  N,N,N,N,N,N,N,N,N,N,N,N; ...
200  N,N,N,N,N,N,N,N,N,N,N,N; ...
201  N,N,N,N,N,N,N,N,N,N,N,N; ...
202  b31,N,N,N,N,N,N,N,N,N,N,N; ...
203  b62,b65,N,N,N,N,b64,N,N,N,N,N; ...
204  N,N,N,N,N,N,N,N,N,N,N,N; ...
205  N,N,N,N,N,N,N,N,N,N,N,N; ...
206  N,N,N,N,N,N,N,N,N,N,N,N; ...
207  N,N,N,N,N,N,N,N,N,N,N,N; ...
208  N,N,N,N,N,N,b54,N,N,N,N,N; ...
209  b12,N,N,N,N,N,b14,b13,N,N,N,N];
210 
211 
212  Txyfel=[N,N,N,N,N,N,N,N,N,N,N,N; ...
213  N,N,N,N,N,N,N,N,N,N,N,N; ...
214  N,N,N,N,N,N,N,N,N,N,N,N; ...
215  N,N,N,N,N,N,N,N,N,N,N,N; ...
216  N,N,N,N,N,N,N,N,N,N,N,N; ...
217  N,N,N,N,N,N,N,N,N,N,N,N; ...
218  N,N,N,N,N,N,N,N,N,N,N,N; ...
219  N,N,N,N,N,N,N,N,N,N,N,N; ...
220  N,N,N,N,N,N,N,N,N,N,N,N; ...
221  N,N,N,N,N,N,N,N,N,N,N,N; ...
222  N,N,N,N,N,N,N,N,N,N,N,N; ...
223  b12,N,N,N,N,N,N,N,N,N,N,N];
224 
225 
226  Txyle=[N,N,N,N,N,N,N,N,N,N,N,N; ...
227  N,N,N,N,N,N,N,N,N,N,N,N; ...
228  N,N,N,N,N,N,N,N,N,N,N,N; ...
229  N,N,N,N,N,N,N,N,N,N,N,N; ...
230  N,N,N,N,N,N,N,N,N,N,N,N; ...
231  N,N,N,N,N,b46,N,N,N,N,N,N; ...
232  N,N,N,N,N,N,N,N,N,N,N,N; ...
233  N,N,N,N,N,N,N,N,N,N,N,N; ...
234  N,N,N,N,N,N,N,N,N,N,N,N; ...
235  N,N,N,N,N,N,N,N,N,N,N,N; ...
236  N,N,N,N,N,N,N,N,N,N,N,N; ...
237  N,N,N,N,N,N,N,N,N,N,N,N];
238 
239  %Próbáljuk meg előről felépíteni? Valószínűleg egyszerűbb lenne...
240 
241  %H0-t a Ty fogja felépíteni.
242  H0=zeros(M/6*24);
243  for k = [1:M/6]
244  for l = [1:M/6] %k sor l oszlop
245  if (k == l)
246  H0((k-1)*24+1:k*24,(k-1)*24+1:k*24)=U;
247  elseif ((k-1) == l)
248  H0((k-1)*24+1:k*24,(l-1)*24+1:l*24)=Ty';
249  elseif ((k+1) == l)
250  H0((k-1)*24+1:k*24,(l-1)*24+1:l*24)=Ty;
251  end
252  end
253  end
254 
255  H1=zeros(M/6*24);
256  for k = [1:M/6]
257  for l = [1:M/6] %k sor l oszlop
258  if (k == l)
259  H1((k-1)*24+1:k*24,(k-1)*24+1:k*24)=Tx;
260  elseif ((k-1) == l)
261  H1((k-1)*24+1:k*24,(l-1)*24+1:l*24)=Txyle;
262  elseif ((k+1) == l)
263  H1((k-1)*24+1:k*24,(l-1)*24+1:l*24)=Txyfel;
264  end
265  end
266  end
267  if(any(any(H0-H0')))
268  error
269  end
270 
271  %Kellenek a koordináták is. Ez most egyszerűbb lesz. Kellenek először
272  %elemi rácsvektorok, amelyek irányában transzlációincarianca van:
273  %Ha egy síkot akarunk csinálni, ahhoz 2 vektor kell, általában csak x
274  %irányban van eltolásinvariancia, most úgy teszünk, mintha y-ban is
275  %lenne. Legyen 1 a c-c kötéstávolság. Ennek egységében dolgozunk.
276  ax=[3,0];
277  ay=[0,sqrt(3)]*3;
278 
279  %MOst akkor ide érkeznek a koordináták. Kellenek először az elemi cella
280  %atomjai, azokat fogjuk tologatni az ay-nal.
281 
282  c1=[0,sqrt(3)/2];
283  c2=[1/2,sqrt(3)];
284  c3=[0,3/2*sqrt(3)];
285  c4=[1/2,4/2*sqrt(3)];
286  c5=[0,5/2*sqrt(3)];
287  c6=[1/2,6/2*sqrt(3)];
288 
289  c7=[2,sqrt(3)/2];
290  c8=[3/2,sqrt(3)];
291  c9=[2,3/2*sqrt(3)];
292  c10=[3/2,4/2*sqrt(3)];
293  c11=[2,5/2*sqrt(3)];
294  c12=[3/2,6/2*sqrt(3)];
295 
296 
297  %Ők voltak az legkisebb építőkő elemi atomjai. MOst ezeket el kell tologatni ay-al!!
298 
299  X=zeros(1,M/6*24);
300  Y=zeros(1,M/6*24);
301  for k = [1:M/6]
302  X(1+(k-1)*24)=c1(1)+(k-1)*ay(1);
303  X(2+(k-1)*24)=c2(1)+(k-1)*ay(1);
304  X(3+(k-1)*24)=c3(1)+(k-1)*ay(1);
305  X(4+(k-1)*24)=c4(1)+(k-1)*ay(1);
306  X(5+(k-1)*24)=c5(1)+(k-1)*ay(1);
307  X(6+(k-1)*24)=c6(1)+(k-1)*ay(1);
308  X(7+(k-1)*24)=c7(1)+(k-1)*ay(1);
309  X(8+(k-1)*24)=c8(1)+(k-1)*ay(1);
310  X(9+(k-1)*24)=c9(1)+(k-1)*ay(1);
311  X(10+(k-1)*24)=c10(1)+(k-1)*ay(1);
312  X(11+(k-1)*24)=c11(1)+(k-1)*ay(1);
313  X(12+(k-1)*24)=c12(1)+(k-1)*ay(1);
314  X(13+(k-1)*24)=c1(1)+(k-1)*ay(1);
315  X(14+(k-1)*24)=c2(1)+(k-1)*ay(1);
316  X(15+(k-1)*24)=c3(1)+(k-1)*ay(1);
317  X(16+(k-1)*24)=c4(1)+(k-1)*ay(1);
318  X(17+(k-1)*24)=c5(1)+(k-1)*ay(1);
319  X(18+(k-1)*24)=c6(1)+(k-1)*ay(1);
320  X(19+(k-1)*24)=c7(1)+(k-1)*ay(1);
321  X(20+(k-1)*24)=c8(1)+(k-1)*ay(1);
322  X(21+(k-1)*24)=c9(1)+(k-1)*ay(1);
323  X(22+(k-1)*24)=c10(1)+(k-1)*ay(1);
324  X(23+(k-1)*24)=c11(1)+(k-1)*ay(1);
325  X(24+(k-1)*24)=c12(1)+(k-1)*ay(1);
326 
327  Y(1+(k-1)*24)=c1(2)+(k-1)*ay(2);
328  Y(2+(k-1)*24)=c2(2)+(k-1)*ay(2);
329  Y(3+(k-1)*24)=c3(2)+(k-1)*ay(2);
330  Y(4+(k-1)*24)=c4(2)+(k-1)*ay(2);
331  Y(5+(k-1)*24)=c5(2)+(k-1)*ay(2);
332  Y(6+(k-1)*24)=c6(2)+(k-1)*ay(2);
333  Y(7+(k-1)*24)=c7(2)+(k-1)*ay(2);
334  Y(8+(k-1)*24)=c8(2)+(k-1)*ay(2);
335  Y(9+(k-1)*24)=c9(2)+(k-1)*ay(2);
336  Y(10+(k-1)*24)=c10(2)+(k-1)*ay(2);
337  Y(11+(k-1)*24)=c11(2)+(k-1)*ay(2);
338  Y(12+(k-1)*24)=c12(2)+(k-1)*ay(2);
339  Y(13+(k-1)*24)=c1(2)+(k-1)*ay(2);
340  Y(14+(k-1)*24)=c2(2)+(k-1)*ay(2);
341  Y(15+(k-1)*24)=c3(2)+(k-1)*ay(2);
342  Y(16+(k-1)*24)=c4(2)+(k-1)*ay(2);
343  Y(17+(k-1)*24)=c5(2)+(k-1)*ay(2);
344  Y(18+(k-1)*24)=c6(2)+(k-1)*ay(2);
345  Y(19+(k-1)*24)=c7(2)+(k-1)*ay(2);
346  Y(20+(k-1)*24)=c8(2)+(k-1)*ay(2);
347  Y(21+(k-1)*24)=c9(2)+(k-1)*ay(2);
348  Y(22+(k-1)*24)=c10(2)+(k-1)*ay(2);
349  Y(23+(k-1)*24)=c11(2)+(k-1)*ay(2);
350  Y(24+(k-1)*24)=c12(2)+(k-1)*ay(2);
351  end
352  coordinates = structures('coordinates');
353  %plot(X,Y,'.'), axis equal
354  coordinates.a=ax;
355  coordinates.x=X';
356  coordinates.y=Y';
357 
358 % dim = 50
359 % ggamma = 1;
360 % H0 = sparse(1:dim/2-1, 2:dim/2, ggamma, dim, dim) + sparse(2:dim/2, 1:dim/2-1, ggamma, dim, dim) + ...
361 % sparse(dim/2+1:dim-1, dim/2+2:dim, ggamma, dim, dim) + sparse(dim/2+2:dim, dim/2+1:dim-1, ggamma, dim, dim) + ...
362 % sparse(1:dim/2, dim/2+1:dim, ggamma*0.1, dim, dim) + sparse(dim/2+1:dim, 1:dim/2, ggamma*0.1, dim, dim);
363 %
364 % H1 = sparse(dim/2, 1, ggamma, dim, dim) + sparse(dim, dim/2+1, ggamma, dim, dim);
365 % coordinates.x = zeros(dim,1);
366 % coordinates.y = zeros(dim,1);
367 
368 % createH = Hex_Lead_Hamiltonians();
369 % obj.params.vargamma = 2.97;
370 % [obj.H0,obj.H1,obj.H1_transverse,obj.coordinates] = createH.Graphene_Lead_Hamiltonians(obj.params, obj.M, 'Z', 'q', obj.q);
371 % obj.H0 = [obj.H0, obj.H1; obj.H1', obj.H0];
372 % obj.H1 = [zeros(size(obj.H1,1), size(obj.H1,2)*2); [obj.H1, zeros(size(obj.H1,1), size(obj.H1,2))]];
373 % obj.H1adj = obj.H1';
374 % obj.M = size(obj.H0,1);
375 % obj.kulso_szabfokok = [];
376 % obj.coordinates.x = zeros(size(obj.H0,1),1);
377 % obj.coordinates.y = zeros(size(obj.H0,1),1);
378 %
379 
380 H0=sparse(H0);
381 H1=sparse(H1);
382 end
383 
384 end %static methods
385 
386 
387 
388 
389 
390 
391 
392 end
function Transport(Energy, B)
Calculates the conductance at a given energy value.
Class to create the Hamiltonian of one unit cell on a BiTeI lattice.
function Hamiltonians(varargin)
Function to create the custom Hamiltonians for the 1D chain.
Structure param contains data structures describing the physical parameters of the scattering center ...
Definition: structures.m:45
Structure sites contains data to identify the individual sites in a matrix.
Definition: structures.m:187
Class containing physical parameters of the BiTeI lattice.
Definition: Lattice_BiTeI.m:26
A class to create the Hamiltonian of one unit cell in a translational invariant lead made of hexagona...
Structure containing the coordinates and other quantum number identifiers of the sites in the Hamilto...
Definition: Coordinates.m:24
function structures(name)