This commit is contained in:
guanjihuan 2021-06-05 15:12:12 +08:00
parent 09ca7997f5
commit 3457034248
13 changed files with 146 additions and 141 deletions

4
Tutorial/test.py → Tutorial/0_test.py Executable file → Normal file
View File

@ -1,3 +1,3 @@
import gjh import gjh
gjh.test() gjh.test()

38
Tutorial/Wilson_loop.py → Tutorial/10_Wilson_loop.py Executable file → Normal file
View File

@ -1,20 +1,20 @@
import gjh import gjh
import numpy as np import numpy as np
import cmath import cmath
from math import * from math import *
def hamiltonian_function(k): # SSH model def hamiltonian_function(k): # SSH model
gamma = 0.5 gamma = 0.5
lambda0 = 1 lambda0 = 1
delta = 0 delta = 0
hamiltonian = np.zeros((2, 2), dtype=complex) hamiltonian = np.zeros((2, 2), dtype=complex)
hamiltonian[0,0] = delta hamiltonian[0,0] = delta
hamiltonian[1,1] = -delta hamiltonian[1,1] = -delta
hamiltonian[0,1] = gamma+lambda0*cmath.exp(-1j*k) hamiltonian[0,1] = gamma+lambda0*cmath.exp(-1j*k)
hamiltonian[1,0] = gamma+lambda0*cmath.exp(1j*k) hamiltonian[1,0] = gamma+lambda0*cmath.exp(1j*k)
return hamiltonian return hamiltonian
wilson_loop_array = gjh.calculate_wilson_loop(hamiltonian_function) wilson_loop_array = gjh.calculate_wilson_loop(hamiltonian_function)
print('wilson loop =', wilson_loop_array) print('wilson loop =', wilson_loop_array)
p = np.log(wilson_loop_array)/2/pi/1j p = np.log(wilson_loop_array)/2/pi/1j
print('p =', p, '\n') print('p =', p, '\n')

View File

@ -1,20 +1,20 @@
import gjh import gjh
import numpy as np import numpy as np
x = np.array([1, 2, 3]) x = np.array([1, 2, 3])
y = np.array([5, 6, 7]) y = np.array([5, 6, 7])
gjh.write_one_dimensional_data(x, y, filename='one_dimensional_data') gjh.write_one_dimensional_data(x, y, filename='one_dimensional_data')
matrix = np.zeros((3, 3)) matrix = np.zeros((3, 3))
matrix[0, 1] = 11 matrix[0, 1] = 11
gjh.write_two_dimensional_data(x, y, matrix, filename='two_dimensional_data') gjh.write_two_dimensional_data(x, y, matrix, filename='two_dimensional_data')
x_read, y_read = gjh.read_one_dimensional_data('one_dimensional_data') x_read, y_read = gjh.read_one_dimensional_data('one_dimensional_data')
print(x_read, '\n') print(x_read, '\n')
print(y_read, '\n\n') print(y_read, '\n\n')
x_read, y_read, matrix_read = gjh.read_two_dimensional_data('two_dimensional_data') x_read, y_read, matrix_read = gjh.read_two_dimensional_data('two_dimensional_data')
print(x_read, '\n') print(x_read, '\n')
print(y_read, '\n') print(y_read, '\n')
print(matrix_read) print(matrix_read)

5
Tutorial/12_download.py Normal file
View File

@ -0,0 +1,5 @@
import gjh
gjh.download_with_scihub()
# gjh.download_with_scihub('address')
# gjh.download_with_scihub(num=3)

10
Tutorial/Pauli_matrix.py → Tutorial/1_Pauli_matrix.py Executable file → Normal file
View File

@ -1,6 +1,6 @@
import gjh import gjh
print('sigma_0:\n', gjh.sigma_0(), '\n') print('sigma_0:\n', gjh.sigma_0(), '\n')
print('sigma_x:\n', gjh.sigma_x(), '\n') print('sigma_x:\n', gjh.sigma_x(), '\n')
print('sigma_y:\n', gjh.sigma_y(), '\n') print('sigma_y:\n', gjh.sigma_y(), '\n')
print('sigma_z:\n', gjh.sigma_z(), '\n') print('sigma_z:\n', gjh.sigma_z(), '\n')

