Update Wilson_loop_in_SSH_model.py

This commit is contained in:
guanjihuan 2021-12-01 04:40:01 +08:00
parent 2fae22b69a
commit 6eaa64c378

View File

@ -29,13 +29,21 @@ def main():
# vector_array.append(vector*cmath.exp(1j*np.random.uniform(0, pi))) # vector_array.append(vector*cmath.exp(1j*np.random.uniform(0, pi)))
# 波函数固定一个规范 # 波函数固定一个规范
vector_sum = 0
for i0 in range(Num_k): for i0 in range(Num_k):
vector_array[i0] = find_vector_with_fixed_gauge_by_making_one_component_real(vector_array[i0]) vector_sum += np.abs(vector_array[i0])
index = np.argmax(np.abs(vector_sum))
for i0 in range(Num_k):
vector_array[i0] = find_vector_with_fixed_gauge_by_making_one_component_real(vector_array[i0], index=index)
# 波函数固定一个规范 # # 波函数固定一个规范
# import guan # import guan
# vector_sum = 0
# for i0 in range(Num_k): # for i0 in range(Num_k):
# vector_array[i0] = guan.find_vector_with_fixed_gauge_by_making_one_component_real(vector_array[i0]) # vector_sum += np.abs(vector_array[i0])
# index = np.argmax(np.abs(vector_sum))
# for i0 in range(Num_k):
# vector_array[i0] = guan.find_vector_with_fixed_gauge_by_making_one_component_real(vector_array[i0], index=index)
# 计算Wilson loop # 计算Wilson loop
W_k = 1 W_k = 1
@ -55,10 +63,11 @@ def get_occupied_bands_vectors(x, matrix):
return vector return vector
def find_vector_with_fixed_gauge_by_making_one_component_real(vector, precision=0.005): def find_vector_with_fixed_gauge_by_making_one_component_real(vector, precision=0.005, index=None):
if index == None:
index = np.argmax(np.abs(vector)) index = np.argmax(np.abs(vector))
sign_pre = np.sign(np.imag(vector[index])) sign_pre = np.sign(np.imag(vector[index]))
for phase in np.arange(0, 2*pi, precision): for phase in np.arange(0, 2*np.pi, precision):
sign = np.sign(np.imag(vector[index]*cmath.exp(1j*phase))) sign = np.sign(np.imag(vector[index]*cmath.exp(1j*phase)))
if np.abs(np.imag(vector[index]*cmath.exp(1j*phase))) < 1e-9 or sign == -sign_pre: if np.abs(np.imag(vector[index]*cmath.exp(1j*phase))) < 1e-9 or sign == -sign_pre:
break break