Is there a way to implement indirect hopping in Kwant?
I have a cubic system and I want to add to the term describing the direct
hopping between site i and j, an indirect hopping term via an intermediate
site k, for all the sites in my system.
I appreciate any help
On Fri, Oct 20, 2017 at 4:45 PM, Dripto Debroy <driptodebroy(a)gmail.com> wrote:
> That makes a lot of sense, would I be correct in assuming that I would need
> to define new lattices for each of the rows of square matrices before adding
> the hoppings by hand?
You only need to define two lattices: one honeycomb, and one square
for the lead.
> Much appreciated.
> On Oct 20, 2017 5:52 AM, "Anton Akhmerov" <anton.akhmerov+kd(a)gmail.com>
>> Hi Dripto,
>> The correct approach to implement that is to do the following:
>> 1. add a sufficient number of sites from the square lattice to the
>> scattering region, so that the lead may be attached to those (this
>> should amount to 1 unit cell of the lead).
>> 2. manually connect those sites to the honeycomb lattice. Since there
>> are too many possibilities to do so, there's no way to make this
>> choice automatically.
>> 3. attach the lead as usual using Builder.attach_lead.
>> On Thu, Oct 19, 2017 at 8:31 PM, Dripto Debroy <driptodebroy(a)gmail.com>
>> > Hello all,
>> > I am hoping to use KWANT to model a graphene flake with two metal leads.
>> > The
>> > issue I am running in to is figuring out how to connect leads which have
>> > a
>> > square lattice and graphene which has a honeycomb lattice. Is this
>> > something
>> > that KWANT can handle? I was unable to find any documentation on mixing
>> > lattice types and modeling heterojunctions in general.
>> > Thanks for your help,
>> > Dripto
I am hoping to use KWANT to model a graphene flake with two metal leads.
The issue I am running in to is figuring out how to connect leads which
have a square lattice and graphene which has a honeycomb lattice. Is this
something that KWANT can handle? I was unable to find any documentation on
mixing lattice types and modeling heterojunctions in general.
Thanks for your help,
(thanks so much for kwant ;) )
I am wondering whether there is a mistake/typo in the docstring of the
The reason is the following: In a simple lead (specifically graphene
zigzag nanoribbon) at energy that excites 6 modes (only 3 with positive
when getting the `PropagatingModes` (either through physics.modes or by
the Smatrix), and I get the momenta and velocities, it looks like this:
In : modes
Out: <kwant.physics.leads.PropagatingModes at 0x2139805ecf8>
In : modes.momenta
array([-2.12874239, 2.0566145 , 2.06992722, 2.12874239, -2.0566145 ,
In : modes.velocities
array([-1.91098658, -2.24527103, -1.66541483, 1.91098658, 2.24527103,
Now, the docstring of Propagating modes states:
> The first half of the
> modes have negative velocity, the second half have positive velocity. The
> modes with negative velocity are ordered from larger to lower momenta, the
> modes with positive velocity vice versa.
However, this is not what I see. The first half, with negative velocity,
is clearly sorted from smaller to bigger momenta, while the second half
(with positive velocity) is sorted from bigger to slower momenta. This
is the exact opposite of the docstring.
Thus I am writing this mail to see if I have misunderstood something or
if this is simply a typo mistake.
Dear Anton and other Kwant users,
I am currently using the KPM method to calculate the density of states:
spectrum = kwant.kpm.SpectralDensity(fsyst)
dos = spectrum(energies)
In the tutorial, this method is successfully applied to calculate the dos
of a large closed system. But I am wondering that here it can also be
applied to the case of an open system (i.e., a system composed of
scattering region and leads).
Thanks a lot !
Hi Joseph and Anton,
Today I had a talk with my supervisor and he wondered if it was possible to plot the raw current data before interpolation, just to see how current travels through each of the hoppings.
From previous questions I know that the current array returned from J0 (psi) is in the same from as the system graph, however I was wondering if there was a simple way to plot this array to see the current vectors at each site position.
Sorry if this question is naive.
Sent from Samsung Mobile
<div>-------- Original message --------</div><div>From: "mitchell.greenberg" <mitchell.greenberg(a)my.jcu.edu.au> </div><div>Date:17/09/2017 7:32 PM (GMT+10:00) </div><div>To: Anton Akhmerov <anton.akhmerov+kd(a)gmail.com> </div><div>Cc: kwant-discuss(a)kwant-project.org </div><div>Subject: Re: [Kwant] 2D Current Density Streamplot of 3D System </div><div>
</div>This sender failed our fraud detection checks and may not be who they appear to be. Learn about spoofing
Thanks for that. While my lattice is polyatomic I just switched site.pos to site.tag in the code I posted last message to get the tags for my lattice. Doing that I see the tags for the z axis range from 0 to 9 (makes sense as I have 10 layers), which explains why 5.3 worked when I used it but not 10. My function runs now an accurately deletes the sites without any problems.
Sent from Samsung Mobile
-------- Original message --------
From: Anton Akhmerov
Date:17/09/2017 5:11 AM (GMT+10:00)
To: Mitchell Greenberg
Cc: Joseph Weston ,kwant-discuss(a)kwant-project.org
Subject: Re: [Kwant] 2D Current Density Streamplot of 3D System
Deleting and adding sites is done by their lattice coordinates
(site.tag), not their real space position (site.pos); if you want to
access a site close to a certain position, you can use the method
On Sat, Sep 16, 2017 at 2:34 PM, Mitchell Greenberg
> Hi Joseph and Anton,
> Thank you for the advice with getting the 2d graph up and running, its now
> producing results that look good. Sorry that I haven't replied in over 2
> weeks, uni has gotten into full swing.
> I wasn't sure if I needed to start a new topic for this (if I need to let me
> know) but I am now trying to remove lattice points randomly from my sample.
> I have created a function that can remove random lattice points (it is
> rather messy) however I have noticed that when I try to delete sites for
> layers other than at z=0 and z=5.3 I get the following error.:
> KeyError: Site(kwant.lattice.Monatomic([[4.3763, 0.0, 0.0], [0.0, 3.3136,
> 0.0], [0.0, 0.0, 5.3]], [0.0, 0.0, 0.0], '0', 1), array([50, 50, 10]))
> This error seems to pop up when I try to delete a site that doesn't exist at
> the specified coordinates however when I use:
> Positions=[syst.sites[i].pos for i in range(len(syst.sites))]
> I see that sites definitely exist for z=10 (should be 10.6 but the error
> output seems to round). I was therefore wondering if there is something I am
> missing when it comes to deleting sites and if there is an easy way to
> delete random sites from a 3d sample.
> Thank You,
> Mitchell Greenberg
> From: Joseph Weston <joseph.weston08(a)gmail.com>
> Sent: Wednesday, August 30, 2017 8:33:01 PM
> To: Mitchell Greenberg; kwant-discuss(a)kwant-project.org
> Subject: Re: [Kwant] 2D Current Density Streamplot of 3D System
> Hi Mitchell,
>> Sorry again for the reply, I've had a look at the documentation and it
>> seems that relwidth and abswidth control the size of the arrays. What
>> I'm stuck on though is that my system has L = 80, W = 450 and H =52,
>> I was expecting field to return something of the form (80,450,52,3), I
>> must apologise again, I'm pretty new to all things python so my
>> knowledge in the more complex areas is lacking.
> The input to 'interpolate_current' is a current defined on the hoppings
> of your system. The output is a current defined over a realspace grid.
> First the current defined on the hoppings is convoluted with a bump
> function to smooth it out, then the resulting continuous vector field is
> sampled on a regular grid. The docstring explains how this is done. The
> interpolation grid does not in general coincide with the "grid" of sites
> that form your system. Typically there will be several interpolation
> points between neighboring sites.
> The 'box' returned by 'interpolate_current' allows you to calculate the
> realspace position of the interpolation points.
> Also the modifications to 'interpolate_current' so that it functions
> correctly for 3D systems just landed on the most recent development
> version of kwant .
> Happy Kwanting,
I would like to compute the band structure of a honeycomb lattice with a
periodic field of periodicity d, with *d>a *(*a* the lattice constant).
What I have thought is to impose a translation symmetry to the leads with a
period *d* instead of *a*, as written below. Can kwant do this and is this
the correct way to do it?
sym0 = kwant.TranslationalSymmetry((-d, 0.))
sym1 = kwant.TranslationalSymmetry((d, 0.))
sym0.add_site_family(A, other_vectors=[(-d, 2*d)])
sym0.add_site_family(B, other_vectors=[(-d, 2*d)])
sym1.add_site_family(A, other_vectors=[(-d, 2*d)])
sym1.add_site_family(B, other_vectors=[(-d, 2*d)])
Thank you very much for your attention and for this amazing package!
Dear Kwant developer,
I want to know more about Hoppingkind and tag. Is the tag of a site the order pair (i,j ) in lat(i,j) which is the site considered? This is for two dimension, for three dimension it should be (i,j,k) of lat (I,j,k).
Disclaimer: This email (including any attachments) is for the use of the intended recipient only and may contain confidential information and/or copyright material. If you are not the intended recipient, please notify the sender immediately and delete this email and all copies from your system. Any unauthorized use, disclosure, reproduction, copying, distribution, or other form of unauthorized dissemination of the contents is expressly prohibited.