9.17.2 Telescope and Gouy phase

This example shows the fine tuning of a telescope. The optical setup is similar to the optical layout on the Virgo North-end detection bench, resembling the telescope for the beam transmitted by the end mirror of one arm. The telescope consists of four sequential lenses with the purpose of reducing the beam size and provide a user defined Gouy phase for a split photo detector which is used for the alignment sensing system (Fig. 96, generate here).

import finesse
from finesse.analysis.actions import Xaxis
import matplotlib.pyplot as plt
finesse.init_plotting()

base = finesse.Model()
base.parse(
    """
    l l1                                # laser with P=1W at the default frequency
    gauss g1 l1.p1.o w0=0.014852735 z=-2.2462888k       # initializing gaussian beam

    # multi-lens telescope, similar to the Virgo north end detection
    s sN2 l1.p1 lens1.p1 L=1.77                 # space between laser and first lens
    lens lens1 f=1.02                           # first lens, f=1.02
    s sN3 lens1.p2 lens2.p1 L=0.8996            # space between first and second lens
    lens lens2 f=-0.2                           # second lens, f=-0.2
    s sN4 lens2.p2 lens3.p1 L=1.1142-sN3.L      # space between second and third lens
    lens lens3 f=-0.1                           # third lens, f=-0.1
    s sN5 lens3.p2 lens4.p1 L=0.608             # space betwen third and fourth lens
    lens lens4 f=-0.1                           # fourth lens, f=-0.1
    s sN8 lens4.p2 nothing1.p1 L=0.759          # space between fourth lens and detector
    nothing nothing1                            # nothing element to connect detector

    gouy gouy1 from_node=l1.p1.o to_node=lens4.p1.i     # gouy phase through telescope
    bp w1 nothing1.p1.i w                               # beam size at end of telescope
    """
)

# tuning the position of lens2 by changing the lengths of the space in front and behind
# the lens. 
out = base.run(Xaxis(base.sN3.L, 'lin', -1e-3, 1e-3, 400, relative=True))

fig, ax1 = plt.subplots()

ax1.plot(out.x1*1e3, out['w1']*1e3, c='green', label='Abs')
ax1.set_ylim(0, 12)
ax1.set_xlabel(r'$L$ (sN3) [mm]')
ax1.set_ylabel('beam size [mm]')
ax1.tick_params(axis='y', labelleft=True)

ax2 = ax1.twinx()
ax2.plot(out.x1*1e3, out['gouy1'], c='blue', label='Phase')
ax2.set_ylim(0, 180)
ax2.set_ylabel('Gouy phase [deg]')
ax2.tick_params(axis='y', labelright=True)

lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')
plt.show()
../_images/fcbb2cf8f78cde2e68e6ba8b6d7f5143196c1e4572a2761e0c762f41f8d967a4.svg