update
This commit is contained in:
		| @@ -48,13 +48,13 @@ def matrix_center(width=10, length=300):  # 中心区哈密顿量 | |||||||
|     # 中间加势垒 |     # 中间加势垒 | ||||||
|     for j0 in range(6): |     for j0 in range(6): | ||||||
|         for i0 in range(6):  |         for i0 in range(6):  | ||||||
|             hamiltonian[width*(np.int(length/2)-3+j0)+np.int(width/2)-3+i0, width*(np.int(length/2)-3+j0)+np.int(width/2)-3+i0]= 1e8 |             hamiltonian[width*(int(length/2)-3+j0)+int(width/2)-3+i0, width*(int(length/2)-3+j0)+int(width/2)-3+i0]= 1e8 | ||||||
|     return hamiltonian |     return hamiltonian | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): | def main(): | ||||||
|     start_time = time.time() |     start_time = time.time() | ||||||
|     fermi_energy = 1 |     fermi_energy = 0 | ||||||
|     width = 60 |     width = 60 | ||||||
|     length = 100 |     length = 100 | ||||||
|     h00 = matrix_00(width) |     h00 = matrix_00(width) | ||||||
|   | |||||||
| @@ -0,0 +1,46 @@ | |||||||
|  | """ | ||||||
|  | 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/3888 | ||||||
|  | """ | ||||||
|  |  | ||||||
|  | import kwant | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def make_system(): | ||||||
|  |     a = 1 | ||||||
|  |     lat = kwant.lattice.square(a, norbs=1)  # 创建晶格,方格子 | ||||||
|  |     syst = kwant.Builder()  | ||||||
|  |     t = 1.0 | ||||||
|  |     W = 60  # 中心体系宽度 | ||||||
|  |     L = 100  # 中心体系长度 | ||||||
|  |     # 给中心体系赋值 | ||||||
|  |     for i in range(L): | ||||||
|  |         for j in range(W): | ||||||
|  |             syst[lat(i, j)] = 0 | ||||||
|  |             if j > 0: | ||||||
|  |                 syst[lat(i, j), lat(i, j-1)] = -t  # hopping in y-direction | ||||||
|  |             if i > 0: | ||||||
|  |                 syst[lat(i, j), lat(i-1, j)] = -t  # hopping in x-direction | ||||||
|  |             if 47<=i<53 and 27<=j<33:  # 势垒 | ||||||
|  |                 syst[lat(i, j)] = 1e8 | ||||||
|  |     # 电极 | ||||||
|  |     lead = kwant.Builder(kwant.TranslationalSymmetry((-a, 0))) | ||||||
|  |     lead[(lat(0, j) for j in range(W))] = 0 | ||||||
|  |     lead[lat.neighbors()] = -t  # 用neighbors()方法 | ||||||
|  |     syst.attach_lead(lead)  # 左电极 | ||||||
|  |     syst.attach_lead(lead.reversed())   # 用reversed()方法得到右电极 | ||||||
|  |     # 制作结束 | ||||||
|  |     kwant.plot(syst)  | ||||||
|  |     syst = syst.finalized()   | ||||||
|  |     return syst | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def main(): | ||||||
|  |     syst = make_system() | ||||||
|  |     psi = kwant.wave_function(syst)(0)[29] | ||||||
|  |     current = kwant.operator.Current(syst)(psi) | ||||||
|  |     kwant.plotter.current(syst, current) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     main() | ||||||
		Reference in New Issue
	
	Block a user