Hi Christoph,
Could you please give an example for calculating conductance using wraparound module?
I've tried this with the following script to calculate the transmission in z-direction of a 3D cubic lattice,
with infinite x-y plane:
#creating the scattering region with symmetries in all directions
t = 1
L, W = 4, 4
lat = kwant.lattice.general(np.identity(3))
sym = kwant.TranslationalSymmetry(*lat.prim_vecs)
sys = kwant.Builder(sym)
sys[lat.shape(lambda p: True, (0, 0, 0))] = -2*t
sys[lat.neighbors(1)] = -t
#using wraparound module
sys = wraparound(sys)
#build and attach the lead in z-direction
lead = kwant.Builder(kwant.TranslationalSymmetry((0, 0, -1)))
lead[(lat(i,j,0) for i in range(L) for j in range(W))] = -2*t
lead[lat.neighbors(1)] = -t
sys.attach_lead(lead)
sys.attach_lead(lead.reversed())
sys = sys.finalized()
#is it the right way to specify k_x=k_y=0?
smatrix = kwant.smatrix(sys, 0, [0,0])
print(smatrix.transmission(1, 0))
but it returns the error message:
"ValueError: Builder does not interrupt the lead, this lead cannot be attached."
If I instead call wraparound after attaching the lead, i.e.,
...
sys.attach_lead(lead.reversed())
sys = wraparound(sys).finalized()
It returns
"ValueError: No output is requested." which might suggest no lead attached at all.
So what is the right way of implementing such calculations?
Thank you!
Best,
Xin Dai