Skip to content

factory add_AC_loops improvements

Kevin Kuns requested to merge kevin.kuns/finesse-ligo:AC-loops into ddb

This does two things

  1. Allows the input matrix to be either a DegreeOfFreedom or a ReadoutDetectorOutput. Among other things, this is useful for suspension modeling where one might care about radiation pressure dynamics when closing loops but not want or need to deal with the complications of optical sensing.
  2. When a scalar value is given in a drive matrix or an input matrix, that is the gain used in the feedback loop. Previously any scalar value made the connection with unity gain.

For the first change, the logic is slightly complicated (it was already fairly complicated) to keep the same API where the matrices can be specified with Munch's with underscores. A simpler solution would be to require strings as keys so that they can have periods as well. For example, the current default is

LSC_input_matrix.CARM.REFL9_I = 1

which would become

LSC_input_matrix.CARM["REFL9.I"] = 1

I personally like this a lot better since it's not much different and greatly simplifies the currently required logic to figure out that REFL9_I needs to be replaced with REFL9.I when making the connection. It removes the need to treat DegreeOfFreedom and ReadoutDetectorOutput differently. It furthermore allows you to connect directly to a mechanical node without needing to go through a DegreeOfFreedom.

For the second change, it is implemented by connecting everything with a ZPKFilter. Previously a ZPK filter was only used if a tuple was given specifying a ZPK filter and directly connected otherwise. Doing everything with a ZPKFilter simplifies the logic, but it could be changed.

Merge request reports