Re: [Kwant] 3D annulus cylinder

2019-08-13 Thread Naveen Yadav
Dear Sir,
Thank you for the clarification.













Naveen
Department of Physics & Astrophysics
University of Delhi
New Delhi-110007

On Tue, Aug 13, 2019, 17:56 Anton Akhmerov 
wrote:

> 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 
> 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 
> 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.
>


Re: [Kwant] 3D annulus cylinder

2019-08-13 Thread Anton Akhmerov
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  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  
> 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.


Re: [Kwant] 3D annulus cylinder

2019-08-13 Thread Naveen Yadav
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 
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.


Re: [Kwant] 3D annulus cylinder

2019-08-13 Thread Joseph Weston
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



signature.asc
Description: OpenPGP digital signature


Re: [Kwant] 3D annulus cylinder

2019-08-13 Thread Naveen Yadav
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.

Thank you.
Naveen

On Fri, Aug 9, 2019 at 3:26 PM Naveen Yadav 
wrote:

> Problem solved. Thanks a lot sir.
>
> On Fri, Aug 9, 2019 at 2:45 PM Joseph Weston 
> wrote:
>
>> Hi,
>>
>> Dear KWANT developers,
>>
>> I want to generate a 3D annulus cylinder with hopping in all the three
>> directions(periodic in x-direction) like the following figure. Please
>> suggest me the way to generate such type of geometry. If possible then
>> provide an example code for that for better understanding.
>>
>> [image: image.png]
>>
>>
>> You can use a 'shape' function as shown in Kwant tutorial 2.3:
>> https://kwant-project.org/doc/1/tutorial/spin_potential_shape#nontrivial-shapes.
>> The code will be almost exactly the same as the ring example in the
>> tutorial, except that you will have 3 coordinates instead of 2.
>>
>>
>> Happy Kwanting,
>>
>>
>> Joe
>>
>
>
> --
>
>
> With Best Regards
> NAVEEN YADAV
> Ph.D Research Scholar
> Deptt. Of Physics & Astrophysics
> University Of Delhi.
>


-- 


With Best Regards
NAVEEN YADAV
Ph.D Research Scholar
Deptt. Of Physics & Astrophysics
University Of Delhi.


Re: [Kwant] 3D annulus cylinder

2019-08-09 Thread Naveen Yadav
Problem solved. Thanks a lot sir.

On Fri, Aug 9, 2019 at 2:45 PM Joseph Weston 
wrote:

> Hi,
>
> Dear KWANT developers,
>
> I want to generate a 3D annulus cylinder with hopping in all the three
> directions(periodic in x-direction) like the following figure. Please
> suggest me the way to generate such type of geometry. If possible then
> provide an example code for that for better understanding.
>
> [image: image.png]
>
>
> You can use a 'shape' function as shown in Kwant tutorial 2.3:
> https://kwant-project.org/doc/1/tutorial/spin_potential_shape#nontrivial-shapes.
> The code will be almost exactly the same as the ring example in the
> tutorial, except that you will have 3 coordinates instead of 2.
>
>
> Happy Kwanting,
>
>
> Joe
>


-- 


With Best Regards
NAVEEN YADAV
Ph.D Research Scholar
Deptt. Of Physics & Astrophysics
University Of Delhi.


Re: [Kwant] 3D annulus cylinder

2019-08-09 Thread Joseph Weston
Hi,


> Dear KWANT developers,
>
> I want to generate a 3D annulus cylinder with hopping in all the three
> directions(periodic in x-direction) like the following figure. Please
> suggest me the way to generate such type of geometry. If possible then
> provide an example code for that for better understanding.
>
> image.png


You can use a 'shape' function as shown in Kwant tutorial 2.3:
https://kwant-project.org/doc/1/tutorial/spin_potential_shape#nontrivial-shapes.
The code will be almost exactly the same as the ring example in the
tutorial, except that you will have 3 coordinates instead of 2.


Happy Kwanting,


Joe



signature.asc
Description: OpenPGP digital signature


[Kwant] 3D annulus cylinder

2019-08-09 Thread Naveen Yadav
Dear KWANT developers,

I want to generate a 3D annulus cylinder with hopping in all the three
directions(periodic in x-direction) like the following figure. Please
suggest me the way to generate such type of geometry. If possible then
provide an example code for that for better understanding.

[image: image.png]
I will be very thankful to you.
Naveen
-- 


With Best Regards
NAVEEN YADAV
Ph.D Research Scholar
Deptt. Of Physics & Astrophysics
University Of Delhi.