The ions module provides functions to simulate and optimize Mølmer–Sørensen-type operations on trapped ion systems.

To calculate the properties of an ion chain, such as the Lamb–Dicke parameters and relative detunings, use boulderopal.ions.obtain_ion_chain_properties. To run a simulation or optimization, use the classes below to describe the system in terms of drives. For example to create a complex-valued drive for simulation use boulderopal.ions.Drive. Then pass the classes to either boulderopal.ions.ms_simulate or boulderopal.ions.ms_optimize depending on whether you want to run a simulation or an optimization.

If you want to model Mølmer–Sørensen interactions in graphs, see Mølmer–Sørensen gates.

For a quick introduction, see the Optimize Mølmer–Sørensen gates for trapped ions tutorial.


ComplexOptimizableDriveA piecewise-constant complex-valued optimizable drive.
DriveA piecewise-constant complex-valued drive.
OptimizableDriveAbstract class for optimizable drives.
RealOptimizableDriveA piecewise-constant real-valued optimizable drive.


ms_optimizeFind optimal pulses to perform a target Mølmer–Sørensen-type operation on a system composed of ions.
ms_simulateSimulate a Mølmer–Sørensen-type operation on a system composed of ions.
obtain_ion_chain_propertiesCalculate the Lamb–Dicke parameters, frequencies (or relative detunings if a laser detuning is provided), and eigenvectors of the collective motional modes of an ion chain.

Was this useful?