Hi Adel,
Yes, I can. Below I am sending the complete code with the error:
---------------------------------------------------------------------------------------------------------------------------------------------------
from matplotlib import pyplot as plt
from matplotlib import backends
import numpy as np
from numpy import matrix,round,sqrt,conj,exp,imag,real
import cmath
import kwant
# Parametro de hopping medido em eV:
gamma_L = 0.14
gamma_C = 0.12
gamma_R = 0.08
# Energia dos sitios de impurezas:
E = 0
# Numero de repeticoes da celula primitiva:
L = 20 # Tag: (L-1)(2) + 1
# Potenciais quimicos medidos em eV:
mu_L = 0.5
mu_R = - 0.8
par = dict(gamma_L=gamma_L, gamma_C=gamma_C, gamma_R=gamma_R, E=E, mu_L=mu_L,
mu_R=mu_R)
# Vamos definir o lattice de uma rede diatomica em 1D:
def make_system(L, gamma_L, gamma_C, gamma_R, E):
lat = kwant.lattice.general([(2,0),(0,1)],[(0,0),(1,0)], norbs=1)
a, b = lat.sublattices
syst = kwant.Builder()
# Regiao de Espalhamento
for i in range(L):
syst[a(i, 0)] = E
syst[b(i, 0)] = E
syst[kwant.builder.HoppingKind((0, 0), a, b)] = -gamma_C
syst[kwant.builder.HoppingKind((1, 0), a, b)] = -gamma_C
# Adicionando as leads
lat_lead1 = kwant.lattice.general([(1,0),(0,1)],[(0,0)],
norbs=1).sublattices[0]
sym_lead1 = kwant.TranslationalSymmetry((-1, 0))
syst[lat_lead1(-1,0)] = 0
syst[lat_lead1(-1,0),a(0,0)] = -gamma_L
syst[lat_lead1(2 * L,0)] = 0
syst[lat_lead1(2 * L,0),b(L - 1,0)] = -gamma_R
lead1 = kwant.Builder(sym_lead1)
lead1[lat_lead1(0,0)] = 0
lead1[lat_lead1.neighbors()] = -1
syst.attach_lead(lead1)
syst.attach_lead(lead1.reversed())
return syst, lat
syst, lat = make_system(L, gamma_L, gamma_C, gamma_R, E)
def mount_vlead(syst, vlead_interface, norb):
dim = norb*len(vlead_interface)
print(dim)
zero_array = np.zeros((dim, dim), dtype=float)
def selfenergy_func(energy, args=()):
return zero_array
vlead = kwant.builder.SelfEnergyLead(selfenergy_func, vlead_interface,())
syst.leads.append(vlead)
lead2 = mount_vlead(syst,[lat.sublattices[0](2, 0)], 1)
lead3 = mount_vlead(syst,[lat.sublattices[1](3, 0)], 1)
fsyst = syst.finalized()
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~\anaconda3\lib\site-packages\kwant\builder.py in __init__(self, builder)
2060 try:
-> 2061 interface = [id_by_site[isite] for isite in
lead.interface]
2062 except KeyError as e:
~\anaconda3\lib\site-packages\kwant\builder.py in <listcomp>(.0)
2060 try:
-> 2061 interface = [id_by_site[isite] for isite in
lead.interface]
2062 except KeyError as e:
KeyError: Site(kwant.lattice.Monatomic([[2.0, 0.0], [0.0, 1.0]], [1.0, 0.0],
'1', 1), array([20, 0]))
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-15-99c1026e5465> in <module>
12 lead3 = mount_vlead(syst,[lat.sublattices[1](3, 0)], 1)
13
---> 14 fsyst = syst.finalized()
~\anaconda3\lib\site-packages\kwant\builder.py in finalized(self)
1808 """
1809 if self.symmetry.num_directions == 0:
-> 1810 return FiniteSystem(self)
1811 elif self.symmetry.num_directions == 1:
1812 return InfiniteSystem(self)
~\anaconda3\lib\site-packages\kwant\builder.py in __init__(self, builder)
2063 msg = ("Lead {0} is attached to a site that does not "
2064 "belong to the scattering region:\n {1}")
-> 2065 raise ValueError(msg.format(lead_nr, e.args[0]))
2066
2067 lead_interfaces.append(np.array(interface))
ValueError: Lead 3 is attached to a site that does not belong to the scattering
region:
<Site [20 0] of 1>