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.

Reply via email to