View File

@ -1,5 +1,5 @@
import gjh import gjh
print(gjh.finite_size_along_one_direction(3), '\n') print(gjh.finite_size_along_one_direction(3), '\n')
print(gjh.finite_size_along_two_directions_for_square_lattice(2, 2), '\n') print(gjh.finite_size_along_two_directions_for_square_lattice(2, 2), '\n')
print(gjh.finite_size_along_three_directions_for_cubic_lattice(2, 2, 2), '\n') print(gjh.finite_size_along_three_directions_for_cubic_lattice(2, 2, 2), '\n')

View File

@ -1,19 +1,19 @@
import gjh import gjh
import numpy as np import numpy as np
from math import * from math import *
import functools import functools
x = np.linspace(-pi, pi, 100) x = np.linspace(-pi, pi, 100)
y = np.linspace(-pi, pi, 100) y = np.linspace(-pi, pi, 100)
hamiltonian_function = functools.partial(gjh.one_dimensional_fourier_transform, unit_cell=0, hopping=1) hamiltonian_function = functools.partial(gjh.one_dimensional_fourier_transform, unit_cell=0, hopping=1)
eigenvalue_array = gjh.calculate_eigenvalue_with_one_parameter(x, hamiltonian_function) eigenvalue_array = gjh.calculate_eigenvalue_with_one_parameter(x, hamiltonian_function)
gjh.plot(x, eigenvalue_array, xlabel='k', ylabel='E', type='-o') gjh.plot(x, eigenvalue_array, xlabel='k', ylabel='E', type='-o')
hamiltonian_function = functools.partial(gjh.two_dimensional_fourier_transform_for_square_lattice, unit_cell=0, hopping_1=1, hopping_2=1) hamiltonian_function = functools.partial(gjh.two_dimensional_fourier_transform_for_square_lattice, unit_cell=0, hopping_1=1, hopping_2=1)
eigenvalue_array = gjh.calculate_eigenvalue_with_two_parameters(x, y, hamiltonian_function) eigenvalue_array = gjh.calculate_eigenvalue_with_two_parameters(x, y, hamiltonian_function)
gjh.plot_3d_surface(x, y, eigenvalue_array, xlabel='kx', ylabel='ky', zlabel='E') gjh.plot_3d_surface(x, y, eigenvalue_array, xlabel='kx', ylabel='ky', zlabel='E')
hamiltonian_function = functools.partial(gjh.three_dimensional_fourier_transform_for_cubic_lattice, k3=0, unit_cell=0, hopping_1=1, hopping_2=1, hopping_3=1) hamiltonian_function = functools.partial(gjh.three_dimensional_fourier_transform_for_cubic_lattice, k3=0, unit_cell=0, hopping_1=1, hopping_2=1, hopping_3=1)
eigenvalue_array = gjh.calculate_eigenvalue_with_two_parameters(x, y, hamiltonian_function) eigenvalue_array = gjh.calculate_eigenvalue_with_two_parameters(x, y, hamiltonian_function)
gjh.plot_3d_surface(x, y, eigenvalue_array, xlabel='kx', ylabel='ky', zlabel='E') gjh.plot_3d_surface(x, y, eigenvalue_array, xlabel='kx', ylabel='ky', zlabel='E')

View File

