diff --git a/playground/anna/PI_paper/kat_files/generate_kats.py b/playground/anna/PI_paper/kat_files/generate_kats.py new file mode 100644 index 0000000000000000000000000000000000000000..cbc63125efb437b77e956d05496267a5e94ef7bb --- /dev/null +++ b/playground/anna/PI_paper/kat_files/generate_kats.py @@ -0,0 +1,64 @@ +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +import matplotlib.pyplot as plt +import numpy as np + +from pykat import finesse +from pykat.commands import * +import pykat.gw_detectors.ifo as ifo + +def main(): + """ + File to generate kat objects from the core aLIGO + file, ready for manual tuning. + Anna G 04.01.17 + """ + global kat,out,LIGO1 + + LIGO1 = ifo.aLIGO(debug=True) + kat=LIGO1.kat + kat.verbose=True + + ## the full DR file + DRkat=kat.deepcopy() + DRkat.saveScript("raw/PI-DRMi.kat") + + ## the usual builddown files + kat = DRkat.deepcopy() + #PR + ifo.make_transparent(kat,["SRM","SRMAR"]) + kat.cavSRX.remove() + kat.cavSRY.remove() #didn't do this before...necessary/different? + kat.saveScript("raw/PI-PRMi.kat") + #FP + ifo.make_transparent(kat,["PRM","PRMAR"]) + kat.cavPRX.remove() + kat.cavPRY.remove() + kat.saveScript("raw/PI-FPMi.kat") + #1arm + ifo.make_transparent(kat,["ETMY","ITMY","ETMYAR","ITMYAR"]) + kat.cavYARM.remove() + kat.saveScript("raw/PI-Xarm.kat") + + ## buildding down with 1 arm removed first + kat = DRkat.deepcopy()#returning to the built up version + #1arm, DR + ifo.make_transparent(kat,["ETMY","ITMY","ETMYAR","ITMYAR"]) + kat.cavYARM.remove() + kat.saveScript("raw/PI-noY-DRMi.kat") + # PR + ifo.make_transparent(kat,["SRM","SRMAR"]) + kat.cavSRX.remove() + kat.cavSRY.remove() + kat.saveScript("raw/PI-noY-PRMi.kat") + # Michelson + ifo.make_transparent(kat,["PRM","PRMAR"]) + kat.cavPRX.remove() + kat.cavPRY.remove() + kat.saveScript("raw/PI-noY-FPMi.kat")#should be identical to PI-Xarm.kat + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/playground/anna/PI_paper/kat_files/tune.py b/playground/anna/PI_paper/kat_files/tune.py new file mode 100644 index 0000000000000000000000000000000000000000..85ca7089c167ce918ff11e68d13801ca3124b036 --- /dev/null +++ b/playground/anna/PI_paper/kat_files/tune.py @@ -0,0 +1,64 @@ +from pykat import finesse +from pykat.commands import * +import pykat.gw_detectors.ifo as ifo +import matplotlib.pyplot as plt +import tune_tools as tt + +def main(): + # ################# make ##################### + #initialising + ######################## + LIGO1 = ifo.aLIGO(debug=True) + kat = finesse.kat() + kat.verbose=False + ######################## + # kat = LIGO1.kat + katfile = "DRMi" + kat.loadKatFile("tuned/PI-"+katfile+".kat") + ######################## + kat.maxtem = 0#'off' + kat.phase = 2 + + # #Making lock blocks + # # ######################## #high masses to ensure TF calcs work in DRMi_tuning + # kat.ETMX.mass = 1e9 + # kat.ETMY.mass = 1e9 + # kat.ITMX.mass = 1e9 + # kat.ITMY.mass = 1e9 + # ################ make locks #################### # edited from Andreas' TestLIGO file + # BlockList = kat._kat__blocks + # if 'locks' in BlockList: + # kat.removeBlock('locks') + # if 'errsigs' in BlockList: + # kat.removeBlock('errsigs') + # if 'powers' in BlockList: + # kat.removeBlock('powers') + # ######################## # tuning the original DR file + # kat = tt.DRMi_tuning(kat) + # ######################## # re-including the real masses + # kat.ETMX.mass = 40 + # kat.ETMY.mass = 40 + # kat.ITMX.mass = 40 + # kat.ITMY.mass = 40 + + ############### cut down ##################### + ifo.make_transparent(kat,["SRM","SRMAR"]) + kat.SRCL_lock.enable=False + + ################# save ###################### + katfile = "PRMi" + # kat.saveScript("tuned/PI-"+katfile+".kat") + + # ################# test ##################### + dofs = [LIGO1.DARM, LIGO1.CARM, LIGO1.PRCL, LIGO1.MICH]#, LIGO1.SRCL] + locks = [kat.ETMX_lock, kat.ETMY_lock, kat.PRCL_lock, kat.MICH_lock, kat.ITMY_lock]#, kat.SRCL_lock] + prc = True + # print(kat) + # LIGO1.plot_error_signals(kat, xlimits=[-1e-2, 1e-2]) + tt.plot_errs(kat,dofs,xlimits=[-1e-2, 1e-2]) + tt.test_locks(kat,locks,PRC=prc) + + END = input('press enter to finish and close all plots')#to override auto-closing. + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/playground/anna/PI_paper/kat_files/tune_tools.py b/playground/anna/PI_paper/kat_files/tune_tools.py new file mode 100644 index 0000000000000000000000000000000000000000..06a7709a66ad5864f1e3c2e1c681e2cada8defb2 --- /dev/null +++ b/playground/anna/PI_paper/kat_files/tune_tools.py @@ -0,0 +1,118 @@ +# Collection of tools used to ~manually tune the different kat objects. +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +import matplotlib.pyplot as plt +from matplotlib.ticker import FormatStrFormatter +import numpy as np + +from pykat import finesse +from pykat.commands import * +import pykat.gw_detectors.ifo as ifo + +LIGO1 = ifo.aLIGO(debug=True) + +def plot_errs(_kat,dofs=[LIGO1.DARM, LIGO1.CARM, LIGO1.PRCL, LIGO1.SRCL, LIGO1.MICH],xlimits=[-1,1]): + #based on ifo.py, adapted to select dofs + kat = _kat.deepcopy() + kat.verbose=False + kat.noxaxis=True + #remove the lock block if it's present + BlockList = kat._kat__blocks + if 'locks' in BlockList: + kat.removeBlock('locks') + if 'errsigs' in BlockList: + kat.removeBlock('errsigs') + if 'powers' in BlockList: + kat.removeBlock('powers') + #plotting + w = int((len(dofs)+1)/2) #make figure of nice size for number of dofs: + idx=1 + fig = plt.figure() + for d in dofs: + ax = fig.add_subplot(w,2,idx) + idx+=1 + out = ifo.scan_DOF(kat, d, xlimits = np.multiply(d.scale,xlimits), relative = True) + ax.plot(out.x,out[d.signal_name(kat)]) + ax.set_xlim([np.min(out.x), np.max(out.x)]) + ax.set_xlabel("{} [deg]".format(d.name)) + ax.set_ylabel('{} [W] '.format(d.port.name)) + ax.grid() + plt.tight_layout() + plt.show(block=0) + + +def test_locks(_kat,locks,PRC=False): + # separated from DRMi_tuning + kat = _kat.deepcopy() + if PRC==True: + # check f1 resonance in PRC + kat = _kat.deepcopy() + LIGO1.check_f1_PRC_resonance(kat) + # test lock with BS tuning + code = """ + xaxis BS phi lin 0 2 100 + yaxis abs + #showiterate -1 + """ + kat.parseCommands(code) + out = kat.run() + plt.figure() + ifo.make_list_copy(locks) + for l in locks: + plt.plot(out.x,out[l.name], label=l.name) + plt.legend() + plt.grid() + plt.show(block=0) + +def DRMi_tuning(_kat): + # edited from Andreas' TestLIGO file + kat = _kat.deepcopy() + # BlockList = kat._kat__blocks + # if 'locks' in BlockList: + # kat.removeBlock('locks') + # if 'errsigs' in BlockList: + # kat.removeBlock('errsigs') + # if 'powers' in BlockList: + # kat.removeBlock('powers') + #pretuning and DC offset + pretune(kat, verbose=True, debug=False) + LIGO1.pretune_status(kat) + LIGO1.lengths_status(kat) + DCoffset = 20e-12 / kat.lambda0 * 180.0 # 20 pm + LIGO1.set_DC_offset(kat, DCoffset=DCoffset, verbose=True) + #LIGO1.plot_error_signals(kat, xlimits=[-1e-2, 1e-2]) + #locks + kat_lock = prepare_locks(kat, verbose=True) + kat_lock.noxaxis = True + kat_lock.verbose = True + out = kat_lock.run() + LIGO1.apply_lock_feedback(kat_lock, out) + return kat_lock + + +def pretune(kat, verbose=False, debug=False): + # from Andreas' TestLIGO file + kat_pretune = kat.deepcopy() + ifo.remove_components(kat_pretune, ["mod1", "lmod2", "mod2", "lmod3"], component_in="lmod1"); + LIGO1.pretune(kat_pretune, verbose=verbose, pretune_precision=1.0e-4) + pretuning = LIGO1.get_tunings(kat_pretune) + if debug: + LIGO1.plot_pretuning_powers(kat_pretune, xlimits=[-.1, .1]) + LIGO1.set_tunings(kat, pretuning) + # adjusting length of PRC and SRC versus mod frequencies + LIGO1.adjust_PRC_length(kat, verbose=verbose) + if debug: + LIGO1.check_f1_PRC_resonance(kat) + +def prepare_locks(_kat, DCoffset=None, verbose=False): + # from Andreas' TestLIGO file + kat = _kat.deepcopy() + print("-- preparing block with lock commands") + code = LIGO1.generate_errsig_block(kat, noplot=True) + kat.parseCommands(code) + code = LIGO1.generate_locks(kat, verbose=True) + code = LIGO1.generate_lock_block(kat, verbose=True) + kat.parseCommands(code) + return kat \ No newline at end of file diff --git a/playground/anna/PI_paper/kat_files/tuned/PI-DRMi.kat b/playground/anna/PI_paper/kat_files/tuned/PI-DRMi.kat new file mode 100644 index 0000000000000000000000000000000000000000..5f53e3a25a9c5a0632760a8260e299bd7f946ec0 --- /dev/null +++ b/playground/anna/PI_paper/kat_files/tuned/PI-DRMi.kat @@ -0,0 +1,146 @@ +% Generated by PyKat 06.01.2017 15:35:57 + +%%% FTblock laser +l L0 125.0 0 0.0 n0 +s lmod1 1.0 n0 n1 +mod mod1 9099471.0 0.18 1 pm 0.0 n1 n2 +s lmod2 1.0 n2 n3 +mod mod2 45497355.0 0.18 1 pm 0.0 n3 n4 +s lmod3 1.0 n4 nREFL +%%% FTend laser + +%%% FTblock PRC +m PRMAR 0.0 0.99996 0.0 nREFL nPRMs1 +s sPRMsub1 0.0737 1.44963098985906 nPRMs1 nPRMs2 +m PRM 0.9699915 0.03 0.003 nPRMs2 nPRM2 +put* PRM phi $PRCL_lock +attr PRM Rcx 11.009 +attr PRM Rcy 11.009 +s lp1 16.610426383062517 nPRM2 nPR2a +bs PR2 0.9997125 0.00025 0.0 -0.79 nPR2a nPR2b nPOP dump11 +attr PR2 Rcx -4.545 +attr PR2 Rcy -4.545 +s lp2 16.1647 nPR2b nPR3a +bs PR3 0.9999625 0.0 0.0 0.615 nPR3a nPR3b dump12 dump13 +attr PR3 Rcx 36.027 +attr PR3 Rcy 36.027 +s lp3 19.5381 nPR3b nPRBS +%%% FTend PRC + +%%% FTblock BS +bs BS 0.4999625 0.5 0.0 45.0 nPRBS nYBS nBSi1 nBSi3 +s BSsub1 0.0687 1.44963098985906 nBSi1 nBSi2 +s BSsub2 0.0687 1.44963098985906 nBSi3 nBSi4 +bs BSAR1 5e-05 0.99995 0.0 -29.195 nBSi2 dump14 nXBS nPOX +bs BSAR2 5e-05 0.99995 0.0 29.195 nBSi4 dump15 nSRBS dump16 +%%% FTend BS + +%%% FTblock Yarm +s ly1 5.0126 nYBS nITMY1a +lens ITMY_therm 34500.0 nITMY1a nITM_th1 +s ITMY_th1 0.0 nITM_th1 nITM_th2 +lens ITMY_lens inf nITM_th2 nITM_th3 +s ITMY_th2 0.0 nITM_th3 nITMY1 +m ITMYAR 0.0 0.99998 0.0 nITMY1 nITMYs1 +s ITMYsub 0.2 1.44963098985906 nITMYs1 nITMYs2 +m ITMY 0.9859625 0.014 0.0012 nITMYs2 nITMY2 +put* ITMY phi $ITMY_lock +attr ITMY Rcx -1934.0 +attr ITMY Rcy -1934.0 +attr ITMY mass 40.0 +s LY 3994.4692 nITMY2 nETMY1 +m ETMY 0.9999575 5e-06 0.004601519713819729 nETMY1 nETMYs1 +put* ETMY phi $ETMY_lock +attr ETMY Rcx 2245.0 +attr ETMY Rcy 2245.0 +attr ETMY mass 40.0 +s ETMYsub 0.2 1.44963098985906 nETMYs1 nETMYs2 +m ETMYAR 0.0 0.9995 0.0 nETMYs2 nPTY +%%% FTend Yarm + +%%% FTblock Xarm +s lx1 4.993 nXBS nITMX1a +lens ITMX_therm 34500.0 nITMX1a nITMX_th1 +s ITMX_th1 0.0 nITMX_th1 nITMX_th2 +lens ITMX_lens inf nITMX_th2 nITMX_th3 +s ITMX_th2 0.0 nITMX_th3 nITMX1 +m ITMXAR 0.0 0.99998 0.0 nITMX1 nITMXs1 +s ITMXsub 0.2 1.44963098985906 nITMXs1 nITMXs2 +m ITMX 0.9859625 0.014 -0.0012 nITMXs2 nITMX2 +put* ITMX phi $MICH_lock +attr ITMX Rcx -1934.0 +attr ITMX Rcy -1934.0 +attr ITMX mass 40.0 +s LX 3994.4692 nITMX2 nETMX1 +m ETMX 0.9999575 5e-06 -0.004601298494819022 nETMX1 nETMXs1 +put* ETMX phi $ETMX_lock +attr ETMX Rcx 2245.0 +attr ETMX Rcy 2245.0 +attr ETMX mass 40.0 +s ETMXsub 0.2 1.44963098985906 nETMXs1 nETMXs2 +m ETMXAR 0.0 0.9995 0.0 nETMXs2 nPTX +%%% FTend Xarm + +%%% FTblock SRC +s ls3 19.3661 nSRBS nSR3b +bs SR3 0.9999625 0.0 0.0 0.785 nSR3b nSR3a dump17 dump18 +attr SR3 Rcx 35.972841 +attr SR3 Rcy 35.972841 +s ls2 15.4435 nSR3a nSR2b +bs SR2 0.9999625 0.0 0.0 -0.87 nSR2b nSR2a dump19 dump20 +attr SR2 Rcx -6.406 +attr SR2 Rcy -6.406 +s ls1 15.7586 nSR2a nSRM1 +m SRM 0.7999913 0.2 -90.0012 nSRM1 nSRMs1 +put* SRM phi $SRCL_lock +attr SRM Rcx -5.6938 +attr SRM Rcy -5.6938 +s SRMsub 0.0749 1.44963098985906 nSRMs1 nSRMs2 +m SRMAR 0.0 0.99999995 0.0 nSRMs2 nSRM2 +%%% FTend SRC + +%%% FTblock HOMs +cav cavXARM ITMX nITMX2 ETMX nETMX1 +cav cavYARM ITMY nITMY2 ETMY nETMY1 +cav cavPRX PRM nPRM2 ITMX nITMXs2 +cav cavPRY PRM nPRM2 ITMY nITMYs2 +cav cavSRX SRM nSRM1 ITMX nITMXs2 +cav cavSRY SRM nSRM1 ITMY nITMYs2 +%%% FTend HOMs + +%%% FTblock errsigs +noplot AS_DC +pd0 AS_DC nSRM2 +noplot REFL_f1_I +pd1 REFL_f1_I 9099471 101.0 nREFL +noplot POP_f1_I +pd1 POP_f1_I 9099471 101.0 nPOP +noplot POP_f2_Q +pd1 POP_f2_Q 45497355 103.0 nPOP +noplot REFL_f2_I +pd1 REFL_f2_I 45497355 14.0 nREFL +%%% FTend errsigs + +%%% FTblock locks +set AS_f2_I_re AS_DC re +set CARM_err REFL_f1_I re +set PRCL_err POP_f1_I re +set MICH_err POP_f2_Q re +set SRCL_err REFL_f2_I re +func DARM_err = $AS_f2_I_re - 1.56140670384883 +lock DARM_lock $DARM_err 0.0035 0.0048 +lock CARM_lock $CARM_err 0.00039 0.00043 +lock PRCL_lock $PRCL_err -2.8 0.00012 +lock MICH_lock $MICH_err 43.0 3.9e-05 +lock SRCL_lock $SRCL_err 2.6 0.0016 +noplot ITMY_lock +func ITMY_lock = (-1.0) * $MICH_lock +noplot ETMX_lock +func ETMX_lock = $CARM_lock + $MICH_lock + $DARM_lock +noplot ETMY_lock +func ETMY_lock = $CARM_lock - $MICH_lock - $DARM_lock +%%% FTend locks +phase 2 +maxtem 0 +noxaxis +yaxis abs diff --git a/playground/anna/PI_paper/kat_files/tuned/PI-PRMi.kat b/playground/anna/PI_paper/kat_files/tuned/PI-PRMi.kat new file mode 100644 index 0000000000000000000000000000000000000000..cc14e27ef778e22897f7dd1e82ce4b7f0577c104 --- /dev/null +++ b/playground/anna/PI_paper/kat_files/tuned/PI-PRMi.kat @@ -0,0 +1,146 @@ +% Generated by PyKat 06.01.2017 13:46:33 + +%%% FTblock laser +l L0 125.0 0 0.0 n0 +s lmod1 1.0 n0 n1 +mod mod1 9099471.0 0.18 1 pm 0.0 n1 n2 +s lmod2 1.0 n2 n3 +mod mod2 45497355.0 0.18 1 pm 0.0 n3 n4 +s lmod3 1.0 n4 nREFL +%%% FTend laser + +%%% FTblock PRC +m PRMAR 0.0 0.99996 0.0 nREFL nPRMs1 +s sPRMsub1 0.0737 1.44963098985906 nPRMs1 nPRMs2 +m PRM 0.9699915 0.03 0.003 nPRMs2 nPRM2 +put* PRM phi $PRCL_lock +attr PRM Rcx 11.009 +attr PRM Rcy 11.009 +s lp1 16.610426383062517 nPRM2 nPR2a +bs PR2 0.9997125 0.00025 0.0 -0.79 nPR2a nPR2b nPOP dump11 +attr PR2 Rcx -4.545 +attr PR2 Rcy -4.545 +s lp2 16.1647 nPR2b nPR3a +bs PR3 0.9999625 0.0 0.0 0.615 nPR3a nPR3b dump12 dump13 +attr PR3 Rcx 36.027 +attr PR3 Rcy 36.027 +s lp3 19.5381 nPR3b nPRBS +%%% FTend PRC + +%%% FTblock BS +bs BS 0.4999625 0.5 0.0 45.0 nPRBS nYBS nBSi1 nBSi3 +s BSsub1 0.0687 1.44963098985906 nBSi1 nBSi2 +s BSsub2 0.0687 1.44963098985906 nBSi3 nBSi4 +bs BSAR1 5e-05 0.99995 0.0 -29.195 nBSi2 dump14 nXBS nPOX +bs BSAR2 5e-05 0.99995 0.0 29.195 nBSi4 dump15 nSRBS dump16 +%%% FTend BS + +%%% FTblock Yarm +s ly1 5.0126 nYBS nITMY1a +lens ITMY_therm 34500.0 nITMY1a nITM_th1 +s ITMY_th1 0.0 nITM_th1 nITM_th2 +lens ITMY_lens inf nITM_th2 nITM_th3 +s ITMY_th2 0.0 nITM_th3 nITMY1 +m ITMYAR 0.0 0.99998 0.0 nITMY1 nITMYs1 +s ITMYsub 0.2 1.44963098985906 nITMYs1 nITMYs2 +m ITMY 0.9859625 0.014 0.0012 nITMYs2 nITMY2 +put* ITMY phi $ITMY_lock +attr ITMY Rcx -1934.0 +attr ITMY Rcy -1934.0 +attr ITMY mass 40.0 +s LY 3994.4692 nITMY2 nETMY1 +m ETMY 0.9999575 5e-06 0.004601519713819729 nETMY1 nETMYs1 +put* ETMY phi $ETMY_lock +attr ETMY Rcx 2245.0 +attr ETMY Rcy 2245.0 +attr ETMY mass 40.0 +s ETMYsub 0.2 1.44963098985906 nETMYs1 nETMYs2 +m ETMYAR 0.0 0.9995 0.0 nETMYs2 nPTY +%%% FTend Yarm + +%%% FTblock Xarm +s lx1 4.993 nXBS nITMX1a +lens ITMX_therm 34500.0 nITMX1a nITMX_th1 +s ITMX_th1 0.0 nITMX_th1 nITMX_th2 +lens ITMX_lens inf nITMX_th2 nITMX_th3 +s ITMX_th2 0.0 nITMX_th3 nITMX1 +m ITMXAR 0.0 0.99998 0.0 nITMX1 nITMXs1 +s ITMXsub 0.2 1.44963098985906 nITMXs1 nITMXs2 +m ITMX 0.9859625 0.014 -0.0012 nITMXs2 nITMX2 +put* ITMX phi $MICH_lock +attr ITMX Rcx -1934.0 +attr ITMX Rcy -1934.0 +attr ITMX mass 40.0 +s LX 3994.4692 nITMX2 nETMX1 +m ETMX 0.9999575 5e-06 -0.004601298494819022 nETMX1 nETMXs1 +put* ETMX phi $ETMX_lock +attr ETMX Rcx 2245.0 +attr ETMX Rcy 2245.0 +attr ETMX mass 40.0 +s ETMXsub 0.2 1.44963098985906 nETMXs1 nETMXs2 +m ETMXAR 0.0 0.9995 0.0 nETMXs2 nPTX +%%% FTend Xarm + +%%% FTblock SRC +s ls3 19.3661 nSRBS nSR3b +bs SR3 0.9999625 0.0 0.0 0.785 nSR3b nSR3a dump17 dump18 +attr SR3 Rcx 35.972841 +attr SR3 Rcy 35.972841 +s ls2 15.4435 nSR3a nSR2b +bs SR2 0.9999625 0.0 0.0 -0.87 nSR2b nSR2a dump19 dump20 +attr SR2 Rcx -6.406 +attr SR2 Rcy -6.406 +s ls1 15.7586 nSR2a nSRM1 +m SRM 0.7999913 0.2 -90.0012 nSRM1 nSRMs1 +put* SRM phi $SRCL_lock +attr SRM Rcx -5.6938 +attr SRM Rcy -5.6938 +s SRMsub 0.0749 1.44963098985906 nSRMs1 nSRMs2 +m SRMAR 0.0 0.99999995 0.0 nSRMs2 nSRM2 +%%% FTend SRC + +%%% FTblock HOMs +cav cavXARM ITMX nITMX2 ETMX nETMX1 +cav cavYARM ITMY nITMY2 ETMY nETMY1 +cav cavPRX PRM nPRM2 ITMX nITMXs2 +cav cavPRY PRM nPRM2 ITMY nITMYs2 +cav cavSRX SRM nSRM1 ITMX nITMXs2 +cav cavSRY SRM nSRM1 ITMY nITMYs2 +%%% FTend HOMs + +%%% FTblock errsigs +noplot AS_DC +pd0 AS_DC nSRM2 +noplot REFL_f1_I +pd1 REFL_f1_I 9099471 101.0 nREFL +noplot POP_f1_I +pd1 POP_f1_I 9099471 101.0 nPOP +noplot POP_f2_Q +pd1 POP_f2_Q 45497355 103.0 nPOP +noplot REFL_f2_I +pd1 REFL_f2_I 45497355 14.0 nREFL +%%% FTend errsigs + +%%% FTblock locks +set AS_f2_I_re AS_DC re +set CARM_err REFL_f1_I re +set PRCL_err POP_f1_I re +set MICH_err POP_f2_Q re +set SRCL_err REFL_f2_I re +func DARM_err = $AS_f2_I_re - 1.56140670384883 +lock DARM_lock $DARM_err 0.0035 0.0048 +lock CARM_lock $CARM_err 0.00039 0.00043 +lock PRCL_lock $PRCL_err -2.8 0.00012 +lock MICH_lock $MICH_err 43.0 3.9e-05 +lock SRCL_lock $SRCL_err 2.6 0.0016 +noplot ITMY_lock +func ITMY_lock = (-1.0) * $MICH_lock +noplot ETMX_lock +func ETMX_lock = $CARM_lock + $MICH_lock + $DARM_lock +noplot ETMY_lock +func ETMY_lock = $CARM_lock - $MICH_lock - $DARM_lock +%%% FTend locks +phase 2 +maxtem 0 +noxaxis +yaxis lin abs