finesse.components.ligo.suspensions.LIGOQuadSuspension

Overview

class finesse.components.ligo.suspensions.LIGOQuadSuspension(name, connect_to)[source]

Bases: finesse.components.general.Connector

A mechanics element that represents a LIGO Quad suspension.

LIGO Quad generate_Quad_Model_Production.m SVN REV 10312 https://redoubt.ligo-wa.caltech.edu/svn/sus/trunk/QUAD/Common/MatlabTools

The Matlab code above was run to generate the state space model which was exported to Python. The Python Controls toolbox was then used to generate the transfer-function coefficients and stored in a Pickled file which this object accesses.

The component being suspended must have a mechanical port with nodes z, pitch, and yaw and forces F_z, F_pitch, and F_yaw.

This mechanics element provides access to the ground (gnd port) and penultimate (pum port) mass stages for injecting in displacement noise or feedback signals for controlling the test (tst port) mass.

>>> from scipy.io import loadmat
>>> import bz2
>>> import pickle
>>> 
>>> SS = loadmat('/Users/ddb/quad_ss.mat')
>>> 
>>> A = SS['ss'][0][0][0]
>>> B = SS['ss'][0][0][1]
>>> C = SS['ss'][0][0][2]
>>> D = SS['ss'][0][0][3]
>>> inputs = {_[0]: i for i, _ in enumerate(SS['ss'][0][0][15].squeeze())}
>>> outputs = {_[0]: i for i, _ in enumerate(SS['ss'][0][0][18].squeeze())}
>>> 
>>> tfs = control.ss2tf(A, B, C, D)
>>> 
>>> with bz2.BZ2File("/Users/ddb/git/finesse3/src/finesse/components/ligo/data/quad_damped_ss.pbz2", 'w') as f:
>>>     pickle.dump({
>>>         "A": A,
>>>         "B": B,
>>>         "C": C,
>>>         "D": D,
>>>         "inputs": inputs,
>>>         "outputs": outputs
>>>     }, f, protocol=3)

Properties

LIGOQuadSuspension.ss

Methods

LIGOQuadSuspension.__init__(self, name)

LIGOQuadSuspension.bode_plot(input_node, ...)

LIGOQuadSuspension.input_output_indices(...)