qom.systems.base module¶
Module to interface QOM systems.
References
- class qom.systems.base.BaseSystem(params: dict = {}, name: str = 'Sys_00', desc: str = 'Base System', num_modes: int = 2, cb_update=None)¶
Bases:
object
Class to interface QOM systems.
Requires
system_defaults
attribute before initializing parent.Initializes
name
,desc
,num_modes
,dim_corrs
,num_corrs
,params
,A
,D
andupdater
.- Parameters:
params (dict, optional) – Parameters for the system.
name (str, default='Sys_00') – Name of the interfaced system.
desc (str, default="Base System") – Description of the interfaced system.
num_modes (int, default=2) – Number of modes of the interfaced system.
cb_update (callable, optional) – Callback function to update status and progress, formatted as
cb_update(status, progress, reset)
, wherestatus
is a string,progress
is a float andreset
is a boolean.
Notes
- The following system methods follow a strict formatting:
method
returns
func_ode_modes_corrs
the rates of change of the modes and correlations, formatted as
func_ode_modes_corrs(t, v, c)
, wheret
is the time at which the integration is performed,v
is an array of the modes and correlations andc
is an array of the derived constants and controls of the system. The output should match the dimension ofv
. This function is already defined inside this class. Iffunc_ode_corrs
parameter is given, this function is treated as the function for the modes only.func_ode_modes_deviations
the rate equations of the modes and deviations. It follows the same formatting as
func_ode_modes_corrs
. However, the parameterv
contains only the deviations.func_ode_corrs
the rate equations of the correlations. It follows the same formatting as
func_ode_modes_corrs
. However, the parameterv
contains only the correlations.get_ivc
the initial values of the modes, correlations and derived constants and controls, formatted as
get_ivc()
.get_A
the drift matrix, formatted as
get_A(modes, c, t)
, wheremodes
are the mode amplitudes at timet
andc
are the derived constants and controls of the system.get_mode_rates
the rate of change of the modes. It follows the same formatting as
get_A
.get_coeffs_A
the coefficients of the characteristic equations of the drift matrix. It follows the same formatting as
get_A
.get_coeffs_dispersion
the coefficients of \(( i \omega )^{j}\) in the dispersions. It follows the same formatting as
get_A
.get_nonlinearities
the nonlinearities. It follows the same formatting as
get_A
.get_beta_rates
the rates of change of the mechanical modes. It follows the same formatting as
get_A
.get_betas
the mechanical modes. It follows the same formatting as
get_A
.get_D
the noise matrix, formatted as
get_D(modes, corrs, c, t)
, wheremodes
andcorrs
are modes and correlations at timet
andc
are the derived constants and controls of the system.get_coeffs_N_o
the coefficients of the polynomial in mean optical occupancy, formatted as
get_coeffs_N_o(c)
, wherec
are the derived constants and controls of the system.get_modes_steady_state
the steady state modes with shape
(dim, num_modes)
. It follows the same formatting asget_coeffs_N_o
.
- func_ode_modes_corrs(t, v, c)¶
Wrapper function for the rates of change of the real-valued modes and correlations.
Requires system method
get_mode_rates
. Additionally,get_A
should be defined for the correlations. Optionally,get_D
may be defined for correlations. Refer to Notes for their implementations.The variables are casted to real-valued.
- Parameters:
t (float) – Time at which the values are calculated.
v (numpy.ndarray) – Real-valued modes and flattened correlations. First
num_modes
elements contain the real parts of the modes, the nextnum_modes
elements contain the imaginary parts of the modes and optionally, the lastnum_corrs
elements contain the correlations.c (numpy.ndarray) – Defived constants and controls.
- Returns:
rates – Rates of change of the real-valued modes and flattened correlations.
- Return type:
numpy.ndarray
- func_ode_modes_deviations(t, v, c)¶
Wrapper function for the rates of change of the real-valued modes and flattened deviations.
Requires system method
get_mode_rates
. Additionally,get_A
should be defined for the deviations. Refer to Notes for their implementations.The variables are casted to real-valued.
- Parameters:
t (float) – Time at which the values are calculated.
v (numpy.ndarray) – Real-valued modes and flattened deviations. First
num_modes
elements contain the real parts of the modes, the nextnum_modes
elements contain the imaginary parts of the modes and optionally, the lastnum_corrs
elements contain the deviations.c (numpy.ndarray) – Defived constants and controls.
- Returns:
rates – Rates of change of the real-valued modes and flattened deviations.
- Return type:
numpy.ndarray
- get_mean_optical_occupancies()¶
Method to obtain the mean optical occupancies.
Requires system methods
get_ivc
andget_coeffs_N_o
. Refer to Notes for their implementations.For example, the mean optical occupancy of a simple end-mirror optomechanical system can be written as [1],
\[N_{o} = |\alpha_{s}|^{2} = \frac{\left| A_{l} \right|^{2}}{\frac{\kappa^{2}}{4} + \Delta^{2}}\]where \(\Delta = \Delta_{l} + C N_{o}\). This results in a cubic equation with \(4\) coefficients. The
get_coeffs_N_o
method should return these coefficients.- Returns:
N_os – Mean optical occupancies.
- Return type:
numpy.ndarray
- get_mode_rates_real(modes_real, c, t)¶
Method to obtain the real-valued mode rates from real-valued modes.
Requires the system method
get_mode_rates
. Refer to Notes for its implementation.- Parameters:
modes_real (numpy.ndarray) – Real-valued modes.
c (numpy.ndarray) – Derived constants and controls.
t (float) – Time at which the drift matrix is calculated.
- Returns:
mode_rates_real – Real-valued rates for each mode.
- Return type:
numpy.ndarray
- init_A_D()¶
Method to initialize the drift matrix and the noise matrix of the system.
- set_params(params: dict)¶
Method to validate and set the system parameters.
- Parameters:
params (dict) – Parameters of the system.
- system_defaults = {}¶
Default parameters of the system.
- Type:
dict