Re: [Kwant] [KWANT] Diagonalization of hamiltonian
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
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
> > 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
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
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 ('