Help regarding chern number calculation

Dominik Gresch greschd at phys.ethz.ch
Sat Jun 1 14:52:09 CEST 2019


Dear Priyanka,


The reason for this problem could be the fact that the Hamiltonian is 
not periodic across the Brillouin zone. As such, the Chern number is not 
well-defined (because the wave functions do not form a smooth fiber bundle).


Not having studied the reference in detail, I believe the reason for 
this is that the Hamiltonian of eq. (14) is expanded only around a 
single point, whereas you would need a Hamiltonian which extends 
correctly across the BZ to compute the Chern number.


Best regards,

Dominik


On 31.05.19 16:41, MS. PRIYANKA SINHA wrote:
>
> Dear Sir,
>
>                 I am a new user of z2 pack and trying to calculate 
> chern number following the journal 
> https://journals.aps.org/prb/pdf/10.1103/PhysRevB.85.115439 
> <https://journals.aps.org/prb/pdf/10.1103/PhysRevB.85.115439> . I have 
> defined the Hamiltonian as given in equation 14. I should get non-zero 
> chern number. But instead of that I am getting zero. I am attaching my 
> code below. Kindly help me in this regard.
>
>
>
> *********************************************************************
>
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
> #
> # Author:  Dominik Gresch <greschd at gmx.ch>
> # Date:    16.08.2016 14:25:39 CEST
> # File:    haldane.py
>
> import json
> import logging
>
> import z2pack
> import numpy as np
> import matplotlib.pyplot as plt
> from numpy import linalg as LA
>
> logging.getLogger('z2pack').setLevel(logging.WARNING)
>
> # defining pauli matrices
> identity = np.identity(2, dtype=complex)
> pauli_x = np.array([[0, 1], [1, 0]], dtype=complex)
> pauli_y = np.array([[0, -1j], [1j, 0]], dtype=complex)
> pauli_z = np.array([[1, 0], [0, -1]], dtype=complex)
> Sx= 1./2. * np.array([[0, 1], [1, 0]], dtype=complex)
> Sy= 1./2. * np.array([[0, -1j], [1j, 0]], dtype=complex)
> Sz= 1./2. * np.array([[1, 0], [0, -1]], dtype=complex)
>
> def Hamilton(k, m, t1, VR):
>     kx, ky,_= k
>     H  = (3. *t1 /2. * (  pauli_x * kx + pauli_y * ky)) * identity
>     H += (3. *t1 /2. * (- pauli_x * kx + pauli_y * ky)) * identity
>     H +=  3. *VR /2. * (  pauli_x * Sy - pauli_y * Sx)
>     H += 3. *VR /2. *  (- pauli_x * Sy - pauli_y * Sx)
>     #H3 = n * 3. *sqrt3 * t2 * pauli_z *Sz
>     H += (m * Sz) * identity
>     #H5 = u * pauli_z * identity
>     return H
>
>
> def get_chern( m, t1, VR, **settings):
>     system = z2pack.hm.System(lambda k: Hamilton(k, m, t1, VR), bands=1)
>
>     result = z2pack.surface.run(system=system, surface=lambda t1, t2: 
> [t1, t2, 1], **settings)
>     return z2pack.invariant.chern(result)
>
>
> if __name__ == "__main__":
>     # Task a)
>     print(get_chern(0.3, 1., 0.5 ))
>     #print(get_chern(0.5, 1., 1. / 3., -0.5 * np.pi))
>     #print(Hamilton(0.1, 1, 0.3,0.5))
> ********************************************************************
>
> Thanking You,
> Priyanka Sinha
> IIT Guwahati
> Research Scholar
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.phys.ethz.ch/pipermail/z2pack/attachments/20190601/a00916da/attachment.html>


More information about the Z2Pack mailing list