Guest User

Untitled

a guest
Feb 21st, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #-*- coding: utf-8 -*-
  2.  
  3. import numpy as np
  4. from matplotlib import pyplot as plt
  5.  
  6. wp = 1 # plasma frequency
  7. c0 = 1 # speed of light
  8. g = 0.2 # damping
  9. ediel = 1 # permittivity of dielectric
  10. w = np.linspace(0, 1.5, 100) # frequency
  11.  
  12. drude_real = 1 - wp**2 / (w**2 + g**2) # real part of the Drude formula
  13. drude_imag = (wp**2 * g)/(w * (w**2 + g**2)) # imaginary part
  14.  
  15. # real, imaginary part and absolute value of k_x
  16. kr = w/c0 * np.sqrt((ediel * drude_real)/(ediel + drude_real))
  17. ki = (((drude_real * ediel)/(drude_real + ediel))**(3.0/2.0) * (drude_imag/(2*(drude_real**2))))
  18. k = np.sqrt(kr**2 + ki**2)
  19.  
  20. # Plot statements
  21. fig = plt.figure(figsize=(12, 6))
  22. ax1 = fig.add_subplot(111)
  23. ax1.set_xlabel(r"wave vector $k_x c / omega_p$")
  24. ax1.set_ylabel(r"frequency $omega / omega_p$")
  25. ax1.plot(k, w, c="g", label="|k_x|")
  26. ax1.plot(kr, w, c="r", label="Re k_x")
  27. ax1.plot(ki, w, c="r", label="Im k_x", linestyle="--")
  28. ax1.plot(w, w, c="b", label="light line", linestyle="--")
  29. leg = ax1.legend(loc="best")
  30. ax1.grid()
  31. plt.ylim((0, 1.5))
  32. plt.xlim((0, 3))
  33. plt.axhspan(1.0/np.sqrt(2), 1.0, alpha=0.3, color='green') # leaky mode region
  34. plt.show()
Add Comment
Please, Sign In to add comment