@ -1,12 +1,12 @@
import gjh import gjh
import numpy as np import numpy as np
from math import * from math import *
import functools import functools
x = np.linspace(-pi, pi, 100) x = np.linspace(-pi, pi, 100)
Ny = 10 Ny = 10
unit_cell = gjh.finite_size_along_two_directions_for_graphene(1, Ny) unit_cell = gjh.finite_size_along_two_directions_for_graphene(1, Ny)
hopping = gjh.hopping_along_zigzag_direction_for_graphene(Ny) hopping = gjh.hopping_along_zigzag_direction_for_graphene(Ny)
hamiltonian_function = functools.partial(gjh.one_dimensional_fourier_transform, unit_cell=unit_cell, hopping=hopping) hamiltonian_function = functools.partial(gjh.one_dimensional_fourier_transform, unit_cell=unit_cell, hopping=hopping)
eigenvalue_array = gjh.calculate_eigenvalue_with_one_parameter(x, hamiltonian_function) eigenvalue_array = gjh.calculate_eigenvalue_with_one_parameter(x, hamiltonian_function)
gjh.plot(x, eigenvalue_array, xlabel='k', ylabel='E') gjh.plot(x, eigenvalue_array, xlabel='k', ylabel='E')

View File

@ -1,7 +1,7 @@
import gjh import gjh
import numpy as np import numpy as np
hamiltonian = gjh.finite_size_along_two_directions_for_square_lattice(2,2) hamiltonian = gjh.finite_size_along_two_directions_for_square_lattice(2,2)
fermi_energy_array = np.linspace(-4, 4, 400) fermi_energy_array = np.linspace(-4, 4, 400)
total_dos_array = gjh.total_density_of_states_with_fermi_energy_array(fermi_energy_array, hamiltonian, broadening=0.1) total_dos_array = gjh.total_density_of_states_with_fermi_energy_array(fermi_energy_array, hamiltonian, broadening=0.1)
gjh.plot(fermi_energy_array, total_dos_array, xlabel='E', ylabel='Total DOS', type='-o') gjh.plot(fermi_energy_array, total_dos_array, xlabel='E', ylabel='Total DOS', type='-o')

View File

@ -1,28 +1,28 @@
import gjh import gjh
import numpy as np import numpy as np
fermi_energy = 0 fermi_energy = 0
N1 = 3 N1 = 3
N2 = 4 N2 = 4
hamiltonian = gjh.finite_size_along_two_directions_for_square_lattice(N1,N2) hamiltonian = gjh.finite_size_along_two_directions_for_square_lattice(N1,N2)
LDOS = gjh.local_density_of_states_for_square_lattice(fermi_energy, hamiltonian, N1=N1, N2=N2) LDOS = gjh.local_density_of_states_for_square_lattice(fermi_energy, hamiltonian, N1=N1, N2=N2)
print('square lattice:\n', LDOS, '\n') print('square lattice:\n', LDOS, '\n')
h00 = gjh.finite_size_along_one_direction(N2) h00 = gjh.finite_size_along_one_direction(N2)
h01 = np.identity(N2) h01 = np.identity(N2)
LDOS = gjh.local_density_of_states_for_square_lattice_using_dyson_equation(fermi_energy, h00=h00, h01=h01, N2=N2, N1=N1) LDOS = gjh.local_density_of_states_for_square_lattice_using_dyson_equation(fermi_energy, h00=h00, h01=h01, N2=N2, N1=N1)
print(LDOS, '\n\n') print(LDOS, '\n\n')
gjh.plot_contour(range(N1), range(N2), LDOS) gjh.plot_contour(range(N1), range(N2), LDOS)
N1 = 3 N1 = 3
N2 = 4 N2 = 4
N3 = 5 N3 = 5
hamiltonian = gjh.finite_size_along_three_directions_for_cubic_lattice(N1, N2, N3) hamiltonian = gjh.finite_size_along_three_directions_for_cubic_lattice(N1, N2, N3)
LDOS = gjh.local_density_of_states_for_cubic_lattice(fermi_energy, hamiltonian, N1=N1, N2=N2, N3=N3) LDOS = gjh.local_density_of_states_for_cubic_lattice(fermi_energy, hamiltonian, N1=N1, N2=N2, N3=N3)
print('cubic lattice:\n', LDOS, '\n') print('cubic lattice:\n', LDOS, '\n')
h00 = gjh.finite_size_along_two_directions_for_square_lattice(N2, N3) h00 = gjh.finite_size_along_two_directions_for_square_lattice(N2, N3)
h01 = np.identity(N2*N3) h01 = np.identity(N2*N3)
LDOS = gjh.local_density_of_states_for_cubic_lattice_using_dyson_equation(fermi_energy, h00, h01, N3=N3, N2=N2, N1=N1) LDOS = gjh.local_density_of_states_for_cubic_lattice_using_dyson_equation(fermi_energy, h00, h01, N3=N3, N2=N2, N1=N1)
print(LDOS) print(LDOS)

