7.5.3 Sagnac interferometer

This example demonstrates how to compute the frequency response of a simple Sagnac interferometer (Fig. 59, generated here). See section 7.4 for more information on the Sagnac interferometer.

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.

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 bs1.p1 L=1           # space of 1m length

    bs bs1                          # 50-50 beam splitter
    s s2 bs1.p2 my.p2 L=1k          # north arm of 1km length
    bs my R=1 T=0                   # north end mirror, lossless
    s s3 bs1.p3 mx.p1 L=1k          # east arm of 1km length
    bs mx R=1 T=0                   # east end mirror, lossless
    s s4 mx.p2 my.p1 L=1k           # third arm of 1km length

    # apply signal to north and east mirror positions, 180 degrees out of phase
    fsig(1)
    sgen sig1 mx.mech.z
    sgen sig2 my.mech.z phase=180

    ad signal bs1.p4.o fsig.f       # amplitude detector in south port 
    """
)

out = base.run(Xaxis(base.fsig.f, 'log', 100, 1e6, 1000))

plt.figure(figsize=(8, 4))
plt.loglog(out.x1, np.abs(out['signal']))
plt.xlabel(r'$f$ [Hz]')
plt.ylabel(r'Amplitude [$\sqrt{\mathrm{W}}$]')
plt.show()
../_images/9655966eb34e6337fb719ba78ff1d85016c90531498e4d7ba0a1a9983653a182.svg