6.7.3 Quantum-noise limited interferometer sensitivity

This example shows the quantum-noise limited sensitivity of an advanced detectors. See Appendix B for the optical layout of the detector and Sect. 8.12 for more details about the interferometer operation. The model is loosely based on the Advanced LIGO design file and thus we expect to see the peak sensitivity around \(100\) Hz at a sensitivity of about \(10^{−23}/\sqrt{\text{Hz}}\). We can see the both the qnoised and qshot detectors agree at high frequencies, where the sensitivity is purely limited by shot noise. At low frequencies the two traces differ because only qnoised takes into account the radiation pressure effects (Fig. 48, generated here).

The Finesse input file for this example is more complex than for other examples because it contains a more complex interferometer setup and uses relatively advanced concepts such as setting mechanical transfer function. See Appendix A for more information on Finesse and where to find the documentation, such as the syntax reference, required to follow this example.

import finesse
finesse.init_plotting()

base = finesse.Model()
base.parse(
    """
    ###########################################################################
    ###   Variables
    ###########################################################################
    var Larm 3995
    var Mtm  40
    var itmT 0.014
    var lmichx 4.5
    var lmichy 4.45

    ###########################################################################
    ###   Input optics
    ###########################################################################
    l L0 125
    s l_in L0.p1 prm.p1
    # Power recycling mirror
    m prm T=0.03 L=37.5u phi=90
    s prc prm.p2 bs.p1 L=53


    # Central beamsplitter
    bs bs T=0.5 L=0 alpha=45

    ###########################################################################
    ###   X arm
    ###########################################################################
    s lx bs.p3 itmx.p1 L=lmichx
    m itmx T=itmT L=37.5u phi=90
    s LX itmx.p2 etmx.p1 L=Larm
    m etmx T=5u L=37.5u phi=89.999875

    pendulum itmx_sus itmx.mech mass=Mtm fz=1 Qz=1M
    pendulum etmx_sus etmx.mech mass=Mtm fz=1 Qz=1M

    ###########################################################################
    ###   Y arm
    ###########################################################################
    s ly bs.p2 itmy.p1 L=lmichy
    m itmy T=itmT L=37.5u phi=0
    s LY itmy.p2 etmy.p1 L=Larm
    m etmy T=5u L=37.5u phi=0.000125

    pendulum itmy_sus itmy.mech mass=Mtm fz=1 Qz=1M
    pendulum etmy_sus etmy.mech mass=Mtm fz=1 Qz=1M

    ###########################################################################
    ###   Output and squeezing
    ###########################################################################
    s src bs.p4 srm.p1 L=50.525
    m srm T=0.2 L=37.5u phi=-90

    # A squeezed source could be injected into the dark port
    sq sq1 db=0 angle=90
    s lsqz sq1.p1 srm.p2

    # Differentially modulate the arm lengths
    fsig(1)
    sgen darmx LX.h
    sgen darmy LY.h phase=180

    # Output the full quantum noise limited sensitivity
    qnoised NSR_with_RP srm.p2.o nsr=True
    # Output just the shot noise limited sensitivity
    qshot NSR_without_RP srm.p2.o nsr=True

    # We could also display the quantum noise and the signal
    # separately by uncommenting these two lines.
    # qnoised noise srm.p2.o
    # pd1 signal srm.p2.o f=fsig
    """
)

out = base.run("xaxis(darmx.f, log, 5, 5k, 100)")
out.plot(log=True, separate=False);
/usr/local/lib/python3.13/site-packages/matplotlib/cbook.py:1719: ComplexWarning: Casting complex values to real discards the imaginary part
  return math.isfinite(val)
/usr/local/lib/python3.13/site-packages/matplotlib/cbook.py:1355: ComplexWarning: Casting complex values to real discards the imaginary part
  return np.asarray(x, float)
../_images/f161ff40d5c7203061b8f4d6be902ba76f105368d8170a03958ec4bad1f89a13.svg