Axes

noxaxis
Noxaxis
Syntax
noxaxis(pre_step=none, post_step=none, name='noxaxis')
xaxis
Xaxis
Syntax
xaxis(
    parameter,
    mode,
    start,
    stop,
    steps,
    relative=false,
    pre_step=none,
    post_step=none,
    name='xaxis'
)
See Also

x2axis, x3axis, sweep

x2axis
X2axis
Syntax
x2axis(
    parameter1,
    mode1,
    start1,
    stop1,
    steps1,
    parameter2,
    mode2,
    start2,
    stop2,
    steps2,
    relative=false,
    pre_step=none,
    post_step=none,
    name='x2axis'
)
See Also

xaxis, x3axis, sweep

x3axis
X3axis
Syntax
x3axis(
    parameter1,
    mode1,
    start1,
    stop1,
    steps1,
    parameter2,
    mode2,
    start2,
    stop2,
    steps2,
    parameter3,
    mode3,
    start3,
    stop3,
    steps3,
    relative=false,
    pre_step=none,
    post_step=none,
    name='x3axis'
)
See Also

xaxis, x2axis, sweep

sweep
Sweep

An action that sweeps N number of parameters through the values in N arrays.

Syntax
sweep(
    *args,
    pre_step=none,
    post_step=none,
    reset_parameter=true,
    name='sweep'
)
Required

args: Expects 3 arguments per axis. The first is a full name of a Parameter or a Parameter object. The second is an array of values to step this parameter over, and lastly a boolean value to say whether this is a relative step from the parameters initial value.

name: Name of the action, used to find the solution in the final output.

Optional

pre_step: An action to perform before the step is computed

post_step: An action to perform after the step is computed

reset_parameter: When true this action will reset the all the parameters it changed to the values before it ran.

See Also

xaxis, x2axis, x3axis

frequency_response
freqresp
FrequencyResponse

Computes the frequency response of a signal injected at various nodes to compute transfer functions to multiple output nodes. Inputs and outputs should be electrical or mechanical nodes. It does this in an efficient way by using the same model and solving for multiple RHS input vectors.

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 input node to some readout output. The shape of the output matrix is: [frequencies, inputs, outputs] To inject into optical nodes please see FrequencyResponse2 and FrequencyResponse3. To readout optical nodes please see FrequencyResponse3 and FrequencyResponse4.

Syntax
freqresp(f, inputs, outputs, open_loop=false, name='frequency_response')
Required

f: Frequencies to compute the transfer functions over

inputs: Mechanical or electrical node to inject signal at

outputs: Mechanical or electrical nodes to measure output at

Optional

open_loop: Computes open loop transfer functions if the system has closed

name: Solution name

See Also

freqresp2, freqresp3, freqresp4

frequency_response2
freqresp2
FrequencyResponse2

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. For FrequencyResponse2 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 and FrequencyResponse4. To readout optical nodes please see FrequencyResponse3 and FrequencyResponse4.

Syntax
freqresp2(f, inputs, outputs, name='frequency_response2')
Required

f: Frequencies to compute the transfer functions over

inputs: 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.

outputs: Mechanical or electrical (signal)nodes to measure output to

Optional

name: Solution name

See Also

freqresp, freqresp3, freqresp4

