Berry flux over BZ
See original GitHub issueThis is not much code related but it would serve as a nice example.
I’m trying to compute the Chern number for the Haldane model using the new feature that computes the berry flux and berry phase.
I’m setting up the model as:
graphene = sisl.geom.graphene(0.5774)
H = Hamiltonian(graphene,dtype=np.complex128)
delta=-0.2
t=-1.0
t2 =0.15*np.exp((1.j)*np.pi/2.)
t2c=t2.conjugate()
r = (0.1, 0.6)
t = (-delta , t )
H.construct([r, t])
H[1,1] = delta
H[0,0,(1,0)] = t2
H[1,1,(1,-1)] = t2
H[1,1,(0,1)] = t2
H[1,1,(1,0)] = t2c
H[0,0,(1,-1)] = t2c
H[0,0,(0,1)] = t2c
The bandstructure seems ok:
band = BandStructure(H, [[0.,0.],[2./3.,1./3.],[.5,0.5],[1./3.,2./3.], [0.,0.]], 400, [r'$\Gamma $',r'$K$', r'$M$', r'$K^\prime$', r'$\Gamma $'])
bs = band.asarray().eigh()
lk, kt, kl = band.lineark(True)
plt.xticks(kt, kl)
plt.xlim(0, lk[-1])
plt.ylim([-2.5, 2.5])
plt.ylabel(r'$E-\epsilon_F$ (eV)')
for bk in bs.T:
plt.plot(lk, bk)
Now, for the berry flux, I’m doing:
nk = 24
kpts = np.linspace(-0.5,.5,nk,endpoint=False)
flux_lower_xy = np.zeros((len(kpts),len(kpts)))
for ki in range(len(kpts)):
for kj in range(len(kpts)):
origo = [kpts[ki], kpts[kj], 0.]
flux_lower_xy[ki,kj] = H.eigenstate(k=origo).berry_flux()[0][0,1]
were the first index selects the lower band, and the last two the xy element.
And integrating it like:
simps([simps(flux_lower_xy[ki,:],kpts) for ki in range(len(kpts))],kpts)/(2*np.pi)
which should result in an integer. I’m obtaining something around 0.02 .
The model setup is ok ? And the berry flux part ?
Hoppings and berry flux/berry phase may be found here
Also, is there some way to open the boundary conditions (BC) of a periodic model (similar to the cut_piece of pythTB)?
Thanks in advance, any help is appreciated.
Version details 3.7.4 (default, Aug 13 2019, 20:35:49) [GCC 7.3.0] 0.9.8 13a327bd8e27d689f119bafdf38519bab7f6e0f6
Issue Analytics
- State:
- Created 3 years ago
- Comments:13 (7 by maintainers)
I don’t mind at all. And thank you again
@bfocassio I am going to re-open.
Then I will remember to make a small tutorial about (if you don’t mind me using your supplied codes?)
😃