Dear Naveen, These inwards- and outwards- facing leads wouldn't have translation invariance. This makes one unable to compute a mode decomposition in such a geometry, and therefore computing the conductance becomes extremely difficult. Right now Kwant only implements the algorithms that assume translationally invariant leads.
Best, Anton On Tue, 13 Aug 2019 at 14:15, Naveen Yadav <naveengunwa...@gmail.com> wrote: > > 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.