Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

Band structure of a

simple tight-binding
model
Rishi Paresh Joshi, National Institute of Science Education and Research, Bhubaneswar

T
ight-binding models play a pivotal role eration in this report are 1-dimensional (1D)
in our understanding of condensed mat- simple wire and 2-dimensional (2D) Honey-
ter physics, providing a powerful frame- comb lattice. This report displays how easily
work for describing the electronic structure of the Python library Kwant can code for the
materials at the quantum level. These models band structure, effective mass, and density of
are particularly significant due to their ability states for both these lattices (DOS). Kwant
to capture the intricate interplay of electrons is a software package designed for simulat-
in solids, elucidating fundamental phenomena ing quantum transport in various mesoscopic
that underlie the properties of a wide range systems, including quantum wires, dots, topo-
of materials. For example, tight-binding sys- logical insulators, graphene, quantum Hall
tems are used as a model where topological systems, and superconducting structures. It
order arises, like in the famous Haldane model provides a flexible and efficient platform for
that describes the Anomalous Quantum Hall investigating these systems’ electronic and
Effect(AQHE)[1] in the honeycomb lattice of transport properties, aiding researchers in
graphene or the SSH model describing the gaining insights into the quantum behavior
electrical conductance of polyacetylene[2]. At of materials at the nanoscale[3]. This report
the heart of tight-binding models is electron can be subdivided into the band structure of
hopping between adjacent atomic orbitals, re- a simple wire, as done in [4]. Further, calcu-
flecting the quantum mechanical nature of lations for effective mass and DOS for simple
electrons and their interactions within a wire are presented here. Similarly, the entire
crys- talline lattice. This enables the Honeycomb lattice coding was done and pre-
modeling of electronic properties with sented here. We used the linear combination
remarkable accu- racy, making tight-binding of atomic orbitals (LCAO) principle to explain
models an indis- pensable tool for tight-binding in a simple 1D wire[5]. We also
researchers in materials sci- ence and gain a theoretical understanding of the tight-
condensed matter physics. The re- port binding Hamiltonian for the 2D Honeycomb
contains analytical and numerical deriva- tions lattice[6][7].
for band structure and related calcula- tions
of tight-binding lattices primarily used in
condensed matter. The lattices under consid-
Rishi Paresh Joshi 20

Aim: Band structure of a simple To find the possible values of ϕ1 and ϕ2 and the
tight-binding wire associated eigenenergies of the molecular orbitals, we
apply the full Hamiltonian to |ψ⟩ :
In this section, we present the theoretical derivation
for the band structure of a simple tight-binding wire. H|ψ⟩ = E|ψ⟩ = ϕ1H|1⟩ + ϕ2H|2⟩
To explain tight-binding, we can first consider the
Taking the left inner product with ⟨1|, we obtain
principle of LCAO. In the subsequent paragraph, we
explain LCAO, taking the example of a diatomic
molecule and then generalizing the principle to a ⟨1|E|ψ⟩ = ϕ1 ⟨1|Hˆ |1⟩ + ϕ2 ⟨1|Hˆ |2⟩ = Eϕ1
lattice of atoms. Similarly, taking the inner product with ⟨2| yields:

0.1 LCAO for a diatomic molecule Eϕ2 = ϕ1 ⟨2|Hˆ |1⟩ + ϕ2 ⟨2|Hˆ |2⟩.
Consider two atoms next to each other, forming a We combine these two equations into an
diatomic molecule. The Hamiltonian describing the eigenvalue problem:
energy of an electron on the molecule is
E ϕ1 = ⟨1|Hˆ |1⟩ ⟨1|Hˆ |2⟩ 1
ϕ (2)
ˆ ˆ
H ˆ = Vˆ 1 + Vˆ 2 ϕ2 ⟨2|H|1⟩ ⟨2|H|2⟩ ϕ2
+ Kˆ
with The eigenvalue problem depends on only two pa-
Vˆ the potential energy due to the first nu-
1 rameters: the onsite energy ⟨1|Hˆ |1⟩ = ⟨2|Hˆ |2⟩ ≡ E0
cleus, ˆV2 due to the second nucleus,ˆ and K the that gives the energy of an electron occupying
kinetic
either of the atomic orbitals and the hopping
energy of the electron.
integral (or just hopping) ⟨1|Hˆ |2⟩ ≡ −t that
Since the different orbitals of an atom are sepa-
characterizes the energy associated with the electron
rated in energy, we consider only one orbital per
moving between the two orbitals.
atom (even though this is often a bad starting point
First, let us examine what constitutes the onsite
and it should only work for s-orbitals).
energy and the hopping:
Additionally, we assume that the atoms are suffi-
ciently far apart, such that the shape of the orbitals D E D E
ˆ
barely changes due to the presence of the other atom. E0 = ⟨1|H |1⟩ = 1 .V 1
ˆ ˆ ˆ
+2 V + K . 1 0 = ε + 2 1 .V . 1ˆ
If the atoms are far apart from each other such that
they do not interact, the eigenstates of the electrons
are the atomic orbitals. If we call the atomic orbital where we used that Vˆ1 + Kˆ |1⟩ = ε0 |1⟩. In other
of the electron on the first atom |1⟩ and that of the words,
D
the onsite energy is the combination of the
E
energy
. ˆ .of the original orbital plus the energy shift
electron on the second atom |2⟩, we have: 1 V 1 of the electron due to the potential of the

