Post LS2 implementations of the beam phase, frequency and synchro loops
- Total applied frequency correction based on the sum of the three
- Discrete equations of the closed-loop system
- Integral equations for the SL
- 2 equations for each loop -> matrix equation of 6 variables
- Want to feedback only on frequency and have phase correction = 0
- Linear response of 3 loops
- Can find a suitable matrix with the Linear Quadratic Regulator (LQR) and solve numerically
- Feedback design: find best regulator and state-cost matrices
- Want to check closed-loop system with external perturbation and verify loop stability
- Obtaining the transfer function for the 3 loops
Implementation in BLonD
- Calculate the LQR gains e.g. every 5000 turns, then interpolate to turn-by-turn values for tracking
- Some entries are defined dynamically
- The K matrix stores the 6 gains along the cycle
- Dependencies: python control library
- Option for Bode plot plotting of transfer functions
- Optional: tracking of gain solutions and some observables that can be compared with BLonD tracking results
- Loops ON
- Can import Q11 also from measurements
- Delay turns: when the feedback will act: after 3 turns, for instance
- Initialize BeamFeedback and pass to tracker
- BeamFeedback SPS entry
- Total frequency correction from PL + FL + SL
- Modifications to previous methods listed
- Correction of phase set point for collective effects
- Benchmarks
- Good agreement btw python and Mathematica for time-evolution of matrices
- Good agreement with impulse responses as calculated by Philippe
- Matrix tracking vs BLonD tracking
- Impulse response not exactly equivalent, as the frequency correction is an output for BLonD and input for the matrix tracking, but good enough agreement
- Performance
- 450000 turns tracking, precalculation of gains every 5000 turns before the simulation (8 s total)
- BeamFeedback 1.4 s/turn, called every turn vs kick+drift ~60 s/turn
- NO performance bottleneck