Investigating here whether the “simple” external solution with just one focussing element can work at all. Idea is that after BS, one would have a 45deg plane mirror to direct the beam some distance away to a focussing mirror, which produces a waist slightly before (or after) the PR/SR mirror, potentially with another folding mirror in between.
Since we start with an almost collimated beam, the only significant Gouy phase will be picked up close to the resultant focus, which is necessarily close to the PR/SR mirror. Depending on the focussing distance, one obtains a more or less strong focus and therefore high intensities on the PR/SR mirror.
virgo = finesse.Model()
length_of_recycling_cavity = 100.0
virgo.parse(f"""
l l1 P=1.0
link(l1, 1.0, mEM)
# arm cavity (with Phase II parameters)
m mEM R=0.99 L=0 Rc=-1683
s sAC mEM.p2 mIM.p1 L=2999.8
m mIM R=0.99 L=0 Rc=1420
s sIM mIM.p2 mIM_AR.p1 nr=1.44 L=0.2
m mIM_AR R=0.0 L=0.0 Rc=1420
cav cAC mIM.p1.o
# focussing lens, then looking at beam parameters a certain distance away
s sIM_lens mIM_AR.p2 mPR2.p1
lens mPR2 f=49.0
nothing mPR
s slens_PR mPR2.p2 mPR.p1
bp w_PR mPR.p1.i w
bp w0_PR mPR.p1.i w0
""")
virgo.modes(maxtem=0)
virgo.slens_PR.L = length_of_recycling_cavity
Let’s scan the lens focal length around the length of the cavity (roughly we have a collimated beam, so distance to waist after lens is roughly the same as the focal length). Note, in principle the propagate_beam function can return a symbolic formula where it is then easy to directly insert a linspace array — but for some reason the parameter substitution does not work right now.
focal_lengths = np.linspace(length_of_recycling_cavity - 10.0, length_of_recycling_cavity, 11)
for focal_length in focal_lengths:
virgo.mPR2.f = focal_length
trace = virgo.propagate_beam(from_node=virgo.mIM.p2.o, to_node=virgo.mPR.p1)
print(f'f={focal_length}m: {trace.total_acc_gouy:.2f}deg')
f=90.0m: 160.64deg
f=91.0m: 153.35deg
f=92.0m: 139.16deg
f=93.0m: 108.77deg
f=94.0m: 65.30deg
f=95.0m: 38.82deg
f=96.0m: 26.46deg
f=97.0m: 19.92deg
f=98.0m: 15.96deg
f=99.0m: 13.34deg
f=100.0m: 11.48deg
Here we have a specific value of f=90.0m, which results in a beam radius of 2.1mm on the recycling mirror, for an accumulated Gouy phase of 20deg. Note that there’s basically two symmetric solutions, one with waist shortly before the recycling mirror, requiring a concave RoC; and one slightly behind the recycling mirror, requiring a convex RoC. Which one is better can surely be a topic of much debate 🙂
virgo.mPR2.f = 90.0
out = virgo.run()
print(f"w @ PR = {out['w_PR']*1000.0:.3f}mm\nw0 = {out['w0_PR']*1000.0:.3f}mm")
trace = virgo.propagate_beam(from_node=virgo.mIM_AR.p2.o, to_node=virgo.mPR.p1)
trace.plot();