14
Tutorial/conductance.py → Tutorial/7_conductance.py Executable file → Normal file
View File

@ -1,8 +1,8 @@
import gjh import gjh
import numpy as np import numpy as np
fermi_energy_array = np.linspace(-5, 5, 400) fermi_energy_array = np.linspace(-5, 5, 400)
h00 = gjh.finite_size_along_one_direction(4) h00 = gjh.finite_size_along_one_direction(4)
h01 = np.identity(4) h01 = np.identity(4)
conductance_array = gjh.calculate_conductance_with_fermi_energy_array(fermi_energy_array, h00, h01) conductance_array = gjh.calculate_conductance_with_fermi_energy_array(fermi_energy_array, h00, h01)
gjh.plot(fermi_energy_array, conductance_array, xlabel='E', ylabel='Conductance', type='-o') gjh.plot(fermi_energy_array, conductance_array, xlabel='E', ylabel='Conductance', type='-o')

View File

@ -1,7 +1,7 @@
import gjh import gjh
import numpy as np import numpy as np
fermi_energy = 0 fermi_energy = 0
h00 = gjh.finite_size_along_one_direction(4) h00 = gjh.finite_size_along_one_direction(4)
h01 = np.identity(4) h01 = np.identity(4)
gjh.print_or_write_scattering_matrix(fermi_energy, h00, h01) gjh.print_or_write_scattering_matrix(fermi_energy, h00, h01)

34
Tutorial/Chern_number.py → Tutorial/9_Chern_number.py Executable file → Normal file
View File

@ -1,18 +1,18 @@
import gjh import gjh
import numpy as np import numpy as np
from math import * from math import *
def hamiltonian_function(kx, ky): # one QAH model with chern number 2 def hamiltonian_function(kx, ky): # one QAH model with chern number 2
t1 = 1.0 t1 = 1.0
t2 = 1.0 t2 = 1.0
t3 = 0.5 t3 = 0.5
m = -1.0 m = -1.0
hamiltonian = np.zeros((2, 2), dtype=complex) hamiltonian = np.zeros((2, 2), dtype=complex)
hamiltonian[0, 1] = 2*t1*cos(kx)-1j*2*t1*cos(ky) hamiltonian[0, 1] = 2*t1*cos(kx)-1j*2*t1*cos(ky)
hamiltonian[1, 0] = 2*t1*cos(kx)+1j*2*t1*cos(ky) hamiltonian[1, 0] = 2*t1*cos(kx)+1j*2*t1*cos(ky)
hamiltonian[0, 0] = m+2*t3*sin(kx)+2*t3*sin(ky)+2*t2*cos(kx+ky) hamiltonian[0, 0] = m+2*t3*sin(kx)+2*t3*sin(ky)+2*t2*cos(kx+ky)
hamiltonian[1, 1] = -(m+2*t3*sin(kx)+2*t3*sin(ky)+2*t2*cos(kx+ky)) hamiltonian[1, 1] = -(m+2*t3*sin(kx)+2*t3*sin(ky)+2*t2*cos(kx+ky))
return hamiltonian return hamiltonian
chern_number = gjh.calculate_chern_number_for_square_lattice(hamiltonian_function, precision=100) chern_number = gjh.calculate_chern_number_for_square_lattice(hamiltonian_function, precision=100)
print(chern_number) print(chern_number)