ms_simulate
boulderopal.ions.ms_simulate(drives, duration, lamb_dicke_parameters, relative_detunings, target_phases=None, sample_count=128)
Simulate a 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.execute_graph to simulate the ion dynamics.
Parameters
- 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.
- duration (float) – The duration, in seconds, of the dynamics to be simulated, T. It must be greater than zero.
- lamb_dicke_parameters (np.ndarray) – The laser-ion coupling strength, {ηjkl}.
Its shape must be
(3, N, N)
, where the dimensions indicate, respectively, axis, collective mode, and ion. - relative_detunings (np.ndarray) – The difference {δjk=νjk−δ} (in Hz) between each motional
mode frequency and the laser detuning from the qubit transition frequency ω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, {Ψln},
as a strictly lower triangular matrix of shape
(N, N)
. Ψln with l>n indicates the relative phase between ions l and n, while Ψln=0 for l≤n. 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.
Returns
The result of the execute_graph call.
Its output
item is a dictionary containing information about
the evolution of the system, with the following keys:
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 lengthT
with 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
dict
SEE ALSO
boulderopal.ions.Drive
: Class describing non-optimizable drives.
boulderopal.ions.ms_optimize
: Find optimal pulses to perform Mølmer–Sørensen-type operations on trapped ions systems.
boulderopal.ions.obtain_ion_chain_properties
: Calculate the properties of an ion chain.
Notes
The internal and motional Hamiltonian of N ions is
H0=j=1∑3k=1∑Nℏνjk(ajk†ajk+21)+l=1∑N2ℏω0σz,l,where j indicates axis dimension (x, y, or z), k indicates collective mode, ajk is the annihilation operator, and σz,l is the Pauli Z operator for ion l.
The interaction Hamiltonian for Mølmer–Sørensen-type operations in the rotating frame with respect to H0 is
HI(t)=iℏj=1∑3k=1∑Nl=1∑Nσx,l(−βjkl∗(t)ajk+βjkl(t)ajk†),where σx,l is the Pauli X operator for ion l and
βjkl(t)=ηjkl2γl(t)exp(i2πδjkt)indicates the coupling between ion l and motional mode (j,k).
The corresponding unitary operation is given by 1
U(t)=exp[l=1∑Nσx,lBl(t)+il=1∑Nn=1∑l−1(ϕln(t)+ϕnl(t))σx,lσx,n],where
Bl(t)≡j=1∑3k=1∑N(ηjklαjkl(t)ajk†−ηjkl∗αjkl∗(t)ajk), \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τ2γl(τ)exp(i2πδjkτ).The operational infidelity of the Mølmer–Sørensen gate is defined as 1:
I=1−(n=1∏Nl=n+1∏Ncos(Φln−Ψln))(1−j=1∑3k=1∑Nl=1∑N[∣ηjklαjkl∣2(nˉjk+21)])2,