CheckLinearity returning TypeError for a laser frequency lock to a cavity
Summary
CheckLinearity returning TypeError when attempting to check the linearity of an error signal with laser frequency feedback.
Steps to reproduce
model = finesse.script.parse("""
# DC Power Detectors
pd PD_out PMC_out.p3.o # Cavity Output
pd PD1_r PMC_1.p2.o # Port 1 Reflection
pd PD2_r PMC_2.p3.o # Port 2 Reflection
pd PD3_r PMC_3.p3.o # Port 3 Reflection
# Laser - Engineering Prototype
l L_1 P=1 f=0 phase=0 signals_only=false
# Mirrors - PMC Cavity
bs PMC_1 R=0.99579**2 T=1-PMC_1.R alpha=5
bs PMC_2 R=PMC_1.R T=1-PMC_2.R alpha=5 Rc=[3,3]
bs PMC_3 R=PMC_1.R T=1-PMC_3.R alpha=5 Rc=[3,3]
bs PMC_out R=0.975 T=1-PMC_out.R alpha=5
# Modulators
mod EOM_1 35.5M midx=0.3 order=3
# Space - Cavity Geometry
link(L_1, EOM_1, PMC_1.p1)
link(PMC_1.p3, 0.5, PMC_out.p1)
link(PMC_out.p2, 0.51, PMC_2.p1)
link(PMC_2.p2, 0.5, PMC_3.p1)
link(PMC_3.p2, 0.51, PMC_1.p4)
# Detectors at Port Reflections
readout_rf P1_AC PMC_1.p2.o f=EOM_1.f
dof L_frq L_1.dofs.frq 1
lock LOCK_1 P1_AC_I L_frq.DC 1 1e-9
fsig(1)
modes(off)
""")
model.L_frq.DC += 0.01
lock_error = model.run(GetErrorSignals("LOCK_1"))
print("Initial Error Signals:", lock_error.results, end="\n\n")
error_sigs = model.run(CheckLinearity(plot_results=True))
Bug behavior
CheckLinearity does not successfully execute.
What is the expected correct behavior?
CheckLinearity should execute and display the correct error signals.
Relevant logs and/or screenshots
Possible Fixes
Allow laser frequency to be tunable? May be related to CheckLinearity searching for a DC operating point of laser frequency? Something with Laser dofs?
Operating system
~label /"OS::MacAppleSilicon
Edited by Zac Holmes