While studying 2.3.transport_through_barrier.ipynb, a tutorial in gitlab, I 
tried to find the transimission by changing the lattice to a graphene 
nanoribbon rather than a square. Here is the code I tried.

import numpy as np
import kwant

from matplotlib import pyplot

lat = kwant.lattice.general([[1, 0], [1/2, np.sqrt(3)/2]],  # lattice vectors
                                 [[0, 0], [0, 1/np.sqrt(3)]])  # Coordinates of 
the sites
a, b = lat.sublattices

def make_lead_x(W=10, t=1):
    syst = kwant.Builder(kwant.TranslationalSymmetry([-1, 0]))
    syst[(lat(0, y) for y in range(W))] = 4 * t
    syst[lat.neighbors()] = -t
    return syst

def make_wire_with_flat_potential(W=10, L=2, t=1):
    def onsite(s, V):
        return (4 - V) * t

    # Construct the scattering region.
    sr = kwant.Builder()
    sr[(lat(x, y) for x in range(L) for y in range(W))] = onsite
    sr[lat.neighbors()] = -t

    # Build and attach lead from both sides.
    lead = make_lead_x(W, t)
    sr.attach_lead(lead)
    sr.attach_lead(lead.reversed())

    return sr

def plot_transmission(syst, energy, params):
    # Compute conductance
    trans = []
    for param in params:
        smatrix = kwant.smatrix(syst, energy, args=[param])
        trans.append(smatrix.transmission(1, 0))
    pyplot.plot(params, trans)
   
_syst = make_wire_with_flat_potential()
kwant.plot(_syst)
_syst = _syst.finalized()
kwant.plotter.bands(_syst.leads[0])
plot_transmission(_syst, 1, np.linspace(-2, 0, 51))

Error says 'Polyatomic' object is not callable.

I did a search
lat = kwant.lattice.general([[1, 0], [1/2, np.sqrt(3)/2]], # lattice vectors
                                  [[0, 0], [0, 1/np.sqrt(3)]]) # Coordinates of 
the sites
a, b = lat. sublattices
  I understand that this code is polyatomic, and it is not correct to apply it 
to (lat(x, y).

But i can't find a solution. Can you help me?

Reply via email to