Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import scipy as sp
  4. import scipy.constants
  5.  
  6. import kwant
  7. import sys
  8. sys.path.append('./modules/')
  9. import wraparound
  10.  
  11. # -------------------------------------------------------------------
  12. # Constants
  13. qe = sp.constants.value("elementary charge") # unit: C
  14. me = sp.constants.value("electron mass")/qe*1e-18 #unit: eV*s^2/nm^2
  15. hP = sp.constants.value("Planck constant in eV s") #unit: eV*s
  16. hbar = hP/(2*sp.pi) #unit: eV*s
  17. # -------------------------------------------------------------------
  18.  
  19. a = 0.03
  20. V0 = 10.0
  21.  
  22. W = 20
  23. L = 50
  24.  
  25. # Hole in the rectuangular potential barrier
  26. W_hole = 5
  27. V_hole = 5.0
  28. hole_y = 9
  29.  
  30. t = hbar**2/(2*me*a**2) # units: eV
  31.  
  32. lat = kwant.lattice.square(a)
  33.  
  34. def onsite_potential(site):
  35.     (x,y) = site.pos
  36.     if np.abs(y-hole_y*a) <= W_hole/2*a:
  37.         return V_hole
  38.     return V0
  39.  
  40. # Infinite potential plane in y direction
  41. sys = kwant.Builder(kwant.TranslationalSymmetry(lat.vec((0, W))))
  42. sys[(lat(i,j) for i in range(L) for j in range(W))] = lambda p: 4*t+onsite_potential(p)
  43. sys[lat.neighbors(1)] = -t
  44.  
  45. sys = wraparound.wraparound(sys)
  46.  
  47. lead = kwant.Builder(kwant.TranslationalSymmetry((-a, 0)))
  48. lead[(lat(0,j) for j in range(W))] = 4*t
  49. lead[lat.neighbors(1)] = -t
  50. sys.attach_lead(lead)
  51. sys.attach_lead(lead.reversed())
  52.  
  53. kwant.plot(sys)
  54.  
  55. kwant.plot(sys, site_color=onsite_potential, cmap='jet', site_symbol='s', site_size=0.4, fig_size=(10, 6))
  56.  
  57. sys = sys.finalized()
  58.  
  59. # -------------------------------------------------------
  60. # Calculation
  61. ky = 1.0
  62.  
  63. energies = np.arange(6.0, 12.0, 0.04)
  64. transmission = []
  65. for energy in energies:
  66.     smatrix = kwant.smatrix(sys, energy, [ky])
  67.     transmission.append(smatrix.transmission(1, 0))
  68. # -------------------------------------------------------
  69.  
  70. # Plot transmission
  71. plt.plot(energies, transmission, '.')
  72. plt.yscale('log')
  73. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement