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()
../_images/d6b1c4745220c55b99b4317a5a6597fa8d4aa2107b0eb13a6a4ff5331d6a60fa.svg