1 + neighboring atom. Second, the hopping is given by:
K ˆ
|1⟩ = ε0|
1⟩
D E E D
ˆ ˆ . 2. ˆ |2⟩ = − 1 .Vˆˆ1 + Vˆ2 + Kˆ . 2 = − 1
+ K |2⟩ = t = −⟨1|H
ε0V|2⟩2the
Key idea: to find wavefunction of the electron
.V 1 . 2
The orbitals |n⟩ are purely real because we consider
on the molecule - the molecular orbital -, we search
bound state solutions of the Schr¨odinger
for a solution that is a linear combination of the
equation. Hence t is real as well.
atomic orbitals (LCAO):
The eigenvalue problem we obtained describes a
particle with a discrete 2 × 2 Hamiltonian:
|ψ⟩ = ϕ1 |1⟩ + ϕ2 |2⟩. (1)
where ϕ1 and ϕ2 are probability amplitudes. The E0 −t
H= −t E0
orbital |ψ⟩ is called a molecular orbital because it
de-
scribes the eigenstate of an electron on the diatomic bitals are orthogonal 1, i.e. ⟨1 | 2⟩ = 0. This or- thogonality
molecule. ensures that |ψ⟩ is normalized whenever
For simplicity, we assume that the atomic or- |ϕ1| + |ϕ2| = 1.

2 Page 10 of
2 2
Rishi Paresh Joshi 20
Diagonalizing this LCAO Hamiltonian yields the
following two eigenvalues:

E± = E0 ∓ t
In the case of a lattice, we can use the
Bloch theorem to represent the lattice
wave function.

3 Page 10 of
Rishi Paresh Joshi 20

0.2 Bloch theorem ϕN = ϕ0. The ϕN are the Bloch wavefunctions (3)

For electrons in a perfect crystal, there is a basis of


wave functions with the following two properties:

• each of these wave functions is an energy eigen-


state,

• each of these wave functions is a Bloch state,


meaning that this wave function ψ can be writ-
ten in the form

ψ(r) = eik·ru(r) (3)

where u(r) has the same periodicity as the atomic


structure of the crystal, such that:-

uk(x) = uk(x + n · a) (4)

The defining property of a crystal is translational


symmetry, which means that if the crystal is shifted
an appropriate amount, it winds up with all its
atoms in the same places. (A finite-size crystal
cannot have perfect translational symmetry, but it is
a valid approximation.)
A three-dimensional crystal has three primitive
lattice vectors a1, a2, a3. If the crystal is shifted by
any of these three vectors or a combination of them
of the form

n1a1 + n2a2 + n3a3, (5)

Where ni are three integers, the atoms end up in


the exact locations as they started. These are three
vectors b1, b2, b3 (with units of inverse length), with
the property that ai · bi = 2π, but ai · bj = 0
when i ̸= j.

0.3 Calculation of the band structure of


a 1D wire
Similarly to the diatomic system case (1), we formu-
late the molecular orbital via the LCAO model:
Σ
|Ψ⟩ = ϕn|n⟩
n

We assume only nearest-neighbor hopping −t and


