From 7aea8b3cef0f640a5135aa40f00a31b99572e747 Mon Sep 17 00:00:00 2001 From: guanjihuan Date: Wed, 18 May 2022 19:14:48 +0800 Subject: [PATCH] 0.0.88 --- PyPI/setup.cfg | 2 +- PyPI/src/guan/__init__.py | 69 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/PyPI/setup.cfg b/PyPI/setup.cfg index affb6b7..bc7147b 100644 --- a/PyPI/setup.cfg +++ b/PyPI/setup.cfg @@ -1,7 +1,7 @@ [metadata] # replace with your username: name = guan -version = 0.0.87 +version = 0.0.88 author = guanjihuan author_email = guanjihuan@163.com description = An open source python package diff --git a/PyPI/src/guan/__init__.py b/PyPI/src/guan/__init__.py index 6bf37af..85f1659 100644 --- a/PyPI/src/guan/__init__.py +++ b/PyPI/src/guan/__init__.py @@ -115,7 +115,11 @@ hopping = guan.get_hopping_term_of_graphene_ribbon_along_zigzag_direction(N, eta hamiltonian = guan.hamiltonian_of_finite_size_system_along_two_directions_for_graphene(N1, N2, period_1=0, period_2=0) -H0, H1, H2 = get_onsite_and_hopping_terms_of_BHZ_model(A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01, a=1) +H0, H1, H2 = guan.get_onsite_and_hopping_terms_of_BHZ_model(A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01, a=1) + +H0, H1, H2 = guan.get_onsite_and_hopping_terms_of_half_BHZ_model_for_spin_up(A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01, a=1) + +H0, H1, H2 = guan.get_onsite_and_hopping_terms_of_half_BHZ_model_for_spin_down(A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01, a=1) @@ -141,6 +145,8 @@ hamiltonian = guan.hamiltonian_of_haldane_model_in_quasi_one_dimension(k, N=10, hamiltonian = guan.hamiltonian_of_one_QAH_model(k1, k2, t1=1, t2=1, t3=0.5, m=-1) +hamiltonian = guan.hamiltonian_of_BHZ_model(kx, ky, A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01) + hamiltonian = guan.hamiltonian_of_half_BHZ_model_for_spin_up(kx, ky, A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01) hamiltonian = guan.hamiltonian_of_half_BHZ_model_for_spin_down(kx, ky, A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01) @@ -682,6 +688,50 @@ def get_onsite_and_hopping_terms_of_BHZ_model(A=0.3645/5, B=-0.686/25, C=0, D=-0 H2[3, 2] = -1j*V_sp return H0, H1, H2 +def get_onsite_and_hopping_terms_of_half_BHZ_model_for_spin_up(A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01, a=1): + E_s = C+M-4*(D+B)/(a**2) + E_p = C-M-4*(D-B)/(a**2) + V_ss = (D+B)/(a**2) + V_pp = (D-B)/(a**2) + V_sp = -1j*A/(2*a) + H0 = np.zeros((2, 2), dtype=complex) + H1 = np.zeros((2, 2), dtype=complex) + H2 = np.zeros((2, 2), dtype=complex) + H0[0, 0] = E_s + H0[1, 1] = E_p + H1[0, 0] = V_ss + H1[1, 1] = V_pp + H1[0, 1] = V_sp + H1[1, 0] = -np.conj(V_sp) + H2[0, 0] = V_ss + H2[1, 1] = V_pp + H2[0, 1] = 1j*V_sp + H2[1, 0] = 1j*np.conj(V_sp) + return H0, H1, H2 + +def get_onsite_and_hopping_terms_of_half_BHZ_model_for_spin_down(A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01, a=1): + E_s = C+M-4*(D+B)/(a**2) + E_p = C-M-4*(D-B)/(a**2) + V_ss = (D+B)/(a**2) + V_pp = (D-B)/(a**2) + V_sp = -1j*A/(2*a) + H0 = np.zeros((2, 2), dtype=complex) + H1 = np.zeros((2, 2), dtype=complex) + H2 = np.zeros((2, 2), dtype=complex) + H0[0, 0] = E_s + H0[1, 1] = E_p + H1[0, 0] = V_ss + H1[1, 1] = V_pp + H1[0, 1] = np.conj(V_sp) + H1[1, 0] = -V_sp + H2[0, 0] = V_ss + H2[1, 1] = V_pp + H2[0, 1] = -1j*np.conj(V_sp) + H2[1, 0] = -1j*V_sp + return H0, H1, H2 + + + @@ -817,6 +867,21 @@ def hamiltonian_of_one_QAH_model(k1, k2, t1=1, t2=1, t3=0.5, m=-1): hamiltonian[1, 1] = -(m+2*t3*math.sin(k1)+2*t3*math.sin(k2)+2*t2*math.cos(k1+k2)) return hamiltonian +def hamiltonian_of_BHZ_model(kx, ky, A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01): + hamiltonian = np.zeros((4, 4), dtype=complex) + varepsilon = C-2*D*(2-math.cos(kx)-math.cos(ky)) + d3 = -2*B*(2-(M/2/B)-math.cos(kx)-math.cos(ky)) + d1_d2 = A*(math.sin(kx)+1j*math.sin(ky)) + hamiltonian[0, 0] = varepsilon+d3 + hamiltonian[1, 1] = varepsilon-d3 + hamiltonian[0, 1] = np.conj(d1_d2) + hamiltonian[1, 0] = d1_d2 + hamiltonian[2, 2] = varepsilon+d3 + hamiltonian[3, 3] = varepsilon-d3 + hamiltonian[2, 3] = -d1_d2 + hamiltonian[3, 2] = -np.conj(d1_d2) + return hamiltonian + def hamiltonian_of_half_BHZ_model_for_spin_up(kx, ky, A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01): hamiltonian = np.zeros((2, 2), dtype=complex) varepsilon = C-2*D*(2-math.cos(kx)-math.cos(ky)) @@ -825,7 +890,7 @@ def hamiltonian_of_half_BHZ_model_for_spin_up(kx, ky, A=0.3645/5, B=-0.686/25, C hamiltonian[0, 0] = varepsilon+d3 hamiltonian[1, 1] = varepsilon-d3 hamiltonian[0, 1] = np.conj(d1_d2) - hamiltonian[1, 0] = d1_d2 + hamiltonian[1, 0] = d1_d2 return hamiltonian def hamiltonian_of_half_BHZ_model_for_spin_down(kx, ky, A=0.3645/5, B=-0.686/25, C=0, D=-0.512/25, M=-0.01):