finesse.components.mechanical.SuspensionZPK

Overview

class finesse.components.mechanical.SuspensionZPK(name, *args, **kwargs)

Bases: Connector

A suspension that models multiple poles and zeros for the z motion of an optic. ZPKs should describe the force to displacement transfer function. The user must ensure that minus signs are correct for this transfer function as well as defining complex conjugae pairs for physically correct behaviour.

ZPK terms are in units of radians.

The k gain parameter is a model parameter, so can be tuned and set to a symbol during a simulation. Zeros and poles however are fixed during a simulation.

Parameters:
namestr

Element name

connected_toElement or mechanical port

Mechanical port or element to attach this suspension to

z, parray[float] or None

Zeros and poles of the transfer function

kfloat

Gain of the transfer function

Examples

Free mass can be implemented using two poles at 0Hz and a gain of 1/Mass:

import matplotlib.pyplot as plt
model = finesse.Model()
model.parse('''
l l1
m m1 R=1 T=0
link(l1, m1)
fsig(1)
frequency_response(
    geomspace(1, 100, 100),
    l1.amp,
    m1.mech.z
)
''')
model.add(SuspensionZPK('m1_sus', model.m1.mech, [], [0, 0], 1/10))
# Generate a bode plot for looking at the suspension transfer function
plt.figure()
model.m1_sus.bode_plot(label='10kg')
model.m1_sus.k = 1/100
model.m1_sus.bode_plot(label='100kg')
plt.legend()
# Compute the transfer function from laser amplitude to mirror motion
plt.figure()
out = model.run()
out.plot();

Properties

SuspensionZPK.connected_to

Methods

SuspensionZPK.__init__(self, name, ...[, ...])

SuspensionZPK.bode_plot(self[, f, Hz])

Plot bode function for this suspensions force to displacement transfer function.

SuspensionZPK.fill(self, ws)