ms_optimize

boulderopal.ions.ms_optimize(drives, duration, lamb_dicke_parameters, relative_detunings, target_phases, sample_count=128, robust=False, **optimization_kwargs)

Find optimal pulses to perform a target Mølmer–Sørensen-type operation on a system composed of ions.

This function builds a graph describing the Mølmer–Sørensen operation and calls boulderopal.run_optimization to minimize the target cost.

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

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

  • lamb_dicke_parameters (np.ndarray) – The laser-ion coupling strength, \(\{\eta_{jkl}\}\). Its shape must be (3, N, N), where the dimensions indicate, respectively, axis, collective mode, and ion.

  • relative_detunings (np.ndarray) – The difference \(\{\delta_{jk} = \nu_{jk} - \delta\}\) (in Hz) between each motional mode frequency and the laser detuning from the qubit transition frequency \(\omega_0\). Its shape must be (3, N), where the dimensions indicate, respectively, axis and collective mode.

  • target_phases (np.ndarray or None, optional) – The target total relative phases between ion pairs, \(\{\Psi_{ln}\}\), as a strictly lower triangular matrix of shape (N, N). \(\Psi_{ln}\) with \(l > n\) indicates the relative phase between ions \(l\) and \(n\), while \(\Psi_{ln} = 0\) for \(l \leq n\).

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

  • robust (bool, optional) – If set to False, the cost corresponds to the infidelity at the end of the gate. If set to True, the cost is the final infidelity plus a dephasing-robust cost term. Defaults to False.

  • **optimization_kwargs – Additional parameters to pass to boulderopal.run_optimization.

Returns:

The result of the run_optimization call. Its output item is a dictionary containing information about the optimized drive and the evolution of the system, with the following keys:

optimized drives

The piecewise-constant optimized drives implementing the gate. The keys are the names of the drives provided to the function.

sample_times

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

phases

Acquired phases \(\{\Phi_{ln}(t_i) = \phi_{ln}(t_i) + \phi_{nl}(t_i)\}\) for each sample time and for all ion pairs, as a strictly lower triangular matrix of shape (T, N, N). \(\Phi_{ln}(t_i)\) with \(l > n\) indicates the relative phase between ions \(l\) and \(n\), while \(\Phi_{ln}(t_i) = 0\) for \(l \leq n\).

displacements

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

infidelities

A 1D array of length T with the operational infidelities of the Mølmer–Sørensen gate at each sample time, \(\mathcal{I}(t_i)\).

Return type:

dict

See also

boulderopal.ions.ComplexOptimizableDrive

Class describing a piecewise-constant complex-valued optimizable drive.

boulderopal.ions.RealOptimizableDrive

Class describing a piecewise-constant real-valued optimizable drive.

boulderopal.ions.ms_simulate

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

boulderopal.ions.obtain_ion_chain_properties

Calculate the properties of an ion chain.

Notes

See the notes of boulderopal.ions.ms_simulate for the main equations and definitions.

You can use the robust flag to construct a Mølmer–Sørensen gate that is robust against dephasing noise. This imposes a symmetry [1] in the optimizable ion drives and aims to minimize the time-averaged positions of the phase-space trajectories,

\[\langle \alpha_{jkl} \rangle = \frac{1}{t_\text{gate}} \int_0^{t_\text{gate}} \alpha_{jkl}(t) \mathrm{d} t .\]

This is achieved by adding an additional term to the cost function, consisting of the sum of the square moduli of the time-averaged positions multiplied by the corresponding Lamb–Dicke parameters. That is to say,

\[C_\text{robust} = \mathcal{I} + \sum_{j=1}^{3} \sum_{k=1}^{N} \sum_{l=1}^{N} \left| \eta_{jkl} \langle \alpha_{jkl} \rangle \right|^2 .\]

References