Analog quantum processing units (quantum annealers) use continuous variables for optimization tasks, such as finding global minima. Gate-based quantum computers use discrete quantum gates to manipulate qubits for versatile quantum algorithms, including factorization, simulation, and optimization. One example of analog Quantum Processing Units (QPUs) is Aquila, which is a neutral-atom QPU from QuEra Computing, with up to 256 qubit. Aquila is also available on Amazon Braket, which is accessible using AWS service connect from a Wolfram notebook. In this computational essay, we will focus on some examples from QuEra's recent white paper, and do the simulation using quantum functionalities of Wolfram quantum framework, and also show how to send queries to Aquila, using Amazon Braket.
This notebook has been published in the Wolfram Community, too: https://community.wolfram.com/groups/-/m/t/2983137
The Hamiltonian for QuEra system of atoms is given by:
where
Ω
is the the Rabi frequency,
ϕ
the laser phase, and
Δ
the detuning of the driving laser field coupling the ground states

g
j

and excited Rydberg state

r
j

of the j-th atom.
V
jk

C
6

x
j
-
x
k
6
|
represents the van der Waals interaction between atom-j and atom-k, while is

n
j

r
j

r
j

the number operator of j-th site (more info on actual values of
C
6
can be found in QuEra webpages).
We have defined the corresponding Hamiltonian as follows:
AquilaHamiltonian[sites, {Ω, Δ, ϕ}]
, where it takes sites as a list of atom positions,
{{
x
1
,
y
1
},{
x
2
,
y
2
},...}
, with each position in μm,
Ω
is the the Rabi frequency,
ϕ
the laser phase, and
Δ
the detuning of the driving laser field.
https://github.com/sw1sh/QuantumFramework​
​https://www.wolfram.com/quantum-computation-framework/​
​https://resources.wolframcloud.com/PacletRepository/resources/Wolfram/QuantumFramework/

Single atom

Let’s consider the single atom dynamics.

Rabi Oscillation (Ω=constant, Δ=0 and ϕ=0)

This part is related to Section 2.1 of the QuEra white paper.
For this case, one can get the state symbolically.
In[]:=
ψ1RO=QuantumEvolve[AquilaHamiltonian[{{0,0}},{15.,0,0}],t]
Out[]=
As an example, calculate the populations at
t=1μs
In[]:=
ψ1RO[1.]["Probability"]
Out[]=
|0〉0.120156,|1〉0.879844
Population of ground state as a function of time:
In[]:=
Plotψ1RO["Probability"][[1]],{t,0,1},FrameLabel->"
t
f
(μs)",
2

0

"
ψ
t
f
"

,Frame->True,PlotLabel->"Population of ground state in time"
Out[]=

Ramsey Protocol (Ω as two pulses, Δ=constant, ϕ=0)

