Error in the calculation of Z2 invariant of Kane-Mele Model
SAYAN MONDAL
mondal18 at iitg.ac.in
Fri Sep 17 08:28:40 CEST 2021
Dear Developer,
I am trying to get the phase diagram of the Kane-Mele model as described in Fig. 1 of (https://doi.org/10.1103/PhysRevLett.95.146802). The Z2 invariant is 1 inside the curve while it vanishes outside. So I tried to get the Z2 invariant for several values of lambda_R and lambda_v. The code is giving correct results for some values of lambda_R and lambda_v, but for some other values it is showing some errors as follows:
WARNING: Iterator stopped before the calculation could converge.
WARNING: Iterator stopped before the calculation could converge.
WARNING: 'min_neighbour_dist' reached: cannot add line at t = 0.6562500000000001
WARNING: Iterator stopped before the calculation could converge.
WARNING: Iterator stopped before the calculation could converge.
WARNING: 'min_neighbour_dist' reached: cannot add line at t = 0.6562500000000001
WARNING: Iterator stopped before the calculation could converge.
WARNING: Iterator stopped before the calculation could converge.
WARNING: 'min_neighbour_dist' reached: cannot add line at t = 0.6562500000000001
My code is attached below:
*************************************
import logging
import z2pack
import numpy as np
from numpy import cos, sin, kron, sqrt
import matplotlib.pyplot as plt
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)
def get_kane_mele_hamiltonian(t, lambda_v, lambda_R, lambda_SO):
def inner(k):
k = np.array(k) * 2 * np.pi
kx, ky = k
# change to reduced coordinates
x = (kx - ky) / 2
y = (kx + ky) / 2
return (
t * (1 + 2 * cos(x) * cos(y)) * kron(pauli_x, identity) +
lambda_v * kron(pauli_z, identity) + lambda_R *
(1 - cos(x) * cos(y)) * kron(pauli_y, pauli_x) +
-sqrt(3) * lambda_R * sin(x) * sin(y) * kron(pauli_y, pauli_y) +
2 * t * cos(x) * sin(y) * kron(pauli_y, identity) + lambda_SO *
(2 * sin(2 * x) - 4 * sin(x) * cos(y)) * kron(pauli_z, pauli_z) +
lambda_R * cos(x) * sin(y) * kron(pauli_x, pauli_x) +
-sqrt(3) * lambda_R * sin(x) * cos(y) * kron(pauli_x, pauli_y)
)
return inner
if __name__ == '__main__':
arr = []
lambda_R_list = np.linspace(0, 0.31, 20)
lambda_v_list = np.linspace(0, 0.24, 20)
for lR in lambda_R_list:
for lv in lambda_v_list:
system = z2pack.hm.System(
get_kane_mele_hamiltonian(
t=1, lambda_v = lv, lambda_R=lR, lambda_SO=0.06
),
dim=2,
check_periodic=True
)
res = z2pack.surface.run(system=system, surface=lambda s, t: [s / 2, t])
# print('Z2 invariant: {}'.format(z2pack.invariant.z2(res)))
val = z2pack.invariant.z2(res)
arr.append([lR, lv, val])
arr = np.asarray(arr)
np.savetxt('pd.txt', arr)
print(arr)
# z2pack.plot.wcc(res, axis=ax)
# ax.set_xticks([0, 1])
# ax.set_xticklabels(['0', '0.5'])
# ax.set_xlabel(r'$k_y$')
# ax.set_yticks([0, 1])
# ax.set_ylabel(r'$\bar{y}$', rotation='horizontal')
# plt.savefig('plot.pdf', bbox_inches='tight')
**************************************************
Is there any way to correct those errors? I shall look forward to your kind cooperation.
Thank you
Best Regards,
Sayan Mondal,
Research Scholar,
Dept. of Physics,
Roll No. - 186121022,
E-mail: mondal18 at iitg.ac.in
Indian Institute of Technology Guwahati
Guwahati - 781039
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.phys.ethz.ch/pipermail/z2pack/attachments/20210917/6c06dd6d/attachment.html>
More information about the Z2Pack
mailing list