an on-site energy E0 . The coupled Schro¨dinger
equa- tion of the |n⟩ orbital is (the steps are just
like in the diatomic case (2):

Eϕn = E 0ϕ n − tϕn+1 − tϕn−1.

(6) Again, the periodic boundary conditions

imply
4 Page 10 of
Rishi Paresh Joshi 20

5. Plot the Band Structure: Using a plotting li-


brary (e.g., matplotlib), visualize the band struc-
ture. A simple line plot is employed, where the
x-axis represents momenta and the y-axis
repre- sents energies (code 0.7).
Thus, from sections 0.3 and 0.3.1, we have learned
how to find the dispersion relation; now, we can use
it for many other applications, as done below.

Figure 1: Band structure of a simple tight-


binding wire using Kwant

On substituting the Bloch wavefunctions


into the equations of motion:

LHS = Euk eiEt/ℏ−ikna


=
E0 uk eiEt/ℏ−ikna −tuk eiEt/ℏ−ik(n+1)a −tuk eiEt/ℏ−ik(n−
1)a
,
Again, we are not interested in a
trivial solution hence we assume uk ̸= 0
and thus,

E = E0 − te−ika − teika = E0 − 2t
cos(ka)

0.3.1 Plotting the dispersion


relation using kwant
1. Define the System: Use Kwant to
define the tight-binding system,
specifying the lattice, hop- ping
parameters, and other relevant
details.
2. Set Up the Momentum Path:
Create a path in momentum space
along which you want to calculate the
band structure. This often involves
defining a sequence of high-
symmetry points in the Brillouin
zone.
3. Calculate the Band Structure: Utilize
Kwant’s kwant.physics.Bands
module to calculate the band
structure along the specified
momentum path.
4. Extract Momenta and Energies:
Retrieve the calculated momenta and
corresponding energies from the band
structure calculation.

5 Page 10 of
Rishi Paresh Joshi 20

What more can be done in addition


to plotting the band structure of a
simple tight-binding model?
0.4 Calculation of effective mass of
1D tight-binding wire
Consider an electric field E in the x direction; we
want to know what happens is the trajectory of the
electrons in this wire. The full Hamiltonian of the
system is Figure 2: The plot of the effective mass of 1D tight-
binding wire vs. k for the lowest energy band
2
p
H = + Uatomic (x) + eE x
2m 0.5 Calculation of 1D tight-binding
where Uatomic is the potential created by the nuclei, wire DOS
and E the electric field.
A typical electric field is much smaller than the The DOS is the number of states per unit of energy.
interatomic potential, and therefore, we can start In 1D, we have
by obtaining the dispersion relation E(k) without
an
electric field (by applying the LCAO method 1) and L Σ dk/dE = L Σ
g(E) = |
then solve 2π 2πℏ |v|−1

H = E(k) + eE x. The sum goes over all possible values of k and


To derive how particles with an arbitrary spin with the same energy E. If working in two or
disper- sion relation move, we recall Hamilton’s more dimensions, we must integrate the values of k
equations for particle velocity v and force F : with the same energy. Also, note that for energies
below E0 − 2t or above E0 + 2t, there are no
values of k with that energy, so there is nothing
to sum over.
dr Once again, starting from
∂H(p, r)
v≡ =
dt
dp ∂p (7)
∂H(p, r) E = E0 − 2t cos(ka)
F≡ =− we get
dt ∂r
Substituting p = ℏk into the first equation (7), we
arrive at the expression for the electron group velocity ka = ± arccos [(E − E0) /2t]
v ≡ ℏ−1∂E/∂k. From the second equation (7), we
and
obtain that the force acting on an electron in a band
stays −eE, which in turn results in the acceleration.
dv ∂v dp −1
. dk . = ℏ 1
q|v| ℏ
=.
= = F/m dE . a
dt ∂p dt 4t2 − (E − E0)2

Comparing this expression with dv/dt = F/m, we One can get to this result immediately if you re-
arrive at the effective mass: member the derivative of arccosine. Otherwise, it
would help if we went a longer way: compute dE/dk
as a function of k, express k through E as we did
m∗ ≡ −1 −1 −1
∂v = ∂2E = ∂2E(8) above, and take the inverse.
∂p ∂p2 ℏ2 ∂k2 We now add together the contributions of the
positive and the negative momenta as well as both
The group velocity describes how quickly electrons an external force; thus, it is inversely proportional
with a certain k-vector move, while the effective mass to electron mobility and current.
describes how hard they are to accelerate by applying

6 Page 10 of
Rishi Paresh Joshi 20

spin orientations, and arrive at the density


of states
L 4 1
g(E) = q
2π a 2
4t2 − (E −
E0)

7 Page 10 of
Rishi Paresh Joshi 20

Figure 3: 1D DOS plot, when the energy is close to the


bottom of the band, E = E0 − 2t + δE, we get
g(E) ∝ δE−1/2, as we expect in 1D.

Figure 5: The 3d plot of the band structure of a honey-


comb lattice with horizontal axis ky and verti-
cal axis kx 0.8.

Figure 4: The circular 2D Honeycomb lattice under con-


sideration 0.9
Figure 6: Energy vs. kx 0.9

We have now seen how the band structure 1, ef-


fective mass 2 and DOS 3 look like in 1D. Now, we tight-binding spinless Hamiltonian can be written as
Σ +
explore the 2D case with the special Honeycomb H = −t i
lattice.
where cci+and
c +cjh.c.are ),
the creation and annihilation
j<i,j>

