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 <[email protected]>
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.