This part is related to Section 2.2 of the QuEra white paper.
For this protocol, the atom is driven by two pulses, with a hold time between pulses, and Δ and ϕ are set to zero.
In[]:=
pulses[{amplitude_,δt_,gap_},t_]:=
amplitude
0≤t<=δt||gap≤t<=δt+gap
0
True
;
In[]:=
​
In[]:=
data=Module{δt=.1,amplitude=12.5,plotRabi,plotProb,state,prob={}},​​Table​​state=QuantumEvolve[AquilaHamiltonian[{{0,0}},{pulses[{amplitude,δt,gap},t],10.5,0}],{t,0,4}];​​plotRabi=Plotpulses[{amplitude,δt,gap},t],{t,-δt,2δt+gap},
;​​prob=Join[prob,{{δt+gap,state[δt+gap]["Probability"][[1]]}}];​​plotProb=ListLinePlotprob,
;​​{plotRabi,plotProb},{gap,Range[.18,3,.1]};
In[]:=
ListAnimate[images=GraphicsRow[#,ImageSize->Large]&/@data]
Out[]=

Floquet Protocol (Ω=const., Δ=const. Sin[ω t], and ϕ=0)

This part is related to Section 2.2 of the QuEra white paper.
In this scenario, the Rabi drive remains constant, and the detuning oscillates sinusoidally over time, with a phase set to zero.
In[]:=
Plot[{15.,15.Sin[5πt],0},{t,0,4},PlotLegends->{"Ω","Δ","ϕ"}]
Out[]=
In[]:=
ψFlo=QuantumEvolve[AquilaHamiltonian[{{0,0}},{15.,15.Sin[5πt],0}],{t,0,4}];
Population per site (keys are site labels (qubits) and values are population):
In[]:=
PlotψFlo[t]["Probability"][[1]],{t,0,4},PlotRange->{0,1},FrameLabel->"
t
f
(μs)",
2

0

"
ψ
t
f
"

,Frame->True,PlotLabel->"Population of ground state in time"
Out[]=

Spin echo

This part is related to Section 2.3 of the QuEra white paper.
In[]:=
ClearAll[Ω,Δ,ϕ];​​Ω[{δt_,gap_},t_]:=
13.
0<=t<=δt||δt+gap<=t<=3δt+gap||3δt+2gap<=t<=4δt+2gap
0
True
;​​Δ[{δt_,gap_},t_]:=
10
3δt+gap<=t<=3δt+2gap
0
True
;​​ϕ[{δt_,gap_},t_]:=
1.8`
gap
2
+δt≤t≤
3gap
2
+3δt
3
3gap
2
+3δt≤t≤2gap+4δt
0
True
;
In[]:=
δt=.2;​​With[{gap=1.3},Plot[{Ω[{δt,gap},t],Δ[{δt,gap},t],ϕ[{δt,gap},t]},{t,-.5,3.5},Exclusions->None,PlotRange->All,PlotPoints100,PlotLegends->{"Ω","Δ","ϕ"},Filling{2Axis}]]
Out[]=

Two atoms

Rydberg blockade radius

This part is related to Section 3.1 of the QuEra white paper.

Levine-Pichler gate analogues

This part is related to Section 3.3 of the QuEra white paper.

Interacting non-equilibrium dynamics of two atoms

This part is related to Section 3.4 of the QuEra white paper.

Multi-atoms: ordered phases

This part is related to Section 4.1 of the QuEra white paper.

Multi atoms: Blockaded Rabi Oscillations

This part is related to Example 2 from QuEra GiHub.
The Rydberg blockade effect arises from the strong interactions between Rydberg atoms. When two or more Rydberg atoms are in close proximity, the strong interactions between them can prevent multiple atoms from simultaneously being excited to a Rydberg state. In other words, the excitation of one Rydberg atom can “block” the excitation of nearby atoms.
Define positions of atoms in a 2D lattice
Plot atoms’s lattice
Find the final quantum state vector, and wrap it around by a QuantumState:

Multi atoms: quantum scars

This part is related to Section 5 of the QuEra white paper.
Calculate the probability of Néel state 1010101010101 in time:
Plot it over time:

Maximum independent set on unit disk graphs

This part is related to Section 6 of the QuEra white paper.
Let’s first analyze the Maximum independent set on unit disk graphs, classically.
Create a King’s graph with a 30% random dropout:
Show the King’s graph:
Find an independent vertex set of the King’s graph with a maximum number of vertices:
Highlight them in the graph:
Now, using a quantum algorithm, we will try to find those max independent vertices (in our case, it will be qubits 1, 3, 7 and 8, in a quantum system with 11 qubits).
Create the corresponding 2D lattice, with the distance of 5μm
Create the corresponding parameters of the Hamiltonian and plot them:
Find the time-dependent quantum state:
Bar-chart of probabilities of all independent vertex set,
Visualize it
Final Rydberg population per site at a given time:
Plot Rydberg population per sites over time:

AWS

In this section, we will send a query to QuEra Aquila, using Amazon Braket.
Site population:
Bit-string population
Send the job to QuEra Aquila:
Given preSequence with all 1 (meaning the initial preparation was done correctly)
[make sure I understand what does that mean, given the preSequence are not all 1111...]
Different of population between theory and experimental values for each site

CITE THIS NOTEBOOK

Wolfram quantum framework for analog QPUs: QuEra Aquila case​
by Mads Bahrami​
Wolfram Community, STAFF PICKS, August 4, 2023
​https://community.wolfram.com/groups/-/m/t/2983137