2 % Copyright (C) 2018 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 Class to create the Hamiltonian of one unit cell in a translational invariant lead made of Triangle lattice structure.
22 %> @brief Class to create the Hamiltonian of one unit cell in a translational invariant lead made of Triangle lattice structure.
27 methods (Access =
public, Static =
true)
28 %% Triangle_Hamiltonians
29 %> @brief Creates
Hamiltonians related to triangular lattice structure
30 %> @image html lattice_triangle.jpg
31 %> @image latex lattice_triangle.jpg
32 %> @
param lead_param An instance of structure #
Lattice_Triangle (or its subclass) containing the physical parameters.
33 %> @
param M Number of
sites in the cross section of the lead.
34 %> @
return [1] The Hamiltonian of one slab in the ribbon.
35 %> @
return [2] The coupling between the slabs.
36 %> @
return [3] The transverse coupling between the slabs
for transverse calculations.
37 %> @
return [4] The skew coupling between unit cells in the left direction.
38 %> @
return [5] A structure
Coordinates containing the coordinates of the
sites.
39 function [H0, H1, H1_transverse, H1_skew_left, cCoordinates] = Triangle_Hamiltonians( lead_param, M )
41 % check the structure containing the physical parameters
42 supClasses = superclasses(lead_param);
43 if sum( strcmp( supClasses,
'Lattice_Triangle' ) ) == 0
44 error([
'EQuUs:Lattices:Triangle_Lead_Hamiltonians:TriangleLattice_Lead_Hamiltonians'],
'Invalid type of the input parameter');
48 error([
'EQuUs:Triangle_Lead_Hamiltonians:TriangleLattice_Lead_Hamiltonians'],
'The input parameter M is empty')
51 epsilon = lead_param.epsilon;
52 vargamma = lead_param.vargamma;
54 H0 = sparse( 1:M, 1:M, epsilon, M, M) + ... on-site terms
55 sparse( 2:M, 1:M-1, vargamma, M, M) + ... hopping term
56 sparse( 1:M-1, 2:M, vargamma, M, M); ... hopping term
58 H1 = sparse( 1:M, 1:M, vargamma, M, M) + ... horizontal hopping terms
59 sparse( 1:M-1, 2:M, vargamma, M, M);
61 % creating coordinates
63 cCoordinates.LatticeConstant = 1;
64 cCoordinates.a = [1; 0];
65 cCoordinates.b = [-0.5; sqrt(3)/2 ]*M;
67 cCoordinates.x = cCoordinates.b(1)*(1:M);
68 cCoordinates.y = cCoordinates.b(2)*(1:M);
71 H1_transverse = sparse( M, 1, vargamma, M, M);
73 % skew coupling in the left direction
74 H1_skew_left = sparse( M, 1, vargamma, M, M);
79 end % end static methods
Class to create the Hamiltonian of one unit cell in a translational invariant lead made of Triangle l...
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.
Class containing physical parameters of the triangle lattice.
Structure param contains data structures describing the physical parameters of the scattering center ...
Structure sites contains data to identify the individual sites in a matrix.
Structure containing the coordinates and other quantum number identifiers of the sites in the Hamilto...
function structures(name)