operators of an electron in the nearest-neighbors,


0.6 Calculation of the 2D band sites, i and j, belonging to different sublattices, re-
structure, effective mass and DOS spectively.
of the Honeycomb lattice Σ −ik·r
With Fourier
Σ −ik·r transforms ci = ke
i
ck and
The honeycomb lattice, the first model of 2D Dirac c
e j
c , the above Hamiltonian is
materials, has been widely employed in studying formed in the following form in momentum space:
j k k
= trans-
fun- damental physical scenarios in 2D Dirac
∗ 0
materials and beyond. For example, it is a pioneer H(k) = f (k) f0 (k) .
model for quantum anomalous Hall effects (AQHE) √
and quantum spin Hall effects (SQHE) in In√the foregoing, f (k) = e−ikx a + ei(kx 3/2−ky /2)a +
Haldane[1]. The conventional honeycomb lattice ei(kx 3/2+ky /2)a , where a represents the distance be-
comprises reg- ular hexagons, forming a profile tween two adjacent sites. From this tight-binding
similar to a ”hon- eycomb,”. Each site is threefold Hamiltonian of the honeycomb lattice, two energy-
and coordinated◦ at momentum relationships can be obtained:
an angle of 120 . The honeycomb lattice contains q √ 1 √ 3
two sublattices, each constituting a 2D hexagonal E±(k) = ± 3 + 2 3kxa + 4 2 3kxa cos ka
2 y
Bravais lattice. Neglecting the on-site energy differ- Now, we can getcos effective mass and costhe DOS like we
ence between the two sublattices (set to zero) and did for the 1D case using Eq. (8) and Section. (0.5).
considering only nearest-neighbor hopping (t), the

8 Page 10 of
Rishi Paresh Joshi 20

Conclusion
Conclusion concisely summarizes the laboratory (ex-
perimental design, experimental observation, exper-
imental analysis). It evaluates the results relative
to “what the goal/hypothesis of the experiment
was” and relative to the uncertainties/errors. A quick
dis- cussion of how one could make the laboratory
better to reduce uncertainties(random)/errors
(systematic) is vital. This should be 3-7 sentences.

Figure 7: Energy vs. ky 0.9


References
[1] F.D.M. Haldane, Model for a Quantum Hall Ef-
fect without Landau Levels: Condensed-Matter
Realization of the ”Parity Anomaly” (Phys. Rev.
Lett. 61,1988).

[2] Su, W. P.; Schrieffer, J. R.; Heeger, A. J., ”Soli-


tons in Polyacetylene” (Phys. Rev. Lett. 42
(25): 1698–1701, 1979).

[3] C. W. Groth, M. Wimmer, A. R. Akhmerov, X.


Waintal, Kwant: a software package for quan-
tum transport, New J. Phys. 16, 063065
Figure 8: Effective mass vs. kx 0.9 (2014)

[4] Tutorial on Kwant, https: //kwant-project.


org/ doc/ 1/ ,https: //github. com/
kwant-project , Last visited: Nov.,2023

[5] Open Solid State notes, https:


// opensolidstate , Last visited: Nov.,2023

[6] Supriyo Dutta, ”Electronic transport in meso-


scopic systems”. Tight binding model:(or the
method of finite differences), Cambridge Univer-
sity Press, 1995. ISBN: 0521416041

[7] Runyu Fan, Lei Sun, Xiaofei Shao, Yangyang Li,


Figure 9: Effective mass vs. ky 0.9 Mingwen Zhao, ”Two-dimensional Dirac mate-
rials: Tight-binding lattice models and material
candidates”, ChemPhysMater, Volume 2, Issue
1,2023, Pages 30-42, ISSN 2772-5715, https:
//doi.org/10.1016/j.chphma.2022.04.009.

