PDH_doppler_michelson_with_pzt.py 4.59 KB
#!/usr/bin/python
# -*- coding: utf-8 -*-

'''Pound-Drever-Hall setup
   Michelson with piezo actuator in cavity arm and AOM in reference arm

                          -----
        (2*W_aom)-->(X)---|LPF|--->
                     |    -----     eps_dop
                     O
                     |
            -----   ---   ---
------------|EOM|---|\|---|/|-----------(   )
 w_laser    -----   ---   ---           cavity
              ^      |     |
              |    -----   U
              |    |AOM|   |
              |    -----   |
              |     _|_    |
              |    ////    |
              |            v
              |---------->(X)
           (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, w_aom, t, c = symbols('E0, J0, J1, omega_laser, Omega_pdh, Omega_aom, t, c', imaginary=False, real=True)

'''#laser and phase-mod laser
E_laser = E0*exp(I*(w_laser*t))

E_eom =                             \
E0*(                                \
  J0*exp(I*(w_laser*t))             \
+ J1*exp(I*((w_laser+w_pdh)*t))     \
- J1*exp(I*((w_laser-w_pdh)*t))     \
   )'''

#aom double shifted phase-mod wave in reference arm
E_aom =                                     \
E0*(                                        \
  J0*exp(I*((w_laser      +2*w_aom)*t))     \
+ J1*exp(I*((w_laser+w_pdh+2*w_aom)*t))     \
- J1*exp(I*((w_laser-w_pdh+2*w_aom)*t))     \
   )

#approximation of F(w) near a 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 and dephased by doppler effect
v_x, d_x, v_u, d_u = symbols('v_x, delta_x, v_u, delta_u', imaginary=False, real=True)
dx = v_x*t + d_x
du = v_u*t + d_u
E_ref =                                                               \
E0*(                                                                  \
   F(             w_laser       *t -   (dx+du)*(w_laser)/c )   \
    *J0*exp( I*(  w_laser       *t - 2*(dx+du)*(w_laser)/c ) ) \
+ -1*J1*exp( I*( (w_laser+w_pdh)*t - 2*(dx+du)*(w_laser)/c ) ) \
- -1*J1*exp( I*( (w_laser-w_pdh)*t - 2*(dx+du)*(w_laser)/c ) ) \
   )

#intensity of reflected wave
I_pdh = abs(E_ref)**2
I_pdh = expand(TR8(expand(expand_complex(I_pdh))))

#optical mixer
E_mich = sqrt(2)/2 * E_aom + sqrt(2)/2 * E_ref

#intensity of mixed wave
I_mich = abs(E_mich)**2
I_mich = expand(TR8(expand(expand_complex(I_mich))))

#Q demodulation of I_pdh at Omega_pdh for PDH error signal obtention
kphipdh = symbols('k_phi_pdh', real=True)
eps_pdh = 2 * kphipdh * I_pdh * cos(w_pdh*t-pi/2)
eps_pdh = expand(TR8(TR7(expand(eps_pdh))))

#Q demodulation of I_mich at 2*Omega_aom for doppler error signal obtention
kphidop = symbols('k_phi_doppler', real=True)
eps_dop = 2 * kphidop * I_mich * cos(2*w_aom*t-pi/2)
eps_dop = expand(TR8(TR7(expand(eps_dop))))

toc = time()
print('Elapsed time : %fs'%(toc-tic))

'''results

eps_pdh =
       2               ⎛                  ω_laser        ⎞
   4⋅E₀ ⋅J₀⋅J₁⋅k_φ_pdh⋅⎜ω_laser - ω_cav - ───────⋅(vₓ+vᵤ)⎟
                       ⎝                     c           ⎠
 + ───────────────────────────────────────────────────────
                           π⋅δ_ν

eps_dop =
    2   2             ⎛                  ω_laser        ⎞    ⎛2⋅[(δₓ+t⋅vₓ)+(δᵤ+t⋅vᵤ)]⋅ω_laser⎞
  E₀ ⋅J₀ ⋅k_φ_doppler⋅⎜ω_laser - ω_cav - ───────⋅(vₓ+vᵤ)⎟⋅cos⎜───────────────────────────────⎟
                      ⎝                     c           ⎠    ⎝               c               ⎠
- ────────────────────────────────────────────────────────────────────────────────────────────
                                               π⋅δ_ν

      2   2                ⎛2⋅[(δₓ+t⋅vₓ)+(δᵤ+t⋅vᵤ)]⋅ω_laser⎞
+ 2⋅E₀ ⋅J₁ ⋅k_φ_doppler⋅sin⎜───────────────────────────────⎟
                           ⎝               c               ⎠
'''