frequency_response3
freqresp3
FrequencyResponse3

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. For FrequencyResponse3 you specify optical input nodes and optical output nodes.

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 other optical node and frequency. The shape of the output matrix is: [frequencies, outputs, inputs, HOMs, 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 and FrequencyResponse4. To readout mechanical and electrical nodes please see FrequencyResponse and FrequencyResponse2.

Syntax
freqresp3(f, inputs, outputs, name='frequency_response3')
Required

f: Frequencies to compute the transfer functions over

inputs: Optical node and frequency tuple to inject at. A symbolic reference to the model’s fsig.f parameter should always be used when defining a frequency to look at.

outputs: Optical node and frequency tuple to measure output at. A symbolic reference to the model’s fsig.f parameter should always be used when defining a frequency to look at.

Optional

name: Solution name

See Also

freqresp, freqresp2, freqresp4

frequency_response4
freqresp4
FrequencyResponse4

Computes the frequency response of a signal injected at an electrical or mechanical port. This differs from FrequencyResponse in the way the inputs and outputs are prescribed. For FrequencyResponse4 you specify signal input nodes and optical output nodes.

This action does not alter the model state. This action will ignore any currently defined signal generator elements in the model. Produces an output transfer matrix from each signal node to each HOM at a particular frequency and optical node. 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 optical nodes please see FrequencyResponse2 and FrequencyResponse3. To readout mechanical and electrical nodes please see FrequencyResponse and FrequencyResponse2.

Syntax
freqresp4(f, inputs, outputs, name='frequency_response4')
Required

f: Frequencies to compute the transfer functions over

inputs: Mechanical or electrical node to inject signal at

outputs: Optical node and frequency tuple to measure output at. A symbolic reference to the model’s fsig.f parameter should always be used when defining a frequency to look at.

Optional

name: Solution name

See Also

freqresp, freqresp2, freqresp3

opt_rf_readout_phase
OptimiseRFReadoutPhaseDC

This optimises the demodulation phase of ReadoutRF elements relative to some DegreeOfFreedom or driven Parameter in the model. The phases are optimised by calculating the DC response of the readouts. This Action changes the state of the model by varying the readout demodulation phases. If no arguments are given it will try to automatically optimise any lock element in the model that is using an RF readout with respect to the lock feedback parameter.

Syntax
opt_rf_readout_phase(*args, d_dof=1e-10, name='optimise_demod_phases_dc')
Required

args: Pairs of DegreeOfFreedom or Parameter and ReadoutRF elements, or pairs of their names. If none are provided OptimiseRFReadoutPhaseDC will automatically search for Lock elements which have ReadoutRF error signal and optimise them.

Optional

d_dof: A small offset applied to the DOFs to compute the gradients of the error signals

sensing_matrix_dc
SensingMatrixDC

Computes the sensing matrix elements for various degrees of freedom and readouts that should be present in the model. The solution object for this action then contains all the information on the sensing matrix. This can be plotted in polar coordinates, displayed in a table, or directly accessed.

The sensing gain is computed by calculating the gradient of each readout signal, which means it is a DC measurement. This will not include any suspension or radiation pressure effects. This action does not modify the states model.

Syntax
sensing_matrix_dc(dofs, readouts, d_dof=1e-09, name='sensing_matrix_dc')
Required

dofs: String names of degrees of freedom

readouts: String names of readouts

Optional

d_dof: Small step used to compute derivative

set_lock_gains
SetLockGains

An action that computes the optimal lock gains using the sensing matrix found with SensingMatrixDC. This action computes the error signal gradient for each lock with respect to its drive and sets the gain as -gain_scale/sensing.

Syntax
set_lock_gains(
    *locks,
    d_dof_gain=1e-10,
    gain_scale=1,
    name='set gains',
    optimize_phase=none
)
Required

name: Name of the action.

Optional

*locks: A list of locks for which to set the gain. If none provided, all enabled locks in model are used. Disabled locks that are explicitly listed will have their gains set.

d_dof_gain: Step size to use when calculating the gain for each error signal/DOF pair.

gain_scale: Extra gain scaling factor applied to the gain calculation: -gain_scale/sensing In multiple lock models where the locks are cross coupled using a gain_scale < 1 can improve the stability of the locking algorithm to stop excessively large steps.

optimize_phase: Deprecated feature: Use OptimiseRFReadoutPhaseDC instead

See Also

opt_rf_readout_phase, sensing_matrix_dc

get_error_signals
GetErrorSignals

An action that quickly calculates the current error signals for all or a subset of locks in a model.

Syntax
get_error_signals(*locks, name='get error signals')
Required

name: Name of the action.

Optional

*locks: A list of lock names to compute the error signals for. If not provided, all locks in model are used.

update_maps
UpdateMaps

Update any maps that might be changing in the simulation.

Syntax
update_maps(*args, name='update_maps', **kwargs)