Hello, I am trying to simulate the quantum hall effect in a hall bar made of a honeycomb (graphene) lattice. I modified the code submitted by C. Groth as a response to a 2015 thread (link below). As soon as I add the vertical leads, I cant seem to get the expected phenomenon for both longitudinal and hall resistances. Here is my code, if anyone spots an error or a solution, do let me know! Sid Sule -------------------------------------------- from cmath import exp import numpy from matplotlib import pyplot import kwant from kwant.digest import gauss def hopping(sitei, sitej, phi, salt): xi, yi = sitei.pos xj, yj = sitej.pos return -exp(-0.5j * phi * (xi - xj) * (yi + yj)) def onsite(site, phi, salt): return 0.05 * gauss(repr(site), salt) def make_system(L=20, W=30): def central_region(pos): x, y = pos return abs(x) < (W/2) and abs(y) < (L/2) lat = kwant.lattice.honeycomb() sys = kwant.Builder() sys[lat.shape(central_region, (0, 0))] = onsite sys[lat.neighbors()] = hopping vertices = numpy.array([[-15, -6, 5, 10], [-15, -6, -10, -5], [6, 15, 5, 10], [6, 15, -10, -5], [-2, 2, 5, 10], [-2, 2, -10, -5]]) for v in vertices: def in_hole(site): x, y = site.pos return (v[0] <= x <= v[1]) and (v[2] <= y <= v[3]) for site in filter(in_hole, list(sys.sites())): del sys[site] sym = kwant.TranslationalSymmetry((-1, 0)) lead = kwant.Builder(sym) lead[lat.shape(lambda s: abs(s[1]) < (L/4), (0, 0))] = 0 lead[lat.neighbors()] = hopping sys.attach_lead(lead) sys.attach_lead(lead.reversed()) edges = numpy.array([[-6, -2, -4], [2, 6, 4]]) for e in edges: sym = kwant.TranslationalSymmetry([0, numpy.sqrt(3)]) lead = kwant.Builder(sym) def lead_region(pos): x, y = pos return (e[0] < x < e[1]) lead[lat.shape(lead_region, (e[2], 0))] = 0 lead[lat.neighbors()] = hopping sys.attach_lead(lead) sys.attach_lead(lead.reversed()) for x in lead.sites(): x.family.norbs = None return sys.finalized() sys = make_system() kwant.plot(sys, site_lw=0.1, lead_site_lw=0, colorbar=False, show=False) energy = 0.35 reciprocal_phis = numpy.linspace(4, 50, 20) current = numpy.array([-1, 1, 0, 0, 0, 0]) r_long = [] r_hall = [] for phi in 1 / reciprocal_phis: params = {"phi": phi, "salt": ""} smatrix = kwant.smatrix(sys, energy, params=params) cond_mat = smatrix.conductance_matrix() # SOLVES FOR V IN I = G*V voltage = numpy.linalg.solve(cond_mat, current) # DIVIDE BY 2 FOR V = I*R, I = 2 r_long.append(abs(voltage[2]-voltage[4]) / 2) r_hall.append((voltage[2] - voltage[3]) / 2) fig, ax = pyplot.subplots(1, 1) ax.plot(reciprocal_phis, r_long) ax.plot(reciprocal_phis, r_hall) fig.show() --------------------- Link of original thread : https://mail.python.org/archives/list/kwant-discuss@python.org/thread/D3MTMB...
participants (1)
-
sidsule3000@hotmail.com