Re: [Kwant] [KWANT] Diagonalization of hamiltonian

2019-04-29 Thread Joseph Weston
Hi,


> Dear Joe,
> I just want to plot the Landau levels of the edge states without
> taking into account the spin of particle for the thin slab with Wx =10
> and Wy = 50. Here Wx and Wy are the width of slab in x and y direction
> and magnetic field is along x direction. And kz is a continuous
> function of Energy. 
> For more detail to this context, please take a look at the attached
> pdf  fig. (7)
>
>
>
> > I want to diagonalize the model hamiltonian containing sine and
> cosine
> > functions with momentum operators as their argument.
> >
> > H(k) = tx*σx* sin kx + ty*σy*sin ky + mk*σz + λ*σ0 *sin kz,
> >
> > mk = tz(cos β − cos kz) + t'(2 − cos kx − cos ky)
>

So what you actually want to do is discretize this Hamiltonian in the x
and y directions, and then diagonalize the discretized Hamiltonian as a
function of the remaining k_z parameter.

You can discretize this Hamiltonian by identifying the different terms
with onsites and hoppings. Start by writing the terms involving kx and
ky as exponentials, then factor out the terms multiplying exp(ikx) and
exp(iky) (and their Hermitian conjugates), and the remaining terms (with
no exponential). The onsite for your discretized model is the sum of
terms with no exponential, hopping in x direction is the term
multiplying exp(ikx) and hopping in y direction is the term multiplying
exp(iky).

At a glance it seems that you will end up with an onsite that depends on
kz, and that the hoppings will be independent of kz.

Then once you've identified the onsite and hopping terms, use Kwant to
make a finite slab with the onsites and hoppings you derived, then get
the Hamiltonian as a function of kz using 'syst.hamiltonian_submatrix'
and diagonalize it to get the bands.

Hope that helps.

Happy Kwanting,

Joe



signature.asc
Description: OpenPGP digital signature


Re: [Kwant] [KWANT] Diagonalization of hamiltonian

2019-04-29 Thread Naveen Yadav
Dear Joe,

I have build the system(discretized in x and y direction). The actual
problem is that, " How to add magnetic field term(as given by the auther
l_m = 4.5) to this system?" These bands are in presence of magnetic field.













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

On Mon, Apr 29, 2019, 15:20 Joseph Weston  wrote:

> Hi,
>
>
> Dear Joe,
> I just want to plot the Landau levels of the edge states without taking
> into account the spin of particle for the thin slab with Wx =10 and Wy =
> 50. Here Wx and Wy are the width of slab in x and y direction and magnetic
> field is along x direction. And kz is a continuous function of Energy.
> For more detail to this context, please take a look at the attached pdf
> fig. (7)
>
>
>
>> > I want to diagonalize the model hamiltonian containing sine and cosine
>> > functions with momentum operators as their argument.
>> >
>> > H(k) = tx*σx* sin kx + ty*σy*sin ky + mk*σz + λ*σ0 *sin kz,
>> >
>> > mk = tz(cos β − cos kz) + t'(2 − cos kx − cos ky)
>
>
> So what you actually want to do is discretize this Hamiltonian in the x
> and y directions, and then diagonalize the discretized Hamiltonian as a
> function of the remaining k_z parameter.
>
> You can discretize this Hamiltonian by identifying the different terms
> with onsites and hoppings. Start by writing the terms involving kx and ky
> as exponentials, then factor out the terms multiplying exp(ikx) and
> exp(iky) (and their Hermitian conjugates), and the remaining terms (with no
> exponential). The onsite for your discretized model is the sum of terms
> with no exponential, hopping in x direction is the term multiplying
> exp(ikx) and hopping in y direction is the term multiplying exp(iky).
>
> At a glance it seems that you will end up with an onsite that depends on
> kz, and that the hoppings will be independent of kz.
>
> Then once you've identified the onsite and hopping terms, use Kwant to
> make a finite slab with the onsites and hoppings you derived, then get the
> Hamiltonian as a function of kz using 'syst.hamiltonian_submatrix' and
> diagonalize it to get the bands.
>
> Hope that helps.
>
> Happy Kwanting,
>
> Joe
>


Re: [Kwant] [KWANT] Diagonalization of hamiltonian

2019-04-29 Thread Joseph Weston

>
> I have build the system(discretized in x and y direction). The actual
> problem is that, " How to add magnetic field term(as given by the
> auther l_m = 4.5) to this system?" These bands are in presence of
> magnetic field.


Well you'll have to look in the paper to answer that question; you're in
a better position to answer that than me. Maybe a Peierls phase?




signature.asc
Description: OpenPGP digital signature


Re: [Kwant] [KWANT] Diagonalization of hamiltonian

2019-04-29 Thread Naveen Yadav
Thank you so much for your time.

I will try it.













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

On Mon, Apr 29, 2019, 16:32 Joseph Weston  wrote:

>
> >
> > I have build the system(discretized in x and y direction). The actual
> > problem is that, " How to add magnetic field term(as given by the
> > auther l_m = 4.5) to this system?" These bands are in presence of
> > magnetic field.
>
>
> Well you'll have to look in the paper to answer that question; you're in
> a better position to answer that than me. Maybe a Peierls phase?
>
>
>


Re: [Kwant] Regarding the NNN term in bilayer graphene across the layer

2019-04-29 Thread MS. PRIYANKA SINHA
Dear Sir,

  I was trying to find out the hopping kinds for the 
NNN term using the following program. But I am having some unusual hopping as 
mentioned below when I print those. The program is attached below.



(1)   If I print the nearest neighbor it seems quite okay.


Nearest neighbors:
HoppingKind([0 1 0], a1, b1)
HoppingKind([0 0 0], a1, b1)
HoppingKind([-1 1 0], a1, b1)
HoppingKind([0 1 0], a2, b2)
HoppingKind([0 0 0], a2, b2)
HoppingKind([-1 1 0], a2, b2)


