Graph.ms_displacements(drives, lamb_dicke_parameters, relative_detunings, sample_times=None, *, name=None)

Calculate the displacements for each mode and ion combination where ions are described by a Mølmer–Sørensen-type interaction.

Use this function to calculate the displacements for each ion and each mode at the final time of the drives, or at the sample times that you provide.

  • drives (list[Pwc(1D, complex)]) – A list of piecewise-constant drives \(\{\gamma_j\}\). The number of drives must be the same as the number of ions \(N\). Drive values must be one-dimensional arrays and in rad/s. Drive durations must be in seconds. All drives must have the same total duration, but can have different numbers of segments.

  • lamb_dicke_parameters (np.ndarray) – A 3D array of parameters \(\{\eta_{jkl}\}\) specifying the laser-ion coupling strength. Its shape must be (3, N, N) where the first dimension \(j\) indicates the axis, the second dimension \(k\) indicates the collective mode number, and the third dimension \(l\) indicates the ion.

  • relative_detunings (np.ndarray) – A 2D array \(\{\delta_{jk} = \nu_{jk} - \delta\}\) specifying the difference (in Hz) between each motional mode frequency \(\nu_{jk}\) and the laser detuning \(\delta\) (the detuning from the qubit transition frequency \(\omega_0\)). Its shape must be (3, N) where the first dimension \(j\) indicates the axis and the second dimension \(k\) indicates the collective mode number.

  • sample_times (list or tuple or np.ndarray or None, optional) – A 1D array of length \(T\) specifying the times \(\{t_i\}\) (in seconds) at which this function calculates the displacements. If you omit it, this function calculates the phases only at the final time of the drives. If provided, it must be ordered and contain at least one element.

  • name (str or None, optional) – The name of the node.


Displacements \(\{\eta_{pj}\alpha_{pj}(t_i)\}\) for all mode-ion combinations. If you provide sample_times, the shape of the returned value is (T, 3, N, N) where the first dimension indicates the time, the second dimension indicates the axis, the third dimension indicates the collective mode number, and the last dimension indicates the ion. Otherwise, the shape is (3, N, N) with the outer time dimension removed.

Return type:


See also


Function to calculate the properties of an ion chain.


Final operational infidelity of a Mølmer–Sørensen gate.


The internal and motional Hamiltonian of \(N\) ions is

\[H_0 = \sum_{p = 1}^{3N} \hbar\nu_p \left(a_p^\dagger a_p + \frac{1}{2}\right) + \sum_{j = 1}^N \frac{\hbar \omega_0}{2} \sigma_{z,j} ,\]

where the axis dimension and collective mode dimension are combined into a single index \(p\) for simplicity, \(a_p\) is the annihilation operator for the mode \(p\), and \(\sigma_{z,j}\) is the Pauli \(Z\) operator for the ion \(j\). The interaction Hamiltonian for Mølmer–Sørensen-type operations in the rotating frame with respect to \(H_0\) is:

\[H_I(t) = i\hbar\sum_{j = 1}^N \sigma_{x, j} \sum_{p = 1}^{3N} (-\beta_{pj}^*(t)a_p + \beta_{pj}(t) a_p^\dagger) ,\]

where \(\sigma_{x, j}\) is the Pauli \(X\) operator for the ion \(j\) and \(\beta_{pj}(t) = \eta_{pj} \frac{\gamma_j(t)}{2} e^{i\delta_p t}\), indicating the coupling of the ion \(j\) to the motional mode \(p\). Note that \(\delta_p\) is the angular relative detuning, which corresponds to \(2 \pi\) times the relative_detuning parameter that you passed. The corresponding unitary operation is given by [1]

\[U(t) = \exp\left[ \sum_{j=1}^N \sigma_{x, j} B_j(t) + i\sum_{j=1}^N\sum_{k=1}^{j - 1} (\phi_{jk}(t) + \phi_{kj}(t)) \sigma_{x, j} \sigma_{x, k} \right] ,\]


\[ \begin{align}\begin{aligned}B_j(t) &\equiv \sum_{p = 1}^{3N} \left(\eta_{pj}\alpha_{pj}(t)a_p^\dagger - \eta_{pj}^{\ast}\alpha_{pj}^\ast(t)a_p \right) ,\\\phi_{jk}(t) &\equiv \mathrm{Im} \left[ \sum_{p=1}^{3N} \int_{0}^{t} d \tau_1 \int_{0}^{\tau_1} d \tau_2 \beta_{pj}(\tau_1)\beta_{pk}^{\ast}(\tau_2) \right] ,\end{aligned}\end{align} \]


\[\alpha_{pj}(t) = \int_0^t d\tau \frac{\gamma_j(\tau)}{2} e^{i \delta_p \tau} .\]

This function calculates, for each time \(t_i\), the contribution to the displacement of mode \(p\) from the ion \(j\), namely \(\eta_{pj}\alpha_{pj}(t_i)\). You can calculate the state-dependent displacement for the mode \(p\) by summing over the contributions from all ions. That is, using the displacement superoperator \(\mathcal{D}_p\), the displacement in phase space for mode \(p\) at time \(t_i\) is:

\[\mathcal{D}_p \left(\sum_{j = 1}^N \sigma_{x, j}\eta_{pj}\alpha_{pj}(t_i) \right) .\]



Refer to the How to optimize error-robust Mølmer–Sørensen gates for trapped ions user guide to find how to use this and related nodes.