Figure 10: DOS of honeycomb lattice 0.9.

9 Page 10 of
Rishi Paresh Joshi 20

Appendix A (Codes) 43energies, densities = spectrum()


44plot_dos([('densities', (energies,
‹→densities)),])
0.7 Code for bandstructure and 45

bandstructure related calculations 46 def plot_dos(labels_to_data):


of Simple 1D tight-binding wire 47for label, (x, y) in labels_to_data:
48pyplot.plot(x, y, label=label,

‹→linewidth=2, color="orange")
1 # - Computing the band structure of a 49pyplot.legend(loc=2, framealpha=0.5)
‹→ finalized lead.
50pyplot.xlabel("energy [t]")

51pyplot.ylabel("DoS [a.u.]")
2

3 import kwant 52pyplot.show()


4 import numpy as np 53pyplot.clf()
5 # For plotting. 54
6 from matplotlib import pyplot 55 def main():
7 56lead = make_lead().finalized()
8 def make_lead(a=1, t=1.0, W=10): 57kwant.plotter.bands(lead, show=False)
9 # Start with an empty lead with a 58pyplot.xlabel("momentum [(lattice

‹→ single square lattice ‹→constant)^-1]")


10 lat = kwant.lattice.square(a) 59pyplot.ylabel("energy [t]")
11 60pyplot.show()
12 sym_lead = 61momenta = [-np.pi + 0.02 * np.pi * i
‹→ kwant.TranslationalSymmetry((-a, ‹→for i in range(101)]
‹→ 0)) 62plot_effectivemass(lead, momenta)
13 lead = kwant.Builder(sym_lead) 63simple_dos_example(lead)
14 64 # Call the main function if the script
15 # build up one unit cell of the lead, ‹→gets executed (as opposed to
‹→ and add the hoppings ‹→imported).
16 # to the next unit cell 65 if name== ' main ':
17 for j in range(W): 66main()
18 lead[lat(0, j)] = 4 * t
19

20 if j > 0:
21 lead[lat(0, j), lat(0, j - 1)]
‹→ = -t
0.8 Code for 3D plot of Dirac
22 band-structure of 2D Honeycomb

1 Page 10 of
Rishi Paresh Joshi 20

23 lead[lat(1, j), lat(0, j)] = -t lattice


24

25 return lead 1 import matplotlib


26 def Diff2Energy(bands,x,h):#plotting 2 from matplotlib import pyplot
‹→ effective mass for one of the bands 3 import numpy as np
27 cd = 4*(bands(x+h/2)[0]+ 4 import kwant
5
28 bands(x-h/2)[0]-2*bands(x)[0]) /h**2
29 return cd 6

30 7 def momentum_to_lattice(k):
31 8"""Transform momentum to the basis of
32 def plot_effectivemass(flead, momenta): ‹→reciprocal lattice vectors.
9
33 h=0.01
10See https://en.wikipedia.org/wiki/
34 bands = kwant.physics.Bands(flead)
11Reciprocal_lattice#Generalization
35 mef=[1/(Diff2Energy(bands,k,h)) for k
12_of_a dual_lattice
‹→ in momenta]
13"""
36 pyplot.plot(momenta, mef)
14graphene =
37 pyplot.xlabel("momentum[(lattice
‹→kwant.lattice.honeycomb(a=1,
‹→ constant)^-1]")
‹→name='')
38 pyplot.ylabel("Effective mass")
15B = np.array(graphene.prim_vecs).T
39 pyplot.show()
16A = B.dot(np.linalg.inv(B.T.dot(B)))
40
17return np.linalg.solve(A, k)
41 def simple_dos_example(flead): 18
42 spectrum =
‹→ kwant.kpm.SpectralDensity(flead) 19

1 Page 10 of
Rishi Paresh Joshi 20

20 def dispersion_2D(syst, params=None, 6 # For computing eigenvalues


‹→ lim=1.5*np.pi, num_points=200): 7 #import scipy.sparse.linalg as sla
21 """A simple plot of 2D band 8
‹→ structure.""" 9 # For plotting
22 if params is None: 10 from matplotlib import pyplot
23 params = [] 11

24 momenta = np.linspace(-lim, lim, 12

‹→ num_points) 13 # Define the graphene lattice


