7.5.1 Michelson interferometer with arm cavities
This example shows how to setup a Michelson interferometer, tune it to the dark fringe and compute a transfer function from the differential length change to the output signal, using the sideband amplitude for simplicity (Fig. 57, generated here).
Note
In Finesse 2, the amplitude of a signal on a mechanical z node of a mirror or beamsplitter was scaled from meters to radians. The conversion factor is the reference wavenumber, which is equal to \(k_0 = 5.91 \times 10^6 \mathrm{m}^{-1}\) for a reference wavelength \(\lambda_0 = 1064\) nm.
After rescaling, the amplitude generated below is a factor of 2 larger than the result shown in Figure 57. The result produced here agrees with the result obtained using recent Finesse 2 code.
import finesse
from finesse.analysis.actions import Xaxis
import numpy as np
import matplotlib.pyplot as plt
finesse.init_plotting()
base = finesse.Model()
base.parse(
"""
l l1 # laser with P=1W at the default frequency
s s1 l1.p1 MPR.p1 L=1 # space of 1m length
m MPR R=0 T=1 # power recycling mirror
s s2 MPR.p2 bs1.p1 L=50 # space of 50m length
bs bs1 # 50:50 beam splitter
# north arm
s s3 bs1.p2 ITMy.p1 L=7 # space of 7m length to north arm
m ITMy R=0.99 T=0.01 # north input mirror, lossless
s Ly ITMy.p2 ETMy.p1 L=4k # north arm of 4km length
m ETMy R=1 T=0 # north end mirror, lossless
# east arm
s s4 bs1.p3 ITMx.p1 L=7 # space of 7m length to east arm
m ITMx R=0.99 T=0.01 phi=90 # east end mirror, lossless
s Lx ITMx.p2 ETMx.p1 L=4k # east arm of 4km length
m ETMx R=1 T=0 phi=90 # east end mirror, lossless
# apply signal to north and east mirror positions, 180 degrees out of phase
fsig(100)
sgen sig1 ETMx.mech.z
sgen sig2 ETMy.mech.z phase=180
ad signal bs1.p4.o fsig.f # amplitude detector in south port
"""
)
out = base.run(Xaxis(base.fsig.f, 'log', 1, 1e4, 300))
plt.figure(figsize=(8, 4))
plt.semilogx(out.x1, np.abs(out['signal']))
plt.xlabel(r'$f$ [Hz]')
plt.ylabel(r'Amplitude [$\sqrt{\mathrm{W}}$]')
plt.show()