The Boulder Opal Toolkits are currently in beta phase of development. Breaking changes may be introduced.

ms_simulate(drives, lamb_dicke_parameters, relative_detunings, duration, target_phases=None, sample_count=128)

Simulate a Mølmer–Sørensen-type operation on a system composed of ions.

  • drives (list[Drive]) – A list of drives addressing the ions. Each ion can only be addressed by a single drive, but there may be ions not addressed by any drive.

  • lamb_dicke_parameters (np.ndarray) – A 3D array of shape (3, N, N), where \(N\) is the number of ions in the system, specifying the laser-ion coupling strength, \(\{\eta_{jkl}\}\). The three dimensions indicate, respectively, the axis, the collective mode number, and the ion.

  • relative_detunings (np.ndarray) – A 2D array of shape (3, N) specifying the difference, in Hz, between each motional mode frequency and the laser detuning (with respect to the qubit transition frequency \(\omega_0\)), \(\{\delta_{jk} = \nu_{jk} - \delta\}\). The two dimensions indicate, respectively, the axis and the collective mode number.

  • duration (float) – The duration, in seconds, of the dynamics to be simulated, \(T\). It must be greater than zero.

  • target_phases (np.ndarray, optional) – A 2D array of shape (N, N) with the target relative phases between ion pairs, \(\{\Psi_{kl}\}\), as a strictly lower triangular matrix. Its \((k, l)\)-th element indicates the total relative phase target for ions \(k\) and \(l\), with \(k > l\). If not provided, the function does not return the operational infidelities.

  • sample_count (int, optional) – The number of times \(T\) between 0 and duration (included) at which the evolution is sampled. Defaults to 128.


A dictionary containing information about the evolution of the system. The dictionary keys are:


The times at which the evolution is sampled, as an array of shape (T,).


Acquired phases \(\{\Phi_{jk}(t_i) = \phi_{jk}(t_i) + \phi_{kj}(t_i)\}\) for each sample time and for all ion pairs, as a strictly lower triangular matrix of shape (T, N, N). \(\Phi_{jk}\) records the relative phase between ions \(j\) and \(k\); matrix elements where \(j \leq k\) are zero.


Displacements \(\{\eta_{pj}\alpha_{pj}(t_i)\}\) for all mode-ion combinations, as an array of shape (T, 3, N, N). The four dimensions indicate the sample time, the axis, the collective mode number, and the ion.


A 1D array of length T representing the operational infidelities of the Mølmer–Sørensen gate at each sample time, \(\mathcal{I}(t_i)\). Only returned if target relative phases are provided.

Return type:


See also


Class describing non-optimizable drives.


Find optimal pulses to perform Mølmer–Sørensen-type operations on trapped ions systems.


Calculate the properties of an ion chain.


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\), where \(\{\gamma_j\}\) is the total drive acting on ion \(j\).

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} .\]

The operational infidelity of the Mølmer–Sørensen gate is defined as [1]:

\[\begin{split}\mathcal{I} = 1 - \left| \left( \prod_{\substack{k=1 \\ l<k}}^N \cos ( \phi_{kl} - \psi_{kl}) \right) \left( 1 - \sum_{j=1}^3 \sum_{k,l=1}^N \left[ |\eta_{jkl}|^2 |\alpha_{jkl}|^2 \left(\bar{n}_{jk}+\frac{1}{2} \right) \right] \right) \right|^2 .\end{split}\]