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()