(2) If I print the next nearest neighbor it seems to me not okay.


 Next-nearest neighbors:
HoppingKind([1 0 0], a1, a1)
HoppingKind([1 -1 0], a1, a1)
HoppingKind([0 1 0], a1, a1)
HoppingKind([0 1 1], a1, b2)   is a1 and b2 next nearest neighbor? 
We are considering AB stacking (in which a1 and b2 should be top on each other, 
if i am not making any mistake.)
HoppingKind([0 1 0], a1, b2)
HoppingKind([1 0 0], b1, b1)
HoppingKind([1 -1 0], b1, b1)
HoppingKind([0 1 0], b1, b1)
HoppingKind([1 0 0], a2, a2)
HoppingKind([1 -1 0], a2, a2)
HoppingKind([0 1 0], a2, a2)
HoppingKind([1 0 0], b2, b2)
HoppingKind([1 -1 0], b2, b2)
HoppingKind([0 1 0], b2, b2)




3)  If I print next nearest neighbor _interlayer ( where i want only hopping 
between a1 and a2, b1 and b2)

Next-nearest neighbors_interlayer:
HoppingKind([1 0 0], a1, b1)   a1 and b1 are nearest 
neighbor.
HoppingKind([-1 2 0], a1, b1) --- same
HoppingKind([-1 0 0], a1, b1) --- same
HoppingKind([1 0 1], a1, a2)  a1 and a2 is okay
HoppingKind([1 0 0], a1, a2)
HoppingKind([0 1 1], a1, a2)
HoppingKind([0 1 0], a1, a2)
HoppingKind([0 0 1], a1, a2)
HoppingKind([0 0 0], a1, a2)
HoppingKind([1 0 1], b1, a2)
HoppingKind([1 0 0], b1, a2)
HoppingKind([1 -1 1], b1, a2)
HoppingKind([1 -1 0], b1, a2)
HoppingKind([0 0 1], b1, a2)
HoppingKind([0 0 0], b1, a2)
HoppingKind([1 0 1], b1, b2)
HoppingKind([1 0 0], b1, b2)
HoppingKind([0 1 1], b1, b2)
HoppingKind([0 1 0], b1, b2)
HoppingKind([0 0 1], b1, b2)
HoppingKind([0 0 0], b1, b2)
HoppingKind([1 0 0], a2, b2) - a2 and b2  are nearest 
neighbor
HoppingKind([-1 2 0], a2, b2)- same
HoppingKind([-1 0 0], a2, b2)

My concern is If I print NNN terms with lat.neighbor (3) why I am getting a1, 
b1 and a2,b2 and also  b1,a2. Can I use this program to find the correct 
hoppings for bilayer graphene?


Thanks in advance.


Sincerely Yours,

Priyanka Sinha





From: Joseph Weston 
Sent: Saturday, April 27, 2019 11:34:50 PM
To: MS. PRIYANKA SINHA; kwant-discuss@kwant-project.org
Subject: Re: [Kwant] Regarding the NNN term in bilayer graphene across the layer



  I have constructed the lattice with third dimension Z0 using 
kwant.lattice.general. As the system is giving a 3d plot, I am unable to 
visualize the hopping between nearest neighbors and so on which make me 
confused whether the hopping kind I had given is right or wrong. Is there any 
way to visualize those hoppings in the 3d plot (as we can see in the 2d plot).


Ah, that's a good point. Perhaps you could make the 2 lattices in 2D but put an 
offset in the x-y positions of the sites in one of the layers of the bilayer. 
This way you can still visualize the hoppings using kwant.plot and the sites 
occupy distinct positions in space. Because we are limited by matplotlib's poor 
3D rendering we cannot display the hoppings in 3D plots.


Happy Kwanting,


Joe
from __future__ import division  # so that 1/2 == 0.5, and not 0
import math
from math import pi, sqrt, tanh,sin,cos
from cmath import exp
import numpy as np

from numpy import linspace
import kwant
from kwant.digest import gauss
import scipy.sparse.linalg as sla
from matplotlib import pyplot
import tinyarray as ta


## Pauli matrices ##
sigma_0 = np.array([[1, 0], [0, 1]])  # identity
sigma_x = np.array([[0, 1], [1, 0]])
sigma_y = np.array([[0, -1j], [1j, 0]])
sigma_z = np.array([[1, 0], [0, -1]])


#lattice parameter
sin_30, cos_30 = (1 / 2, sqrt(3) / 2)

z0=1
#d_ij=1 
lat =kwant.lattice.general([(1,0,0),(sin_30,cos_30,0),(0,0,2*z0)],[(0,0,0),(0,1/sqrt(3),0),(1/2,1/(2*sqrt(3)),z0),(1/2,sqrt(3)/2,z0)], ['a1', 'b1', 'a2', 'b2'])
a1, b1, a2, b2 = lat.sublattices

def site_color(site):
if site.family.name[0] == 'a1':
return 'green'
elif site.family.name == 'a2':
return 'red'
elif site.family.name == 'b1':
return 'yellow'
else:
return 'blue'

def onsite(site, ep):
return ep * sigma_0

def hop_lw(site1, site2):
return 0.01 if site1.family == site2.family else 0.05
'''
def hop_lw(site2, site1):
r = site1.pos - site2.pos
return .01/ta.dot(r, r)
'''
def print_hop_kind(hop_kind):
print ('HoppingKind(' + hop_kind.delta.__str__() + ', ' +
hop_kind.family_a.name + ', ' + hop_kind.family_b.name +')')

print ('Nearest neighbors:')
for i in lat.neighbors(1):
print_hop_kind(i)


print ('