ions.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 or None ]) – The piecewise-constant drives, {γj}\{\gamma_j\}, one for each of the NN
  • lamb_dicke_parameters (np.ndarray) – The laser-ion coupling strength, {ηjkl}\{\eta_{jkl}\}(3, N, N), where the dimensions indicate, respectively, axis, collective mode, and ion.
  • relative_detunings (np.ndarray) – The difference {δjk=νjkδ}\{\delta_{jk} = \nu_{jk} - \delta\} (in Hz) between each motional mode frequency and the laser detuning from the qubit transition frequency ω0\omega_0(3, N), where the dimensions indicate, respectively, axis and collective mode.
  • sample_times (np.ndarray or None , optional) – The times (in seconds) at which to calculate the displacements, {ti}\{t_i\}
  • name (str or None , optional) – The name of the node.


Displacements {ηjklαjkl(ti)}\{\eta_{jkl}\alpha_{jkl}(t_i)\}(T, 3, N, N_d), where the dimensions indicate, respectively, time, axis, collective mode, and ion. Otherwise, the shape is (3, N, N_d), with the outer time dimension removed. Here, N_d is the number of addressed ions (drives that are not None); the displacements of undriven ions are not returned (as they are zero).

Return type



Graph.ions.ms_infidelity : Final operational infidelity of a Mølmer–Sørensen gate.

boulderopal.ions.obtain_ion_chain_properties : Function to calculate the properties of an ion chain.


This function calculates, at sample times {ti}\{t_i\}, the contribution to the displacement of mode kk in dimension jj from ion ll, namely ηjklαjkl(ti)\eta_{jkl}\alpha_{jkl}(t_i)

αjkl(t)0tdτγl(τ)2exp(i2πδjkτ). \alpha_{jkl}(t) \equiv \int_0^t d\tau \frac{\gamma_l(\tau)}{2} \exp(i 2 \pi \delta_{jk} \tau) .

You can calculate the state-dependent displacement by summing over the contributions from all ions. That is, using the displacement superoperator Djk\mathcal{D}_{jk}, the displacement in phase space for mode (j,k)(j,k)

Djk(l=1Nσx,lηjklαjkl(ti)). \mathcal{D}_{jk} \left(\sum_{l=1}^N \sigma_{x,l}\eta_{jkl}\alpha_{jkl}(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.

Was this useful?