25 energies = [] 14 sin_30, cos_30 = (1 / 2, sqrt(3) / 2)
26 for kx in momenta: 15 graphene = kwant.lattice.general([(1, 0),
27 for ky in momenta: ‹→ (sin_30, cos_30)],
28 lattice_k = 16 [(0, 0),
‹→ momentum_to_lattice([kx, ‹→ (0, 1
‹→ ky]) ‹→ /
29 h = syst.hamiltonian_submatrix ‹→ sqrt(3))])
30 (args=(list(params) 17 a, b = graphene.sublattices
‹→ +list(lattice_k))) 18
31 energies.append(np.linalg. 19

32 eigvalsh(h))energies = 20 def make_system(r=10, w=2.0, pot=0.0):


‹→ np.array(energies).reshape 21
33 (num_points, num_points, -1) 22 #### Define the scattering region.
34 emin, emax = np.min(energies), ‹→ ####
‹→ np.max(energies) 23 # circular scattering region
35 kx, ky = np.meshgrid(momenta, momenta) 24 def circle(pos):
36 fig = pyplot.figure() 25 x, y = pos
37 axes = fig.add_subplot(1, 1, 1, 26 return x ** 2 + y ** 2 < r ** 2
‹→ projection='3d') 27
38 for band in range(energies.shape[-1]): 28 sys = kwant.Builder()
39 axes.plot_surface(ky, kx, 29

‹→ energies[:, :,band], 30 # w: width and pot: potential maximum


‹→ cstride=2, rstride=2, ‹→ of the p-n junction
‹→ cmap=matplotlib.cm.RdBu_r, 31 def potential(site):
‹→ vmin=emin, 32 (x, y) = site.pos
‹→ vmax=emax,linewidth=0.1) 33 d = y * cos_30 + x * sin_30
40 34 return pot * tanh(d / w)
41 35

42 36 sys[graphene.shape(circle, (0, 0))] =


43 graphene = kwant.lattice.honeycomb(a=1, ‹→ potential

‹→ name='') 37
44 bulk_graphene = 38 # specify the hoppings of the graphene
‹→ kwant.Builder(kwant.TranslationalSymmet ry ‹→ lattice in the
45 (*graphene.prim_vecs))bulk_graphene[graphene . 39 # format expected by
46 shape((lambda pos: True), (0, 0))] = 0 ‹→ builder.HoppingKind
47 bulk_graphene[graphene.neighbors(1)] = 1 40 hoppings = (((0, 0), a, b), ((0, 1),
48 dispersion_2D(kwant.wraparound.wraparound ‹→ a, b), ((-1, 1), a, b))
49 (bulk_graphene).finalized()) 41
‹→ sys[[kwant.builder.HoppingKind(*hopping)
‹→ for hopping in hoppings]] = -1
0.9 Code for 2D plot of kx, ky in a 2D 42

Honeycomb lattice, its DOS and 43 # Modify the scattering region


#del sys[a(0, 0)]
its effective mass, and its band 44

45 #sys[a(-2, 1), b(2, 2)] = -1


gap 46
1 from futureimport division# so that 47 #### Define the leads. ####
‹→1/2 == 0.5, and not 0
48 # left lead
2 from math import pi, sqrt, tanh
49 sym0 =
3 import numpy as np ‹→ kwant.TranslationalSymmetry(graphene.vec((-
4 import kwant ‹→ 0)))
5
50

1 Page 10 of
Rishi Paresh Joshi 20

51 def lead0_shape(pos): 95 energiesy = [bands(k) for k in


52 x, y = pos ‹→ momentax]
53 return (-0.4 * r < y < 0.4 * r) 96 pyplot.plot(momentax, energiesy)
54 97 pyplot.xlabel("momentum_y [(lattice
55 lead0 = kwant.Builder(sym0) ‹→ constant)^-1]")

56 lead0[graphene.shape(lead0_shape, (0, 98 pyplot.ylabel("energy [t]")


‹→ 0))] = -pot 99 pyplot.show()
57 100

‹→ lead0[[kwant.builder.HoppingKind(*h opping)
101

‹→ for hopping in hoppings]] = -1 102 def plot_effectivemass(flead, momenta):


