3.8.2 Mirror modulation
Finesse offers two different types of modulators: the modulator component shown in the example above, and the fsig command, which can be used to apply a signal modulation to existing optical components. The main difference is that fsig is meant to be used for transfer function computations. Consequently Finesse discards all nonlinear terms, which means that the sideband amplitude is proportional to the signal amplitude and harmonics are not created (Fig. 23, 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\mathrm{nm}\).
Furthermore, the amplitude detector at a frequency offset of \(f=80 \mathrm{kHz}\) is removed as amplitude detectors in Finesse 3 raise an exception when set to a frequency which is not present in the signal.
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 default frequency
s s1 l1.p1 bs1.p1 L=1 # space of 1m length
bs bs1 # beam splitter as 'turning mirror', normal incidence
fsig(40k) # set signal frequency to 40kHz
sgen sig1 bs1.mech.z # signal modulation applied to beam splitter
# Amplitude detectors looking at lower and upper sidebands, and upper first harmonic
ad upper bs1.p2.o f=40k
ad lower bs1.p2.o f=-40k
"""
)
out = base.run(Xaxis(base.sig1.amplitude, 'lin', 1, 10, 100))
plt.figure(figsize=(8, 4))
plt.plot(out.x1, np.abs(out['upper']), label='upper')
plt.plot(out.x1, np.abs(out['lower']), ls='--', label='lower')
plt.xlabel('signal amplitude (bs1.mech.z)')
plt.ylabel(r'amplitude [$\sqrt{\mathrm{W}}$]')
plt.show()