Hi Anant, You wrote:
Is there any way in KWANT that I can plot a 3-d graph of dispersion relation? In the tutorial it is given that the infinite system is quasi 1-d system.
Indeed, in Kwant 1.x low-level systems (e.g. finalized builders) can only be either finite or quasi-1-d. This is because we added the concept of symmetries to Kwant only after the basic low-level design was already fixed. We plan to remove this restriction in the next major version of Kwant.
For now, you can use a variant of the trick mentioned in http://article.gmane.org/gmane.comp.science.kwant.user/39. As an example, I attach a script that calculates and plots the band structure of graphene. The 6 k-points are clearly visible. With Kwant 2, an equivalent script will be less “hacky”.
that means is it only giving values for Kx momentum.I guess not. I guess it is the values of energies for momentum K = -sqrt(Kx*Kx + Ky*Ky) and K = +sqrt(Kx*Kx + Ky*Ky).
I’m not sure what you mean by this. Best Christoph
import cmath
From collections import defaultdict
import kwant
import tinyarray as ta
import numpy as np
From mpl_toolkits.mplot3d import axes3d
From matplotlib import pyplot, cm
lat = kwant.lattice.honeycomb()
a, b = lat.sublattices
# Make an ancillary system with two symmetries. With current Kwant 1, this
# system cannot by finalized.
sym = kwant.TranslationalSymmetry(a.vec((1, 0)), a.vec((0, 1)))
anc = kwant.Builder(sym)
anc[a(0, 0)] = anc[b(0, 0)] = None
anc[lat.neighbors()] = None
# Make an equivalent Kwant system without explicit symmetries that can be
# finalized. The k vector will be a parameter to this system. We have to be a
# bit careful as different hoppings in the periodic system correspond to the
# same hopping in the pseudo-periodic system.
sys = kwant.Builder()
sys[anc.sites()] = 0
shifts = defaultdict(list)
for a, b in anc.hoppings():
# a is always in the fundamental domain.
b_fd = sym.to_fd(b)
shifts[a, b_fd].append(b.pos - b_fd.pos)
def hopping(a, b, k):
return sum(cmath.exp(1j * ta.dot(shift, k)) for shift in shifts[a, b])
sys[shifts.keys()] = hopping
sys = sys.finalized()
# Calculate and plot the bands.
momenta = np.linspace(-5, 5, 111)
energies = []
for kx in momenta:
col = []
energies.append(col)
for ky in momenta:
H = sys.hamiltonian_submatrix(args=[(kx, ky)])
col.append(np.linalg.eigvalsh(H).real)
energies = np.array(energies)
ax = pyplot.figure().add_subplot(111, projection='3d')
ax.plot_surface(momenta[:, None], momenta[None, :], energies[..., 0],
rstride=3, cstride=3, cmap=cm.coolwarm)
ax.plot_wireframe(momenta[:, None], momenta[None, :], energies[..., 1],
rstride=3, cstride=3)
pyplot.show()
smime.p7s
Description: S/MIME cryptographic signature
