Dear sir, syst.attach_lead(lead, origin=lat(0, 0, 0)) # lat(0, 0, 0) is in the hole of the annulus This is okay. But I want to create leads in the radial direction, suppose X is the width of cylinder, Y is circumference and Z is the Difference in outer and inner radii. So, I want to create leads wrapped around Y, for inner circumference lead should directed towards origin and for outer circle directed away from the origin. Code for creating annulus geometry is given below-
import kwant import scipy.sparse.linalg as sla import matplotlib.pyplot as plt import tinyarray import numpy as np from numpy import cos, sin, pi import cmath from cmath import exp sigma_0 = tinyarray.array([[1, 0], [0, 1]]) sigma_x = tinyarray.array([[0, 1], [1, 0]]) sigma_y = tinyarray.array([[0, -1j], [1j, 0]]) sigma_z = tinyarray.array([[1, 0], [0, -1]]) def make_system(a=1, L=22, r_in=22, r_out=30, t=1.0, t_x=1.0, t_y=1.0, t_z=1.0, lamda=0.2, beta=1.05, phi_uc = 0.0078): # ring shape def ring(pos): (z, y, x) = pos rsq = y ** 2 + z ** 2 return r_in ** 2 <= rsq <= r_out ** 2 and x in range (L) def onsite(site): return (t_z * cos(beta) + 2 * t) * sigma_z def hoppingx(site0, site1): return (-0.5 * t * sigma_z - 0.5 * 1j * t_x * sigma_x) def hoppingy(site0, site1): return -0.5 * t * sigma_z - 0.5 * 1j * t_y * sigma_y def hoppingz(site0, site1): y = site1.pos[1] return (-0.5 * t_z * sigma_z - 0.5 * 1j * lamda * sigma_0) * exp(2 * pi * 1j * phi_uc * a * (y-40)) syst = kwant.Builder() lat = kwant.lattice.cubic(a, norbs=2) syst[lat.shape(ring, (0, r_in+1, 0))] = onsite syst[kwant.builder.HoppingKind((1, 0, 0), lat, lat)] = hoppingz syst[kwant.builder.HoppingKind((0, 1, 0), lat, lat)] = hoppingy syst[kwant.builder.HoppingKind((0, 0, 1), lat, lat)] = hoppingx lead = kwant.Builder(kwant.TranslationalSymmetry((-a, 0, 0))) lead[lat.shape(ring, (0, r_in+1, 0))] = onsite lead[kwant.builder.HoppingKind((1, 0, 0), lat, lat)] = hoppingz lead[kwant.builder.HoppingKind((0, 1, 0), lat, lat)] = hoppingy lead[kwant.builder.HoppingKind((0, 0, 1), lat, lat)] = hoppingx syst.attach_lead(lead) syst.attach_lead(lead, origin=lat(0,0,0)) return syst def analyze_system(): syst = make_system() fig = plt.figure() ax = kwant.plot(syst) ax.savefig('sys2.png',dpi=200) def main(): syst = make_system() analyze_system() main() On Tue, Aug 13, 2019 at 3:18 PM Joseph Weston <joseph.westo...@gmail.com> wrote: > Hi, > > Dear sir, > > Could we attach *circular leads* to the inner and outer circle of annulus > geometry in 3D? Please suggest me if there is a way to do that. > > What do you mean by circular leads? Do you mean leads with a circle > cross-section (i.e. a semi-infinite cylinder lead)? If so then all you need > to do is create a lead with a circular cross-section uses 'lat.shape' in a > similar way to how you created the scattering region. You can attach leads > to the interior of the annulus by specifying the parameter 'origin' to be a > site in the interior of the annulus when calling 'attach_lead' (see the > documentation [1]). e.g.: > > syst.attach_lead(lead, origin=lat(0, 0)) # lat(0, 0) is in the hole > of the annulus > > > Happy Kwanting, > > > Joe > > > [1]: > https://kwant-project.org/doc/1/reference/generated/kwant.builder.Builder#kwant.builder.Builder.attach_lead > -- With Best Regards NAVEEN YADAV Ph.D Research Scholar Deptt. Of Physics & Astrophysics University Of Delhi.