ions.ms_phases(drives, lamb_dicke_parameters, relative_detunings, sample_times=None, *, name=None)

Calculate the relative phases for all pairs of ions described by a Mølmer–Sørensen-type interaction when single-tone individually-addressed laser beams are used.

Use this function to calculate the acquired phases for all ion pairs 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 relative phases, {ti}\{t_i\}
  • name (str or None , optional) – The name of the node.


Acquired phases {ϕjk(ti)+ϕkj(ti)}\{\phi_{jk}(t_i) + \phi_{kj}(t_i)\}(T, N, N), where the first dimension indicates time, and the second and third dimensions indicate ions. Otherwise, the shape is (N, N), with the outer time dimension removed. The relative phases are stored as a strictly lower triangular matrix. See the notes part for details.

Return type



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

Graph.ions.ms_phases_multitone : Corresponding operation for a global multitone beam.

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


The internal and motional Hamiltonian of NN

H0=j=13k=1Nνjk(ajkajk+12)+l=1Nω02σz,l, H_0 = \sum_{j=1}^{3} \sum_{k=1}^{N} \hbar\nu_{jk} \left(a_{jk}^\dagger a_{jk} + \frac{1}{2}\right) + \sum_{l=1}^N \frac{\hbar \omega_0}{2} \sigma_{z,l} ,

where jj indicates axis dimension (xx, yy, or zz), kk indicates collective mode, ajka_{jk} is the annihilation operator, and σz,l\sigma_{z,l} is the Pauli ZZ operator for ion ll

The interaction Hamiltonian for Mølmer–Sørensen-type operations in the rotating frame with respect to H0H_0

HI(t)=ij=13k=1Nl=1Nσx,l(βjkl(t)ajk+βjkl(t)ajk), H_I(t) = i\hbar \sum_{j=1}^{3} \sum_{k=1}^{N} \sum_{l=1}^N \sigma_{x,l} \left(-\beta_{jkl}^*(t)a_{jk} + \beta_{jkl}(t) a_{jk}^\dagger\right) ,

where σx,l\sigma_{x,l} is the Pauli XX operator for ion ll

βjkl(t)=ηjklγl(t)2exp(i2πδjkt) \beta_{jkl}(t) = \eta_{jkl} \frac{\gamma_l(t)}{2} \exp(i 2 \pi \delta_{jk} t)

indicates the coupling between ion ll and motional mode (j,k)(j,k)

The corresponding unitary operation is given by 1

U(t)=exp[l=1Nσx,lBl(t)+il=1Nn=1l1(ϕln(t)+ϕnl(t))σx,lσx,n], U(t) = \exp\left[ \sum_{l=1}^N \sigma_{x,l} B_l(t) + i\sum_{l=1}^N\sum_{n=1}^{l-1} (\phi_{ln}(t) + \phi_{nl}(t)) \sigma_{x,l} \sigma_{x,n} \right] ,


Bl(t)j=13k=1N(ηjklαjkl(t)ajkηjklαjkl(t)ajk), B_l(t) \equiv \sum_{j=1}^{3} \sum_{k=1}^{N} \left(\eta_{jkl}\alpha_{jkl}(t)a_{jk}^\dagger - \eta_{jkl}^{\ast}\alpha_{jkl}^\ast(t)a_{jk} \right) , \phi_{ln}(t) \equiv \mathrm{Im} \left[ \sum_{j=1}^{3} \sum_{k=1}^{N} \int_{0}^{t} d \tau_1 \int_{0}^{\tau_1} d \tau_2 \beta_{jkl}(\tau_1)\beta_{jkn}^{\ast}(\tau_2) \right] , α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) .

This function calculates the relative phases for all ions pairs at sample times {ti}\{t_i\}

Φln(ti)=ϕln(ti)+ϕnl(ti), \Phi_{ln}(t_i) = \phi_{ln}(t_i) + \phi_{nl}(t_i),

and stores them in a strictly lower triangular matrix. That is, Φln(ti)\Phi_{ln}(t_i) with l>nl > n gives the relative phase between ions ll and nn, while Φln(ti)=0\Phi_{ln}(t_i) = 0 for lnl \leq n


[1] C. D. B. Bentley, H. Ball, M. J. Biercuk, A. R. R. Carvalho, M. R. Hush, and H. J. Slatyer, Adv. Quantum Technol. 3, 2000044 (2020).


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?