2.7.2 Mirror tuning
This example demonstrates the conventions for lengths and microscopic positions introduced in Sect. 2.5. The top trace in Fig. 16 (generated here) depicts the phase change of a beam reflected by a beamsplitter as the function of the beam splitter tuning. By changing the tuning from \(0\) to \(180\degree\) the beam splitter is moved forward and shortens the path length by one wavelength, which by convention increases the light phase by \(360\degree\). On the other hand, if a length of a space is changed, the phase of the transmitted light is unchanged (for the default wavelength \(\Delta k = 0\)), as shown in the lower trace.
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 P=1 # 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
s s2 bs1.p2 nothing1.p1 L=1 # another space of 1m length
nothing nothing1 # a 'nothing' element to connect the detector
ad ad_r nothing1.p1.i f=0 # amplitude detector at default frequency
"""
)
out = base.run(Xaxis(base.bs1.phi, 'lin', 0, 180, 100))
out2 = base.run(Xaxis(base.s1.L, 'lin', 1, 2, 100))
fig, ax = plt.subplots(2, 1, figsize=(8, 7))
ax[0].plot(out.x1, np.degrees(np.angle(out['ad_r'])))
ax[0].set_xlabel(r'phi (bs1) [$\degree$]')
ax[0].set_ylabel(r'Phase [$\degree$]')
ax[1].plot(out2.x1, np.degrees(np.angle(out2['ad_r'])))
ax[1].set_xlabel(r'L (s1) [m]')
ax[1].set_ylabel(r'Phase [$\degree$]')
plt.show()