7.5.2 Michelson with signal recycling

This example recreates the plot shown in Fig. 54, the four traces show the transfer function for a Michelson interferometer with different signal recycling tunings (Fig. 58, generated here).

import finesse
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 T=1                  # 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 T=1 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

    s s5 bs1.p4 MSR.p1 L=50         # space of 50m length to signal recycling mirror
    m MSR R=0.9 T=0.1               # signal recycling mirror

    # 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 MSR.p2.o fsig.f       # amplitude detector in south port 
    """
)

out = base.run("""
    series(
        xaxis(fsig.f, log, 1, 10k, 300),
        change(MSR.phi=0.73026),
        xaxis(fsig.f, log, 1, 10k, 300),
        change(MSR.phi=2.4342),
        xaxis(fsig.f, log, 1, 10k, 300),
        change(MSR.phi=24.342),
        xaxis(fsig.f, log, 1, 10k, 300),
    )
""")

plt.figure()
plt.semilogx(out[0].x1, abs(out[0]['signal']), label='tuned')
plt.semilogx(out[1].x1, abs(out[1]['signal']), label='detuned 150 Hz')
plt.semilogx(out[2].x1, abs(out[2]['signal']), label='detuned 500 Hz')
plt.semilogx(out[3].x1, abs(out[3]['signal']), label='detuned 5 kHz')
plt.xlabel('North mirror tuning [deg]')
plt.ylabel(r'sideband amplitude [$\sqrt{\mathrm{W}}$]')
plt.legend(loc='lower left', framealpha=1)
plt.show()
../_images/3404894f940ddd4c46649afbc227b391d750ff016a6b1414ab1cf53586f5cc9f.svg