58 103 h=0.01
59 # The second lead, going to the top 104 bands = kwant.physics.Bands(flead)
‹→ right 105 mefx=[1/(Diff2Energy(bands,k,h)) for k
60 sym1 = ‹→ in momenta]
‹→ kwant.TranslationalSymmetry(graphene .vec((0,
106 pyplot.figure()
‹→ 1))) 107 momentax=[x+pi for x in momenta]
61 108 pyplot.plot(momentax, mefx)
62 def lead1_shape(pos): 109 pyplot.xlabel("momentum_x [(lattice
63 v = pos[1] * sin_30 - pos[0] * ‹→ constant)^-1]")
‹→ cos_30 110 pyplot.ylabel("Effective mass")
64 return (-0.4 * r < v < 0.4 * r) 111 pyplot.show()
65 112 mefy=[1/(Diff2Energy(bands,k,h)) for k
66 lead1 = kwant.Builder(sym1) ‹→ in momentax]
67 lead1[graphene.shape(lead1_shape, (0, 113 momentay=momentax
‹→ 0))] = pot 114 pyplot.plot(momentay, mefy)
68 115 pyplot.xlabel("momentum_y [(lattice
‹→ lead1[[kwant.builder.HoppingKind(*h opping) ‹→ constant)^-1]")
‹→ for hopping in hoppings]] = -1 116 pyplot.ylabel("Effective mass")
69 117 pyplot.show()
70 return sys, [lead0, lead1] 118 def main():
71 119 pot = 0.0
72 120 sys, leads = make_system(pot=pot)
73 #def compute_evs(sys): 121

74 # Compute some eigenvalues of the 122 # To highlight the two sublattices of


‹→ closed system ‹→ graphene, we plot one with
75 #sparse_mat = 123 # a filled, and the other one with an
‹→ sys.hamiltonian_submatrix(sparse=Tr ue) ‹→ open circle:
76
124 def family_colors(site):
77 #evs = sla.eigs(sparse_mat, 2)[0] 125 return 0 if site.family == a else
78 #print (evs.real) ‹→ 1
79 def Diff2Energy(bands,x,h): 126 def plot_dos(labels_to_data):
80 cd = 127 for label, (x, y) in labels_to_data:
x))/h**2
‹→ 4*(bands(x+h/2)+bands(x-h/2)-2*bands( 128 plt.plot(x, y, label=label,
81 return cd ‹→ linewidth=2, color="orange")
82
129 plt.legend(loc=2, framealpha=0.5)
83 def plot_bandstructure(flead, momenta): 130 plt.xlabel("energy [t]")
84 bands = kwant.physics.Bands(flead) 131 plt.ylabel("DoS [a.u.]")
85 energiesx = [bands(k) for k in 132 plt.show()
‹→ momenta] 133 plt.clf()
86 momentax=[x+pi for x in momenta] 134
87 135 def simple_dos_example(fsys):
88 print("Bands gap is\n", emax1-emin2) 136 fsyst = make_syst().finalized()
89 pyplot.figure() 137

90 pyplot.plot(momentax, energiesx) 138 spectrum =


91 pyplot.xlabel("momentum_x [(lattice ‹→ kwant.kpm.SpectralDensity(fsyst)
‹→ constant)^-1]") 139

92 pyplot.ylabel("energy [t]") 140 energies, densities = spectrum()


93 pyplot.show() 141

94 pyplot.figure() 142 energy_subset = np.linspace(0, 2)

1 Page 10 of
Rishi Paresh Joshi 20

143

144 plot_dos([
145 ('densities', (energies,
‹→ densities)),
146 ])
147 # Plot the closed system without
‹→ leads.
148 kwant.plot(sys,
‹→ site_color=family_colors,

‹→ site_lw=0.1, colorbar=False)
149

150 # Compute some eigenvalues.


151 #compute_evs(sys.finalized())
152

153 # Attach the leads to the system.


154 for lead in leads:
155 sys.attach_lead(lead)
156

157 # Then, plot the system with leads.


158 kwant.plot(sys,
‹→ site_color=family_colors,

‹→ site_lw=0.1,

159 lead_site_lw=0,
‹→ colorbar=False)
160

161 # Finalize the system.


162 sys = sys.finalized()
163

164 # Compute the band structure of lead


‹→ 0.
165 momenta = [-2*pi + 0.02 * pi * i for i
‹→ in range(101)]
166 plot_bandstructure(sys.leads[0],
‹→ momenta)
167

‹→ plot_effectivemass(sys.leads[0],momenta)
168 # Plot conductance.
169 #energies = [-2 * pot + 4. / 50. * pot
‹→ * i for i in range(51)]
170 simple_dos_example(sys)

1 Page 10 of

You might also like