finesse.analysis.actions.lti.FrequencyResponse2
¶
Overview
- class finesse.analysis.actions.lti.FrequencyResponse2(f, inputs, outputs, *, name='frequency_response2')[source]¶
Bases:
Action
Computes the frequency response of a signal injected at an optical port at a particular optical frequency. This differs from
FrequencyResponse
in the way the inputs and outputs are prescribed. ForFrequencyResponse2
you specify optical input nodes and a signal output node.This action does not alter the model state. This action will ignore any currently definied signal generator elements in the model.
Produces an output transfer matrix from each HOM at a particular frequency and optical node to some readout output. The shape of the output matrix is:
[frequencies, outputs, inputs, HOMs]
It should be noted that when exciting a lower signal sideband frequency it will actually return the operator for propagating the conjugate of the lower sideband. This is because FINESSE is internally solving for the conjugate of the lower sideband to linearise non-linear optical effects.
To inject into mechanical and electrical nodes please see
FrequencyResponse
andFrequencyResponse4
. To readout optical nodes please seeFrequencyResponse3
andFrequencyResponse4
.- Parameters
- farray, double
Frequencies to compute the transfer functions over
- inputsiterable[tuple[str or Node, Frequency]]
Optical node and frequency tuple to inject at. A symbolic refence to the model’s fsig.f parameter should always be used when defining a frequency to look at.
- outputsiterable[str or Element]
Mechanical or electrical (signal)nodes to measure output to
- namestr, optional
Solution name
Examples
It is advisable to use always use a reference to the symbolic reference to the signal frequency model.fsig.f.ref instead of a fixed number incase it changes. This action will look for an initial frequency bin of X Hz to track during the frequency response analysis. A symbolic reference will always ensure the right bin is used, in cases such as looking at RF signal sidebands, 10e6+model.fsig.f.ref and 10e6-model.fsig.f.ref will always look at the upper and lower signal sideband around the +10MHz sideband.
>>> import finesse >>> from finesse.analysis.actions import FrequencyResponse2 >>> model = finesse.script.parse(''' ... l l1 ... bs bs1 R=1 T=0 xbeta=1e-6 ybeta=1e-9 ... readout_dc A ... link(l1, bs1, A) ... fsig(1) ... modes(maxtem=1) ... gauss g1 l1.p1.o w=1m Rc=inf ... ''') >>> sol = model.run( ... FrequencyResponse2( ... [1, 10, 100], ... [ ... ('bs1.p2.o', +model.fsig.f.ref), ... ('bs1.p2.o', -model.fsig.f.ref) ... ], ... ['A.DC'] ... ) ... )