From 79ba6a5c4c3f9bb7128b84850e0b4b291b303393 Mon Sep 17 00:00:00 2001 From: guanjihuan Date: Tue, 12 Jul 2022 23:23:26 +0800 Subject: [PATCH] update --- ...ixed_gauge_by_making_one_component_real.py | 48 ++++++++++++ .../example_rotation_of_degenerate_vectors.py | 78 +++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 academic_codes/2022.07.12_gauge_fixing/example_find_vector_with_fixed_gauge_by_making_one_component_real.py create mode 100644 academic_codes/2022.07.12_gauge_fixing/example_rotation_of_degenerate_vectors.py diff --git a/academic_codes/2022.07.12_gauge_fixing/example_find_vector_with_fixed_gauge_by_making_one_component_real.py b/academic_codes/2022.07.12_gauge_fixing/example_find_vector_with_fixed_gauge_by_making_one_component_real.py new file mode 100644 index 0000000..4931713 --- /dev/null +++ b/academic_codes/2022.07.12_gauge_fixing/example_find_vector_with_fixed_gauge_by_making_one_component_real.py @@ -0,0 +1,48 @@ +""" +This code is supported by the website: https://www.guanjihuan.com +The newest version of this code is on the web page: https://www.guanjihuan.com/archives/22604 +""" + + +import numpy as np +import cmath + +def find_vector_with_fixed_gauge_by_making_one_component_real(vector, precision=0.005, index=None): + vector = np.array(vector) + if index == None: + index = np.argmax(np.abs(vector)) + sign_pre = np.sign(np.imag(vector[index])) + for phase in np.arange(0, 2*np.pi, precision): + 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: + break + sign_pre = sign + vector = vector*cmath.exp(1j*phase) + if np.real(vector[index]) < 0: + vector = -vector + return vector + +vector_1 = np.array([np.sqrt(0.5), np.sqrt(0.5)])*cmath.exp(np.random.uniform(0, 1)*1j) +vector_2 = np.array([1, 0])*cmath.exp(np.random.uniform(0, 1)*1j) + +print('\n随机规范的原向量:', vector_1) +vector_1 = find_vector_with_fixed_gauge_by_making_one_component_real(vector_1, precision=0.001) +print('固定规范后的向量:', vector_1) + +print('\n随机规范的原向量:', vector_2) +vector_2 = find_vector_with_fixed_gauge_by_making_one_component_real(vector_2, precision=0.001) +print('固定规范后的向量:', vector_2) + + +# # 可直接使用Guan软件包来调用以上函数:https://py.guanjihuan.com。 +# # 安装命令:pip install --upgrade guan。 + +# import guan + +# print('\n随机规范的原向量:', vector_1) +# vector_1 = guan.find_vector_with_fixed_gauge_by_making_one_component_real(vector_1, precision=0.001) +# print('固定规范后的向量:', vector_1) + +# print('\n随机规范的原向量:', vector_2) +# vector_2 = guan.find_vector_with_fixed_gauge_by_making_one_component_real(vector_2, precision=0.001) +# print('固定规范后的向量:', vector_2) \ No newline at end of file diff --git a/academic_codes/2022.07.12_gauge_fixing/example_rotation_of_degenerate_vectors.py b/academic_codes/2022.07.12_gauge_fixing/example_rotation_of_degenerate_vectors.py new file mode 100644 index 0000000..16cc694 --- /dev/null +++ b/academic_codes/2022.07.12_gauge_fixing/example_rotation_of_degenerate_vectors.py @@ -0,0 +1,78 @@ +""" +This code is supported by the website: https://www.guanjihuan.com +The newest version of this code is on the web page: https://www.guanjihuan.com/archives/22604 +""" + +import numpy as np +import math +import cmath +# from numba import jit + +# @jit +def rotation_of_degenerate_vectors(vector1, vector2, index1=None, index2=None, precision=0.01, criterion=0.01, show_theta=0): + vector1 = np.array(vector1) + vector2 = np.array(vector2) + if index1 == None: + index1 = np.argmax(np.abs(vector1)) + if index2 == None: + index2 = np.argmax(np.abs(vector2)) + if np.abs(vector1[index2])>criterion or np.abs(vector2[index1])>criterion: + for theta in np.arange(0, 2*math.pi, precision): + if show_theta==1: + print(theta) + for phi1 in np.arange(0, 2*math.pi, precision): + for phi2 in np.arange(0, 2*math.pi, precision): + vector1_test = cmath.exp(1j*phi1)*vector1*math.cos(theta)+cmath.exp(1j*phi2)*vector2*math.sin(theta) + vector2_test = -cmath.exp(-1j*phi2)*vector1*math.sin(theta)+cmath.exp(-1j*phi1)*vector2*math.cos(theta) + if np.abs(vector1_test[index2])