前回はオメガ固定でやりました。今回は両方を変化させてみてみます。量子ビットの並びは前回に続いて一次元系です。
今回もこちらからとりました。
https://queracomputing.github.io/Bloqade.jl/dev/tutorials/2.adiabatic/main/
時間は3マイクロ秒。最初にオメガの時間発展を設定します。
total_time = 3.0;
Ω_max = 2π * 4;
Ω = piecewise_linear(clocks = [0.0, 0.1, 2.1, 2.2, total_time], values = [0.0, Ω_max, Ω_max, 0, 0]);
そして、デルタの設定です。
U1 = -2π * 10;
U2 = 2π * 10;
Δ = piecewise_linear(clocks = [0.0, 0.6, 2.1, total_time], values = [U1, U1, U2, U2]);
プロットしてみます。
fig, (ax1, ax2) = plt.subplots(ncols = 2, figsize = (12, 4))
Bloqade.plot!(ax1, Ω)
ax1.set_ylabel("Ω/2π (MHz)")
Bloqade.plot!(ax2, Δ)
ax2.set_ylabel("Δ/2π (MHz)")
fig
今回も9量子ビット、量子ビット間の距離は5.72マイクロメートル
nsites = 9
atoms = generate_sites(ChainLattice(), nsites, scale = 5.72)
h = rydberg_h(atoms; Δ, Ω)
nqubits: 9
+
├─ [+] ∑ 2π ⋅ 8.627e5.0/|r_i-r_j|^6 n_i n_j
├─ [+] Ω(t) ⋅ ∑ σ^x_i
└─ [-] Δ(t) ⋅ ∑ n_i
各パラメータが見れます。
densities = []
for _ in TimeChoiceIterator(integrator, 0.0:1e-3:total_time)
push!(densities, rydberg_density(reg))
end
D = hcat(densities...);
fig, ax = plt.subplots(figsize = (10, 4))
shw = ax.imshow(real(D), interpolation = "nearest", aspect = "auto", extent = [0, total_time, 0.5, nsites + 0.5])
ax.set_xlabel("time (μs)")
ax.set_ylabel("site")
ax.set_xticks(0:0.2:total_time)
ax.set_yticks(1:nsites)
bar = fig.colorbar(shw)
fig
今度は縦軸が量子ビットで横軸が時間で、時間変化が見れます。
時間がたつごとに奇数量子ビットが1になっていくのが見れました。