Dear Sajad,

Getting the number of sites in the central system is easy in kwant.
sysf= syst.finalized()
Sites= list(sysf.sites)   #list of all the sites in the scattering region
number_of_sites=len(Sites).

Getting the Hamiltonian of the central system is also straightforward:
H=sysf.hamiltonian_submatrix()

I want just to stress that the eigenvalues of this Hamiltonian have nothing
to do with the band structure. In fact, to get the band structure, you need
the hamiltonian H0 of the unit cell in the lead and the hopping matrix V
between two unit cells. With the help of the Bloch theorem, the band can be
obtained by diagonalizing:
  H0+V*exp(+ik)+V^\dagger *exp(-ik)  for all your k points.

ps: (H and H0 may be different depending on how you define your system!)
I hope this helps.
Adel

On Sat, Nov 23, 2019 at 1:09 AM Saj.ZiaBorujeni <
saj.ziaborujeni....@iauctb.ac.ir> wrote:

> Dear Joseph Weston,
>
> yes you are right.
>
> "I am trying to create a system with translational symmetry, and that each
> Kwant *site* corresponds to a single atom."
>
> We know according to the nanoribbon, we have a scattering region that is
> attached to the leads.  I want to find the number of kwant site (which I
> mentioned as atom) in the scattering region (which I mentioned as unit
> cell).
>
> Please look at the following example for the graphene nanoribbon:
>
> import kwant
> from math import sqrt
> import matplotlib.pyplot as plt
> import tinyarray
> import numpy as np
> import math
> import cmath
>
> import matplotlib
> d=1.42;
> a1=d*math.sqrt(3)
> t=-3.033;
>
> latt = kwant.lattice.general([(a1,0),(a1*0.5,a1*math.sqrt(3)/2)],
>                              [(a1/2,-d/2),(a1/2,d/2)])
> a,b = latt.sublattices
> syst= kwant.Builder()
>
>
> #...................................................................................
> def rectangle(pos):
>     x, y = pos
>     z=x**2+y**2
>     return -2.9*a1<x<2.9*a1 and -7.5*d<y<7.5*d
>
> syst[latt.shape(rectangle, (1,1))]=0
>
>
> syst[[kwant.builder.HoppingKind((0,0),a,b)]] =t
> syst[[kwant.builder.HoppingKind((0,1),a,b)]] =t
> syst[[kwant.builder.HoppingKind((-1,1),a,b)]] =t
>
> ax=kwant.plot(syst);
>
> sym = kwant.TranslationalSymmetry(latt.vec((-5,0)))
> sym.add_site_family(latt.sublattices[0], other_vectors=[(-1, 2)])
> sym.add_site_family(latt.sublattices[1], other_vectors=[(-1, 2)])
>
> lead = kwant.Builder(sym)
>
> def lead_shape(pos):
>     x, y = pos
>     return   -7.5*d<y<7.5*d
>
> lead[latt.shape(lead_shape, (1,1))] = 0
>
> lead[[kwant.builder.HoppingKind((0,0),a,b)]] =t
> lead[[kwant.builder.HoppingKind((0,1),a,b)]] =t
> lead[[kwant.builder.HoppingKind((-1,1),a,b)]] =t
>
> syst.attach_lead(lead,add_cells=0)
> syst.attach_lead(lead.reversed(),add_cells=0)
> ax=kwant.plot(syst);
>
> def plot_bands(syst):
>     fsys = syst.finalized()
>
>     plt.figure()
>     kwant.plotter.bands(fsys.leads[0], args=(dict(gamma=1., ep=0.),))
>     plt.xlabel("K")
>     plt.ylabel("band structure (eV)")
>     plt.ylim((-4.0,4.0))
>     plt.show()
> plot_bands(syst)
>
> Here we have a main region such that the whole system can be made by
> repeating this region. I want to know the number of site in the main region.
>
> "It is not 100% clear to me what you want when you say "the eigenvectors
> and eigenvalue" of your Hamiltonian; if your system has translational
> symmetry then presumably you want the eigen-decomposition *at a given
> quasi-momentum*, but you do not explicitly state this, so I am not sure."
>
> When we plot the band structure, we have a Hamiltonian (the dimension is
> N*N) in terms of K point. So, we have N eigenvalues for each K point. How
> we can find these eigenvalues for each K point. How is it shown in Kwant?
> Would you please help me.
>
> Best,
>
> Sajad
>
>
>
> *From: *"Joseph Weston" <joseph.westo...@gmail.com>
>
> *To: *"Saj.ZiaBorujeni" <saj.ziaborujeni....@iauctb.ac.ir>,
> kwant-discuss@kwant-project.org
> *Sent: *Thursday, Aban 30, 1398 3:59:57 PM
> *Subject: *Re: [Kwant] Access to eigenvalue, eigenvector and number of
> points in each unit cell
>
>
>
>
>
> Hi Sajad,
>
>
>
> Dear all,
>
> I need to access to the number of atoms of my unit cell, the eigenvalue
> and eigenvectors for each eigenvalue  of my Hamiltonian.
>
> Is there any one to help me and let me know if it is possible in kwan to
> access them.
>
>
>
> Could you post a short code example showing what you are doing? You refer
> to "atoms" and "unit cell", so I presume that you are trying to create a
> system with translational symmetry, and that each Kwant *site* corresponds
> to a single atom.
>
>
>
> It is not 100% clear to me what you want when you say "the eigenvectors
> and eigenvalue" of your Hamiltonian; if your system has translational
> symmetry then presumably you want the eigen-decomposition *at a given
> quasi-momentum*, but you do not explicitly state this, so I am not sure.
>
>
>
> Posting a complete code example is useful because it is more precise than
> describing your problem with words.
>
>
>
> Happy Kwanting,
>
>
>
> Joe
>


-- 
Abbout Adel

Reply via email to