common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

中性原子量子シミュレータBloqade.jlをみてみる。その4。二次元系アナログ断熱時間発展

Yuichiro Minato

2022/10/30 13:30

前回までは一次元でした。二次元格子をみてみます。相変わらず参考はこちら、

https://queracomputing.github.io/Bloqade.jl/dev/tutorials/2.adiabatic/main/

その前に、bloqadeを使う際には部分空間機能を使うことで、隣接する原子同士がともに1にならないという制約をかけて計算することで高速化ができるようです。

space = blockade_subspace(atoms, 5.73);

こちらは参考までに。早速二次元系を見てみましょう。

nx, ny = 3, 3
nsites = nx * ny
atoms = generate_sites(SquareLattice(), nx, ny, scale = 6.7)

ちょっと前回と違うのはxy方向に数を指定します。3*3の格子にして、原子間距離は6.7マイクロメートルです。

total_time = 2.9

Ω_max = 2π * 4.3
Ω = piecewise_linear(clocks = [0.0, 0.3, 2.6, total_time], values = [0.0, Ω_max, Ω_max, 0]);

U = 2π * 15.0
Δ = piecewise_linear(clocks = [0.0, 0.3, 2.6, total_time], values = [-U, -U, U, U]);

fig, (ax1, ax2) = plt.subplots(ncols = 2, figsize = (10, 4))
Bloqade.plot!(ax1, Ω)
ax1.set_ylabel("Ω/2π (MHz)")
Bloqade.plot!(ax2, Δ)
ax2.set_ylabel("Δ/2π (MHz)")
fig

一番上は全体のスケジュールの時間です。2.9マイクロ秒と設定されています。

次に設定されているのが横磁場のスケジュール、そしてリュードベリ状態のパラメータ。

最後に図示をしてみます。

前回の一次元の時と近い感じですね。計算実行して、時間の経過を見てみます。

h = rydberg_h(atoms; Δ, Ω)
reg = zero_state(9);
prob = SchrodingerProblem(reg, total_time, h);
integrator = init(prob, Vern8());

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、グレーが0となる原子を表しています。時間とともに変化が見て取れます。以上です。

© 2025, blueqat Inc. All rights reserved