test_polarization.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from sympy.physics.optics.polarization import (jones_vector, stokes_vector,
  2. jones_2_stokes, linear_polarizer, phase_retarder, half_wave_retarder,
  3. quarter_wave_retarder, transmissive_filter, reflective_filter,
  4. mueller_matrix, polarizing_beam_splitter)
  5. from sympy.core.numbers import (I, pi)
  6. from sympy.core.singleton import S
  7. from sympy.core.symbol import symbols
  8. from sympy.functions.elementary.exponential import exp
  9. from sympy.matrices.dense import Matrix
  10. def test_polarization():
  11. assert jones_vector(0, 0) == Matrix([1, 0])
  12. assert jones_vector(pi/2, 0) == Matrix([0, 1])
  13. #################################################################
  14. assert stokes_vector(0, 0) == Matrix([1, 1, 0, 0])
  15. assert stokes_vector(pi/2, 0) == Matrix([1, -1, 0, 0])
  16. #################################################################
  17. H = jones_vector(0, 0)
  18. V = jones_vector(pi/2, 0)
  19. D = jones_vector(pi/4, 0)
  20. A = jones_vector(-pi/4, 0)
  21. R = jones_vector(0, pi/4)
  22. L = jones_vector(0, -pi/4)
  23. res = [Matrix([1, 1, 0, 0]),
  24. Matrix([1, -1, 0, 0]),
  25. Matrix([1, 0, 1, 0]),
  26. Matrix([1, 0, -1, 0]),
  27. Matrix([1, 0, 0, 1]),
  28. Matrix([1, 0, 0, -1])]
  29. assert [jones_2_stokes(e) for e in [H, V, D, A, R, L]] == res
  30. #################################################################
  31. assert linear_polarizer(0) == Matrix([[1, 0], [0, 0]])
  32. #################################################################
  33. delta = symbols("delta", real=True)
  34. res = Matrix([[exp(-I*delta/2), 0], [0, exp(I*delta/2)]])
  35. assert phase_retarder(0, delta) == res
  36. #################################################################
  37. assert half_wave_retarder(0) == Matrix([[-I, 0], [0, I]])
  38. #################################################################
  39. res = Matrix([[exp(-I*pi/4), 0], [0, I*exp(-I*pi/4)]])
  40. assert quarter_wave_retarder(0) == res
  41. #################################################################
  42. assert transmissive_filter(1) == Matrix([[1, 0], [0, 1]])
  43. #################################################################
  44. assert reflective_filter(1) == Matrix([[1, 0], [0, -1]])
  45. res = Matrix([[S(1)/2, S(1)/2, 0, 0],
  46. [S(1)/2, S(1)/2, 0, 0],
  47. [0, 0, 0, 0],
  48. [0, 0, 0, 0]])
  49. assert mueller_matrix(linear_polarizer(0)) == res
  50. #################################################################
  51. res = Matrix([[1, 0, 0, 0], [0, 0, 0, -I], [0, 0, 1, 0], [0, -I, 0, 0]])
  52. assert polarizing_beam_splitter() == res