diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json
index 2b36196..913d90c 100644
--- a/dev/.documenter-siteinfo.json
+++ b/dev/.documenter-siteinfo.json
@@ -1 +1 @@
-{"documenter":{"julia_version":"1.10.6","generation_timestamp":"2024-11-20T12:41:03","documenter_version":"1.3.0"}}
\ No newline at end of file
+{"documenter":{"julia_version":"1.10.6","generation_timestamp":"2024-11-20T13:04:12","documenter_version":"1.3.0"}}
\ No newline at end of file
diff --git a/dev/guide/2f9da57b.svg b/dev/guide/0274831a.svg
similarity index 88%
rename from dev/guide/2f9da57b.svg
rename to dev/guide/0274831a.svg
index f7c4b48..b2a6040 100644
--- a/dev/guide/2f9da57b.svg
+++ b/dev/guide/0274831a.svg
@@ -1,52 +1,52 @@
+
A Gaussian random process (random function) can be obtained by projecting the Gaussian random field along the time-space array P
. Then, we can use R()
to invoke the process and generate a random time series.
R=RandomFunction(P, B)
-plot(t, R(), xlabel="t", ylabel="B(t)", size=(400,300))
We can follow the above approach to define a single-spin shuttling model.
σ = sqrt(2) / 20; # variance of the process
+plot(t, R(), xlabel="t", ylabel="B(t)", size=(400,300))
We can follow the above approach to define a single-spin shuttling model.
σ = sqrt(2) / 20; # variance of the process
κₜ=1/20; # temporal correlation
κₓ=1/0.1; # spatial correlation
B=OrnsteinUhlenbeckField(0,[κₜ,κₓ],σ);
@@ -47,14 +47,14 @@
Shuttling Paths:
The println
function provides us with an overview of the model. It's a single spin shuttling problem with the initial state Ψ₀
and an Ornstein-Uhlenbeck noise. The total time of simulation is T
, which is discretized into N
steps.
The effective noise of this spin qubit is completely characterized by its covariance matrix.
heatmap(collect(sqrt.(model.R.Σ)), title="sqrt cov, 1-spin one-way shuttling",
size=(400,300),
xlabel="t1", ylabel="t2", dpi=300,
-right_margin=5Plots.mm)
The state fidelity after such a quantum process can be obtained using numerical integration of the covariance matrix.
f1=statefidelity(model); # direct integration
+right_margin=5Plots.mm)
The state fidelity after such a quantum process can be obtained using numerical integration of the covariance matrix.
f1=statefidelity(model); # direct integration
-f2, f2_err=sampling(model, statefidelity, M); # Monte-Carlo sampling
(0.5163125027528451, 0.1245330022817073)
An analytical solution is also available for single-spin shuttling at a constant velocity.
f3=1/2*(1+W(T,L,B));
0.5183394145238882
We can compare the results form the three methods and check their consistency.
@assert isapprox(f1, f3,rtol=1e-2)
+f2, f2_err=sampling(model, statefidelity, M); # Monte-Carlo sampling
(0.5161385456118808, 0.1245347287487146)
An analytical solution is also available for single-spin shuttling at a constant velocity.
f3=1/2*(1+W(T,L,B));
0.5183394145238882
We can compare the results form the three methods and check their consistency.
@assert isapprox(f1, f3,rtol=1e-2)
@assert isapprox(f2, f3, rtol=1e-2)
println("NI:", f1)
println("MC:", f2)
println("TH:", f3)
NI:0.5172897445804852
-MC:0.5163125027528451
+MC:0.5161385456118808
TH:0.5183394145238882
The pure dephasing channel is computationally simple and can be represented by a dephasing matrix $w$, such that the final density state after the channel is given by $\mathcal{E}(\rho)=w \odot\rho$. Here $\odot$ is an element-wise Hadmard product.
Ψ= model.Ψ
ρ=Ψ*Ψ'
w=dephasingmatrix(model)
@@ -72,17 +72,17 @@
Shuttling Paths:
The system is initialized in the Bell state $\ket{\Psi^-}$. The model encapsulated a model of two spins shuttled in a sequential manner, as we can see from the two trajectories x1(t)
and x2(t)
. One spin goes first and then follows another, with a waiting time of T0
. This is modeled by the piece-wise linear trajectories. We can see some quite interesting covariance from such a system.
plot(model.R.P[1:N,1], label="x1(t)",
xlabel="t", ylabel="x",size=(400,300), dpi=300
)
-plot!(model.R.P[N+1:2N,1], label="x2(t)")
heatmap(collect(model.R.Σ)*1e3, title="covariance, 2-spin sequential shuttling",
+plot!(model.R.P[N+1:2N,1], label="x2(t)")
heatmap(collect(model.R.Σ)*1e3, title="covariance, 2-spin sequential shuttling",
size=(400,300),
xlabel="t1", ylabel="t2", dpi=300,
-right_margin=5Plots.mm)
We can check the dephasing of the system and calculate its fidelity as before.
f1=statefidelity(model)
+right_margin=5Plots.mm)
We can check the dephasing of the system and calculate its fidelity as before.
f1=statefidelity(model)
f2, f2_err=sampling(model, statefidelity, M)
f3=1/2*(1+W(T0, T1, L,B))
println("NI:", f1)
println("MC:", f2)
println("TH:", f3)
NI:0.6234798910481352
-MC:0.6283957060550832
+MC:0.6185162116589319
TH:0.6238118248013063
The density matrix after the channel can be given by the dephasing matrix.
Ψ= model.Ψ
ρ=Ψ*Ψ'
w=dephasingmatrix(model)
@@ -91,4 +91,4 @@
0.0+0.0im 0.0+0.0im 0.0-0.0im 0.0+0.0im
0.0+0.0im 0.5+0.0im -0.12348-0.0im 0.0+0.0im
0.0+0.0im -0.12348+0.0im 0.5+0.0im 0.0+0.0im
- 0.0+0.0im 0.0+0.0im 0.0-0.0im 0.0+0.0im
Settings
This document was generated with Documenter.jl version 1.3.0 on Wednesday 20 November 2024. Using Julia version 1.10.6.