2 % Copyright (C) 2009-2015 Peter Rakyta, Ph.D.
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.
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.
14 % You should have received a copy of the GNU General Public License
15 % along with
this program. If not, see http:
17 %> @addtogroup lattices Lattices
20 %> @brief A
class to create the Hamiltonian of one unit cell in a translational invariant lead made of hexagonal lattice structure (graphene).
22 %> @brief A
class to create the Hamiltonian of one unit cell in a translational invariant lead made of hexagonal lattice structure (graphene).
27 methods ( Access =
public )
30 %% Graphene_Lead_Hamiltonians
31 %> @brief Creates
Hamiltonians H_0 and H_1 of silicene ribbon with zigzag/armchair edge as well as the structure conatining the coordinates of the atomic
sites.
32 %> @image html graphene.jpg
33 %> @image latex graphene.jpg
34 %> @
param lead_param An instance of structure #
Lattice_Graphene (or its subclass) containing the physical parameters.
35 %> @
param M Number of
sites in the cross section of the lead.
36 %> @
param End_Type The orientation of the lattice. Set
'A' for lattice with armchair orientation (meaning zigzag edges) or
'Z' for zizgaz orientation (meaning arm-chair edges)
37 %> @
return [1] The Hamiltonian of one slab in the ribbon.
38 %> @
return [2] The coupling between the slabs.
39 %> @
return [3] The transverse coupling between the slabs
for transverse calculations.
40 %> @
return [4] A structure
Coordinates containing the coordinates of the
sites.
41 function [H0, H1, H1_transverse, coordinates] = Graphene_Hamiltonians(obj, lead_param, M, End_Type )
43 % check the structure containing the physical parameters
44 supClasses = superclasses(lead_param);
45 if sum( strcmp( supClasses,
'Lattice_Graphene' ) ) == 0
46 error([
'EQuUs:Lattices:',
class(obj),
':Graphene_Hamiltonians'],
'Invalid type of the input parameter');
50 error([
'EQuUs:',
class(obj),
':Graphene_Hamiltonians'],
'The input parameter M is empty')
53 epsilon = lead_param.epsilon;
54 vargamma = lead_param.vargamma;
55 deltaAB = lead_param.deltaAB;
59 if strcmp(End_Type, 'A')
60 [H0,H1, H1_transverse, coordinates] = obj.Armchair_End(epsilon,vargamma,M);
61 elseif strcmp(End_Type, 'Z')
62 [H0, H1, H1_transverse, coordinates] = obj.Zigzag_End(epsilon,vargamma,M);
64 error(['EQuUs:', class(obj), ':Graphene_Hamiltonians'], 'Unrecognized
Lead type');
67 % staggered A-B potential tuned by perpendicular electric field
68 H_DeltaAB = sparse( 1:2:M, 1:2:M, deltaAB, size(H0,1), size(H0,2)) + sparse( M+2:2:2*M, M+2:2:2*M, deltaAB, size(H0,1), size(H0,2)) + ...
69 sparse( 2:2:M, 2:2:M, -deltaAB, size(H0,1), size(H0,2)) + sparse( M+1:2:2*M, M+1:2:2*M, -deltaAB, size(H0,1), size(H0,2));
74 % H0 = H0 + H1_transverse*exp(1i*q) + H1_transverse'*exp(-1i*q);
85 methods ( Access = protected )
87 %> @brief Creates
Hamiltonians H_0 and H_1 of silicene ribbon with zigzag edge as well as the structure conatining the coordinates of the atomic
sites.
88 %> @
param epsilon The onsite potential.
89 %> @
param vargamma The hopping amplitude.
90 %> @
param M Number of
sites in the cross section of the lead.
91 %> @
param q The transverse momentum quantum number.
92 %> @return [1] The Hamiltonian of one slab in the ribbon.
93 %> @return [2] The coupling between the slabs.
94 %> @return [3] The transverse coupling between the slabs for transverse calculations.
95 %> @return [4] A structure
Coordinates containing the coordinates of the
sites.
96 function [H0,H1,H1_transverse,coordinates] = Armchair_End(obj, epsilon,vargamma,M)
99 error(['EQuUs:', class(obj), ':Armchair_End'], 'The input parameter M is empty')
103 H0 = sparse( 1:2:M-1, 2:2:M, -vargamma, 2*M, 2*M) + ...
104 sparse( M+2:2:2*M-1, M+3:2:2*M, -vargamma, 2*M, 2*M) + ...
105 sparse( 1:M, M+1:2*M, -vargamma, 2*M, 2*M);
106 H0 = H0 + H0' + sparse( 1:2*M, 1:2*M, epsilon, 2*M, 2*M);
108 H1 = sparse( M+1:2*M, 1:M, -vargamma, 2*M, 2*M);
112 coordinates.a = zeros(2,1);
113 coordinates.x = zeros(2*M,1);
114 coordinates.y = zeros(2*M,1);
119 coordinates.x(1:2:M) = ((1:2:M)-1)*(deltax1+deltax2)/2; %in units rCC
120 coordinates.x(2:2:M) = ((2:2:M)-2)*(deltax1+deltax2)/2 + deltax2; %in units rCC
121 coordinates.x(M+(1:2:M)) = ((1:2:M)-1)*(deltax1+deltax2)/2 - deltax2/2; %in units rCC
122 coordinates.x(M+(2:2:M)) = ((2:2:M)-2)*(deltax1+deltax2)/2 + deltax1 - deltax2/2; %in units rCC
123 coordinates.y = [zeros(M,1); ones(M,1)*deltay]; %in units rCC
124 coordinates.a = [0; 2*deltay];% 1D lattice constant in uits of rCC
127 H1_transverse = sparse( 2*M, M+1, -vargamma, 2*M, 2*M);
128 %H1_transverse = sparse( M+1, 2*M, -vargamma, 2*M, 2*M);
129 coordinates.b = [M/2*3; 0];
138 %> @brief Creates
Hamiltonians H_0 and H_1 of silicene ribbon with armchair edge as well as the structure conatining the coordinates of the atomic
sites.
139 %> @
param epsilon The onsite potential.
140 %> @
param vargamma The hopping amplitude.
141 %> @
param M Number of
sites in the cross section of the lead.
142 %> @
param q The transverse momentum quantum number.
143 %> @
param varargin Optional parameters (https:
144 %> @return [1] The Hamiltonian of one slab in the ribbon.
145 %> @return [2] The coupling between the slabs.
146 %> @return [3] The transverse coupling between the slabs for transverse calculations.
147 %> @return [4] A structure
Coordinates containing the coordinates of the
sites.
148 function [H0, H1, H1_transverse, coordinates] = Zigzag_End(obj, epsilon,vargamma,M)
151 error(['EQuUs:', class(obj), ':Zigzag_End'], 'The input parameter M is empty')
155 coordinates.a = [0;3]; %in units rCC
157 vargamma_nnn = 0*vargamma;
158 H0nnn = sparse(1:M, 2*M+1:3*M, -vargamma_nnn, 4*M, 4*M) + sparse(1:M-1, 2*M+2:3*M, -vargamma_nnn, 4*M, 4*M) + sparse(1:M-1, 2:M, -vargamma_nnn, 4*M, 4*M) +...
159 sparse(M+1:2*M, 3*M+1:4*M, -vargamma_nnn, 4*M, 4*M) + sparse(M+2:2*M, 3*M+1:4*M-1, -vargamma_nnn, 4*M, 4*M) + sparse(M+1:2*M-1, M+2:2*M, -vargamma_nnn, 4*M, 4*M) +...
160 sparse(2*M+1:3*M-1, 2*M+2:3*M, -vargamma_nnn, 4*M, 4*M) + ...
161 sparse(3*M+1:4*M-1, 3*M+2:4*M, -vargamma_nnn, 4*M, 4*M);
163 H1nnn = sparse(3*M+1:4*M, M+1:2*M, -vargamma_nnn, 4*M, 4*M) + sparse(3*M+1:4*M-1, M+2:2*M, -vargamma_nnn, 4*M, 4*M) + ...
164 sparse(2*M+1:3*M, 1:M, -vargamma_nnn, 4*M, 4*M) + sparse(2*M+2:3*M, 1:M-1, -vargamma_nnn, 4*M, 4*M);
166 H0 = sparse(1:M, M+1:2*M, -vargamma, 4*M, 4*M) + sparse(1:M-1, M+2:2*M, -vargamma, 4*M, 4*M) + ...
167 sparse(M+1:2*M, 2*M+1:3*M, -vargamma, 4*M, 4*M) + ...
168 sparse(2*M+1:3*M, 3*M+1:4*M, -vargamma, 4*M, 4*M) + sparse(2*M+2:3*M, 3*M+1:4*M-1, -vargamma, 4*M, 4*M);
169 H0 = H0 + H0' + sparse( 1:4*M, 1:4*M, epsilon, 4*M, 4*M) + H0nnn + H0nnn';
171 H1 = sparse(3*M+1:4*M, 1:M, -vargamma, 4*M, 4*M) + H1nnn;
174 coordinates.x = zeros(4*M,1); %in units rCC
175 coordinates.y = zeros(4*M,1); %in units rCC
177 coordinates.x(1:M) = sqrt(3)*(1:M) - sqrt(3)/2; %in units rCC
178 coordinates.y(1:M) = 0; %in units rCC
180 coordinates.x(M+1:2*M) = sqrt(3)*(0:M-1); %in units rCC
181 coordinates.y(M+1:2*M) = 0.5; %in units rCC
183 coordinates.x(2*M+1:3*M) = sqrt(3)*(0:M-1); %in units rCC
184 coordinates.y(2*M+1:3*M) = 1.5; %in units rCC
186 coordinates.x(3*M+1:4*M) = sqrt(3)*(1:M) - sqrt(3)/2; %in units rCC
187 coordinates.y(3*M+1:4*M) = 2; %in units rCC
189 H1_transverse = sparse(M, M+1, -vargamma, 4*M, 4*M) + sparse(4*M, 2*M+1, -vargamma, 4*M, 4*M);
190 %H1_transverse = sparse(M+1, M, -vargamma, 4*M, 4*M) + sparse(2*M+1, 4*M, -vargamma, 4*M, 4*M);
191 coordinates.b = [sqrt(3)*M; 0];
195 end % methods protected
function Transport(Energy, B)
Calculates the conductance at a given energy value.
function Hamiltonians(varargin)
Function to create the custom Hamiltonians for the 1D chain.
A class to calculate the Green functions and self energies of a translational invariant lead The nota...
Structure param contains data structures describing the physical parameters of the scattering center ...
Class containing physical parameters of the hexagonal (graphene) lattice.
Structure sites contains data to identify the individual sites in a matrix.
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...
function structures(name)