Blame view

PDH/PDH.py 2.4 KB
2ae5099ce   bmarechal   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  #!/usr/bin/python
  # -*- coding: utf-8 -*-
  
  '''Pound-Drever-Hall setup
  
              -----      ---
  ------------|EOM|------|/|-----(   )
   w_laser    -----      ---     cavity
                ^         |
                |         U
                |         |
                |         v
                |------->(X) π/2
             (w_pdh)      |
                        -----
                        |LPF|
                        -----
                          |
                          v   eps_pdh
  
  '''
  
  from time import time
  tic = time()
  
  from sympy import *
  from sympy.simplify.fu import *
  
  init_printing()
  
  #constants
  E0, J0, J1, w_laser, w_pdh, t, c = symbols('E0, J0, J1, omega_laser, Omega_pdh, t, c', imaginary=False, real=True)
  
  '''laser and phase-mod laser
  E_laser = E0*exp(I*(w_laser*t))
  
  E_inc =                             \
  E0*(                                \
    J0*exp(I*((w_laser      )*t))     \
  + J1*exp(I*((w_laser+w_pdh)*t))     \
  - J1*exp(I*((w_laser-w_pdh)*t))     \
     )'''
  
  #reflection near resonance
  dnu, w_cav = symbols('delta_nu, omega_cav', imaginary=False, real=True)
  def F(phi):
      dw = phi.diff(t) - w_cav
      return -(I/pi)*(dw/dnu)
  
  #reflected phase-mod laser
  v_x, d_x = symbols('v_x, delta_x', imaginary=False, real=True)
  dx = v_x*t + d_x
  E_ref =                                                              \
  E0*(                                                                 \
     F(           (w_laser      )*t -   w_laser*dx/c )      \
      *J0*exp(I*( (w_laser      )*t - 2*w_laser*dx/c ) )    \
  + -1*J1*exp(I*( (w_laser+w_pdh)*t - 2*w_laser*dx/c ) )    \
  - -1*J1*exp(I*( (w_laser-w_pdh)*t - 2*w_laser*dx/c ) )    \
     )
  
  #intensity of reflected phase-mod laser
  I_pdh = abs(E_ref)**2
  I_pdh = expand(TR8(expand(expand_complex(I_pdh))))
  
  #demodulation of I_pdh at Omega_pdh
  kphipdh = symbols('k_phi_pdh', imaginary=False, real=True)
  eps_pdh = 2 * kphipdh * I_pdh * cos(w_pdh*t-pi/2)
  eps_pdh = expand(TR8(TR7(expand(eps_pdh))))
  
  toc = time()
  print('Elapsed time : %fs'%(toc-tic))
  
  '''low-passed demodulated I_pdh signal
  
  eps_pdh =
         2               ⎛                  ω_laser   ⎞
     4⋅E₀ ⋅J₀⋅J₁⋅k_φ_pdh⋅⎜ω_laser - ω_cav - ───────⋅vₓ⎟
                         ⎝                     c      ⎠
   + ──────────────────────────────────────────────────
                           π⋅δ_ν
  '''