-
Notifications
You must be signed in to change notification settings - Fork 142
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1606d0a
commit f3fefe6
Showing
7 changed files
with
361 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
#!/bin/python3 | ||
import numpy as np | ||
import cmath | ||
|
||
# The Hamiltonian is | ||
# ( M-Bk^2 Delta_0+A*k+ ) | ||
# ( Delta_0+A*k_ -M+Bk^2 ) | ||
# where k^2=kx^2+ky^2 | ||
|
||
# Case I, QSHE with band inversion and no trivial hybridization | ||
# Delta_0=0, M*B>0, |A|>0 | ||
|
||
# Case I, QSHE with band inversion and with trivial and nontrivial hybridization | ||
# Delta_0=0.5, M*B>0, |A|>0 | ||
|
||
|
||
# from the kp to TB we use sustitution | ||
# k->sin(k) | ||
# k^2->2(1-cos(k)) | ||
|
||
# Constants | ||
dp = np.float64 | ||
pi = np.arctan(1) * 4 | ||
zi = 1j | ||
|
||
# Lattice constants | ||
M = 2.0 | ||
B = 1.0 | ||
A = 1.0 | ||
Delta_0= 0.0 | ||
|
||
|
||
# Number of Wannier functions and R points | ||
num_wann = 4 | ||
nrpts = 7 | ||
|
||
# R coordinates | ||
Irvec = np.zeros((3, nrpts), dtype=int) | ||
|
||
# Hamiltonian m,n are band indexes | ||
HmnR = np.zeros((num_wann, num_wann, nrpts), dtype=complex) | ||
|
||
# No of degeneracy of R point | ||
ndegen = np.ones(nrpts, dtype=int) | ||
|
||
# Initialization of matrices | ||
Irvec[:, :] = 0 | ||
HmnR[:, :, :] = 0.0 | ||
|
||
# 0 0 0 | ||
ir = 0 | ||
Irvec[:, ir] = [0, 0, 0] | ||
HmnR[0, 0, ir] = M - 4 * B | ||
HmnR[1, 1, ir] = -M + 4 * B | ||
HmnR[2, 2, ir] = M - 4 * B | ||
HmnR[3, 3, ir] = -M + 4 * B | ||
HmnR[0, 1, ir] = Delta_0 | ||
HmnR[1, 0, ir] = Delta_0 | ||
HmnR[2, 3, ir] = Delta_0 | ||
HmnR[3, 2, ir] = Delta_0 | ||
|
||
# 1 0 | ||
ir = 1 | ||
Irvec[:, ir] = [1, 0, 0] | ||
HmnR[0, 0, ir] = B | ||
HmnR[1, 1, ir] = -B | ||
HmnR[2, 2, ir] = B | ||
HmnR[3, 3, ir] = -B | ||
HmnR[0, 1, ir] =-0.5*zi*A | ||
HmnR[1, 0, ir] =-0.5*zi*A | ||
HmnR[2, 3, ir] = 0.5*zi*A | ||
HmnR[3, 2, ir] = 0.5*zi*A | ||
|
||
# 0 1 | ||
ir = 2 | ||
Irvec[:, ir] = [0, 1, 0] | ||
HmnR[0, 0, ir] = B | ||
HmnR[1, 1, ir] = -B | ||
HmnR[2, 2, ir] = B | ||
HmnR[3, 3, ir] = -B | ||
HmnR[0, 1, ir]= -A/2 | ||
HmnR[1, 0, ir]= A/2 | ||
HmnR[2, 3, ir]= -A/2 | ||
HmnR[3, 2, ir]= A/2 | ||
|
||
|
||
# -1 0 | ||
ir = 3 | ||
Irvec[:, ir] = [-1, 0, 0] | ||
HmnR[0, 0, ir] = B | ||
HmnR[1, 1, ir] = -B | ||
HmnR[2, 2, ir] = B | ||
HmnR[3, 3, ir] = -B | ||
HmnR[0, 1, ir]= 0.5*zi*A | ||
HmnR[1, 0, ir]= 0.5*zi*A | ||
HmnR[2, 3, ir]=-0.5*zi*A | ||
HmnR[3, 2, ir]=-0.5*zi*A | ||
|
||
|
||
# 0 -1 | ||
ir = 4 | ||
Irvec[:, ir] = [0, -1, 0] | ||
HmnR[0, 0, ir] = B | ||
HmnR[1, 1, ir] = -B | ||
HmnR[2, 2, ir] = B | ||
HmnR[3, 3, ir] = -B | ||
HmnR[0, 1, ir]= A/2 | ||
HmnR[1, 0, ir]= -A/2 | ||
HmnR[2, 3, ir]= A/2 | ||
HmnR[3, 2, ir]= -A/2 | ||
|
||
nrpts= ir+1 | ||
# Writing to a file | ||
with open('BHZ_hr.dat', 'w') as file: | ||
file.write('4-band of BHZ model\n') | ||
file.write('4 !num_wann \n') | ||
file.write(f'{nrpts} ! nrpts\n') | ||
file.write(' '.join(f'{x:5d}' for x in ndegen) + '\n') | ||
for ir in range(nrpts): | ||
for i in range(4): | ||
for j in range(4): | ||
file.write(f"{Irvec[0, ir]:5d}{Irvec[1, ir]:5d}{Irvec[2, ir]:5d}{i+1:5d}{j+1:5d} {HmnR[i, j, ir].real:16.8f} {HmnR[i, j, ir].imag:16.8f}\n") | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
#!/bin/python3 | ||
import numpy as np | ||
import cmath | ||
|
||
# The Hamiltonian is | ||
# ( M-Bk^2 Delta_0+A*k+ ) | ||
# ( Delta_0+A*k_ -M+Bk^2 ) | ||
# where k^2=kx^2+ky^2 | ||
|
||
# Case I, QSHE with band inversion and no trivial hybridization | ||
# Delta_0=0, M*B>0, |A|>0 | ||
|
||
# Case I, QSHE with band inversion and with trivial and nontrivial hybridization | ||
# Delta_0=0.5, M*B>0, |A|>0 | ||
|
||
|
||
# from the kp to TB we use sustitution | ||
# k->sin(k) | ||
# k^2->2(1-cos(k)) | ||
|
||
# Constants | ||
dp = np.float64 | ||
pi = np.arctan(1) * 4 | ||
zi = 1j | ||
|
||
# Lattice constants | ||
M = 2.0 | ||
B = 1.0 | ||
A = 1.0 | ||
Delta_0= 0.5 | ||
|
||
|
||
# Number of Wannier functions and R points | ||
num_wann = 4 | ||
nrpts = 7 | ||
|
||
# R coordinates | ||
Irvec = np.zeros((3, nrpts), dtype=int) | ||
|
||
# Hamiltonian m,n are band indexes | ||
HmnR = np.zeros((num_wann, num_wann, nrpts), dtype=complex) | ||
|
||
# No of degeneracy of R point | ||
ndegen = np.ones(nrpts, dtype=int) | ||
|
||
# Initialization of matrices | ||
Irvec[:, :] = 0 | ||
HmnR[:, :, :] = 0.0 | ||
|
||
# 0 0 0 | ||
ir = 0 | ||
Irvec[:, ir] = [0, 0, 0] | ||
HmnR[0, 0, ir] = M - 4 * B | ||
HmnR[1, 1, ir] = -M + 4 * B | ||
HmnR[2, 2, ir] = M - 4 * B | ||
HmnR[3, 3, ir] = -M + 4 * B | ||
HmnR[0, 1, ir] = Delta_0 | ||
HmnR[1, 0, ir] = Delta_0 | ||
HmnR[2, 3, ir] = Delta_0 | ||
HmnR[3, 2, ir] = Delta_0 | ||
|
||
# 1 0 | ||
ir = 1 | ||
Irvec[:, ir] = [1, 0, 0] | ||
HmnR[0, 0, ir] = B | ||
HmnR[1, 1, ir] = -B | ||
HmnR[2, 2, ir] = B | ||
HmnR[3, 3, ir] = -B | ||
HmnR[0, 1, ir] =-0.5*zi*A | ||
HmnR[1, 0, ir] =-0.5*zi*A | ||
HmnR[2, 3, ir] = 0.5*zi*A | ||
HmnR[3, 2, ir] = 0.5*zi*A | ||
|
||
# 0 1 | ||
ir = 2 | ||
Irvec[:, ir] = [0, 1, 0] | ||
HmnR[0, 0, ir] = B | ||
HmnR[1, 1, ir] = -B | ||
HmnR[2, 2, ir] = B | ||
HmnR[3, 3, ir] = -B | ||
HmnR[0, 1, ir]= -A/2 | ||
HmnR[1, 0, ir]= A/2 | ||
HmnR[2, 3, ir]= -A/2 | ||
HmnR[3, 2, ir]= A/2 | ||
|
||
|
||
# -1 0 | ||
ir = 3 | ||
Irvec[:, ir] = [-1, 0, 0] | ||
HmnR[0, 0, ir] = B | ||
HmnR[1, 1, ir] = -B | ||
HmnR[2, 2, ir] = B | ||
HmnR[3, 3, ir] = -B | ||
HmnR[0, 1, ir]= 0.5*zi*A | ||
HmnR[1, 0, ir]= 0.5*zi*A | ||
HmnR[2, 3, ir]=-0.5*zi*A | ||
HmnR[3, 2, ir]=-0.5*zi*A | ||
|
||
|
||
# 0 -1 | ||
ir = 4 | ||
Irvec[:, ir] = [0, -1, 0] | ||
HmnR[0, 0, ir] = B | ||
HmnR[1, 1, ir] = -B | ||
HmnR[2, 2, ir] = B | ||
HmnR[3, 3, ir] = -B | ||
HmnR[0, 1, ir]= A/2 | ||
HmnR[1, 0, ir]= -A/2 | ||
HmnR[2, 3, ir]= A/2 | ||
HmnR[3, 2, ir]= -A/2 | ||
|
||
nrpts= ir+1 | ||
# Writing to a file | ||
with open('BHZ_hr.dat', 'w') as file: | ||
file.write('4-band of BHZ model\n') | ||
file.write('4 !num_wann \n') | ||
file.write(f'{nrpts} ! nrpts\n') | ||
file.write(' '.join(f'{x:5d}' for x in ndegen) + '\n') | ||
for ir in range(nrpts): | ||
for i in range(4): | ||
for j in range(4): | ||
file.write(f"{Irvec[0, ir]:5d}{Irvec[1, ir]:5d}{Irvec[2, ir]:5d}{i+1:5d}{j+1:5d} {HmnR[i, j, ir].real:16.8f} {HmnR[i, j, ir].imag:16.8f}\n") | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
&TB_FILE | ||
Hrfile = "BHZ_hr.dat" | ||
/ | ||
|
||
!> flags to control different functionalities | ||
&CONTROL | ||
BulkBand_calc = T ! bulk band structure | ||
SlabBand_calc = T ! slab band structure | ||
SHC_calc = T ! spin Hall conductivity | ||
Wilsonloop_calc = T ! Wilson loop | ||
/ | ||
|
||
&SYSTEM | ||
SOC = 1 ! soc | ||
E_FERMI = 0 ! e-fermi | ||
NumOccupied = 2 | ||
/ | ||
|
||
&PARAMETERS | ||
Fermi_broadening = 0.001 ! infinite small value, like brodening | ||
iso_energy = 0.0 ! energy for calculate Fermi Arc | ||
OmegaNum = 400 ! omega number | ||
OmegaMin = -8.0 ! energy interval | ||
OmegaMax = 8.0 ! energy interval | ||
Nk1 = 60 ! number k points | ||
Nk2 = 60 ! number k points | ||
Nk3 = 2 ! number k points | ||
/ | ||
|
||
LATTICE | ||
Angstrom | ||
3 0 0 | ||
0 3 0 | ||
0 0 10 | ||
|
||
ATOM_POSITIONS | ||
1 ! number of atoms for projectors | ||
Direct ! Direct or Cartisen coordinate | ||
C 0 0 0 | ||
|
||
PROJECTORS | ||
2 ! number of projectors | ||
C s pz | ||
|
||
KPATH_SLAB | ||
3 ! numker of k line for 2D case | ||
-X 0. -0.5 G 0.0 0.0 ! k path for 2D case | ||
G 0.0 0.0 X 0.0 0.5 | ||
X 0.0 0.50 M 0.5 0.5 ! k path for 2D case | ||
|
||
SURFACE ! See doc for details | ||
0 0 1 | ||
1 0 0 | ||
0 1 0 | ||
|
||
KPATH_BULK ! k point path | ||
2 ! number of k line only for bulk band | ||
X 0.50000 0.00000 0.00000 G 0.00000 0.00000 0.00000 | ||
G 0.00000 0.00000 0.00000 Y 0.00000 0.50000 0.50000 | ||
|
||
KCUBE_BULK | ||
-0.50 -0.50 -0.50 ! Original point for 3D k plane | ||
1.00 0.00 0.00 ! The first vector to define 3d k space plane | ||
0.00 1.00 0.00 ! The second vector to define 3d k space plane | ||
0.00 0.00 1.00 ! The third vector to define 3d k cube | ||
|
Oops, something went wrong.