I have made a function to optimise the overall gain, pole frequencies and zero frequencies for the oplev filter. The script will optimize any user defined number of poles and zeros in order to minimise the RMS motion below a certain cut off frequency (in this case 20Hz). The overall gain is adjusted so that each trial filter shape always has a UGF of 10 Hz.
I think this is a nice start. Its clear that we don't want to use this feedback law, but the technique can be tweaked to do what we want by just tweaking our cost function.
Let's move the scripts into the SUS/ scripts area and then start putting in weights that do what we want:
1) Limit the gain peaking at the upper UGF to 6 dB.
2) Minimum phase margin of 45 deg.
3) Minimum gain margin of 10 dB.
4) Lower UGF = 0.1 Hz / Upper UGF = 10 Hz.
5) Assume a A2L coupling of 0.003 m/rad and constrain the injected noise at the test mass to be less than the seismic + thermal level.
6) Looser noise contraint above 50 Hz for the non TM loops.
I moved two matlab scripts into the folder /cvs/cds/rtcds/caltech/c1/scripts/SUS/Oplev_filter_optimization
These are the function 'filter_optimiser_zeros_and_poles.m', and the example script to run the function 'run_filter_optimiser.m'. Type 'help filter_optimiser_zeros_and_poles.m' to get details about the function.
I haven't implemented the new weights yet. I've pasted them into the the file header to remind me/us of the work to be done on the function.