From f4d3c2bfed751290d51d1a295e3fe93aa724a5fc Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Fri, 8 Nov 2024 15:19:06 +0000 Subject: [PATCH] build based on 9a52ad2 --- dev/.documenter-siteinfo.json | 2 +- dev/guide/112c42e9.svg | 42 +++++++++++++ dev/guide/3eeaecdc.svg | 44 ------------- dev/guide/{26d865cd.svg => 6de9e0c0.svg} | 70 ++++++++++----------- dev/guide/{0c4e09a6.svg => 7399847b.svg} | 62 +++++++++--------- dev/guide/{faaf5d3d.svg => c9a025d4.svg} | 76 +++++++++++------------ dev/guide/index.html | 16 ++--- dev/index.html | 2 +- dev/manual/index.html | 2 +- dev/objects.inv | Bin 646 -> 664 bytes dev/search_index.js | 2 +- 11 files changed, 158 insertions(+), 160 deletions(-) create mode 100644 dev/guide/112c42e9.svg delete mode 100644 dev/guide/3eeaecdc.svg rename dev/guide/{26d865cd.svg => 6de9e0c0.svg} (92%) rename dev/guide/{0c4e09a6.svg => 7399847b.svg} (93%) rename dev/guide/{faaf5d3d.svg => c9a025d4.svg} (88%) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index f4c906e..5829b94 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-09-04T08:14:11","documenter_version":"1.3.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.6","generation_timestamp":"2024-11-08T15:19:02","documenter_version":"1.3.0"}} \ No newline at end of file diff --git a/dev/guide/112c42e9.svg b/dev/guide/112c42e9.svg new file mode 100644 index 0000000..842fa8a --- /dev/null +++ b/dev/guide/112c42e9.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/guide/3eeaecdc.svg b/dev/guide/3eeaecdc.svg deleted file mode 100644 index eb3ff12..0000000 --- a/dev/guide/3eeaecdc.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/guide/26d865cd.svg b/dev/guide/6de9e0c0.svg similarity index 92% rename from dev/guide/26d865cd.svg rename to dev/guide/6de9e0c0.svg index 2eb48d9..e28a816 100644 --- a/dev/guide/26d865cd.svg +++ b/dev/guide/6de9e0c0.svg @@ -1,49 +1,49 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/dev/guide/0c4e09a6.svg b/dev/guide/7399847b.svg similarity index 93% rename from dev/guide/0c4e09a6.svg rename to dev/guide/7399847b.svg index 0ec376f..130863c 100644 --- a/dev/guide/0c4e09a6.svg +++ b/dev/guide/7399847b.svg @@ -1,45 +1,45 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/dev/guide/faaf5d3d.svg b/dev/guide/c9a025d4.svg similarity index 88% rename from dev/guide/faaf5d3d.svg rename to dev/guide/c9a025d4.svg index 0b38142..428740f 100644 --- a/dev/guide/faaf5d3d.svg +++ b/dev/guide/c9a025d4.svg @@ -1,52 +1,52 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/guide/index.html b/dev/guide/index.html index 9933545..cbab44b 100644 --- a/dev/guide/index.html +++ b/dev/guide/index.html @@ -28,7 +28,7 @@ (19.809045226130653, 39.618090452261306) (19.90452261306533, 39.80904522613065) (20.0, 40.0)

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))
Example block output

Shuttling of a single spin

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))
Example block output

Shuttling of a single spin

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)
Example block output

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)
Example block output

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.5201627830633612, 0.12408605424201206)

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.5181526712997937, 0.1259774970046101)

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.5201627830633612
+MC:0.5181526712997937
 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)")
Example block output
heatmap(collect(model.R.Σ)*1e3, title="covariance, 2-spin sequential shuttling",
+plot!(model.R.P[N+1:2N,1], label="x2(t)")
Example block output
heatmap(collect(model.R.Σ)*1e3, title="covariance, 2-spin sequential shuttling",
 size=(400,300),
 xlabel="t1", ylabel="t2", dpi=300,
-right_margin=5Plots.mm)
Example block output

We can check the dephasing of the system and calculate its fidelity as before.

f1=statefidelity(model)
+right_margin=5Plots.mm)
Example block output

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.6323127275843952
+MC:0.6220955725854378
 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
+ 0.0+0.0im 0.0+0.0im 0.0-0.0im 0.0+0.0im diff --git a/dev/index.html b/dev/index.html index 21ad211..06e7db1 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Home · SpinShuttling.jl

SpinShuttling.jl

Simulate the multiple-spin shuttling problem under correlated stochastic noise.

Installation

SpinShuttling.jl can be installed by cloning the repository from GitHub.

git clone https://github.com/EigenSolver/SpinShuttling.jl.git

Go to the directory of the project in the terminal.

cd ./SpinShuttling.jl

From the Julia REPL, type ] to enter the Pkg REPL mode and run

pkg> add .

What does this package do

This package provides a set of abstractions and numerical tools to simulate the dynamics of multi-spin systems under correlated noises based on the Gaussian random field approach.

While we provided specially optimized models for spin shuttling problems, this package can also be used to simulate more general correlated open-quantum dynamics.

The following two approaches are supported.

  • Direct numerical integration for pure dephasing.
  • Monte-Carlo sampling for open-system dynamics.

About spin shuttling

Spin shuttling has recently emerged as a pivotal technology for large-scale semiconductor quantum computing. By transporting qubits between quantum dots, spin shuttling enables entanglement between non-neighboring qubits, which is essential for quantum error correction. However, the spin qubit becomes decohered by magnetic noise during the shuttling process. Since the noise varies in time and space in a correlated manner, the associated dephasing in a system of several entangled spins often cannot be treated using the standard theory of random processes and requires more advanced mathematical instruments. In our latest work, we employ the Gaussian random field (GRF) to model the magnetic noise varying in both space and time. By projecting trajectories of spin qubits onto the random field, the correlated noises experienced by multi-spin systems can be effectively captured, enabling further study on spin dynamics, dephasing, and quantum information applications.

+Home · SpinShuttling.jl

SpinShuttling.jl

Simulate the multiple-spin shuttling problem under correlated stochastic noise.

Installation

SpinShuttling.jl can be installed by cloning the repository from GitHub.

git clone https://github.com/EigenSolver/SpinShuttling.jl.git

Go to the directory of the project in the terminal.

cd ./SpinShuttling.jl

From the Julia REPL, type ] to enter the Pkg REPL mode and run

pkg> add .

What does this package do

This package provides a set of abstractions and numerical tools to simulate the dynamics of multi-spin systems under correlated noises based on the Gaussian random field approach.

While we provided specially optimized models for spin shuttling problems, this package can also be used to simulate more general correlated open-quantum dynamics.

The following two approaches are supported.

  • Direct numerical integration for pure dephasing.
  • Monte-Carlo sampling for open-system dynamics.

About spin shuttling

Spin shuttling has recently emerged as a pivotal technology for large-scale semiconductor quantum computing. By transporting qubits between quantum dots, spin shuttling enables entanglement between non-neighboring qubits, which is essential for quantum error correction. However, the spin qubit becomes decohered by magnetic noise during the shuttling process. Since the noise varies in time and space in a correlated manner, the associated dephasing in a system of several entangled spins often cannot be treated using the standard theory of random processes and requires more advanced mathematical instruments. In our latest work, we employ the Gaussian random field (GRF) to model the magnetic noise varying in both space and time. By projecting trajectories of spin qubits onto the random field, the correlated noises experienced by multi-spin systems can be effectively captured, enabling further study on spin dynamics, dephasing, and quantum information applications.

diff --git a/dev/manual/index.html b/dev/manual/index.html index 7b75654..3598044 100644 --- a/dev/manual/index.html +++ b/dev/manual/index.html @@ -1,2 +1,2 @@ -Manual · SpinShuttling.jl

APIs

Spin Shuttling Models

SpinShuttling.ShuttlingModelType

Spin shuttling model defined by a stochastic field, the realization of the stochastic field is specified by the paths of the shuttled spins.

Arguments

  • n::Int: Number of spins
  • Ψ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n
  • T::Real: Maximum time
  • N::Int: Time discretization
  • B::GaussianRandomField: Noise field
  • X::Vector{Function}: Shuttling paths, the length of the vector must be `n
  • R::RandomFunction: Random function of the sampled noises on paths
source
SpinShuttling.OneSpinModelFunction

General one spin shuttling model initialized at initial state |Ψ₀⟩, with arbitrary shuttling path x(t).

Arguments

  • Ψ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n
  • T::Real: Maximum time
  • N::Int: Time discretization
  • B::GaussianRandomField: Noise field
  • x::Function: Shuttling path
source

One spin shuttling model initialzied at |Ψ₀⟩=|+⟩. The qubit is shuttled at constant velocity along the path x(t)=L/T*t, with total time T in μs and length L in μm.

source
SpinShuttling.OneSpinForthBackModelFunction

One spin shuttling model initialzied at |Ψ₀⟩=|+⟩. The qubit is shuttled at constant velocity along a forth-back path x(t, T, L) = t<T/2 ? 2L/T*t : 2L/T*(T-t), with total time T in μs and length L in μm.

Arguments

  • T::Real: Maximum time
  • L::Real: Length of the path
  • N::Int: Time discretization
  • B::GaussianRandomField: Noise field
  • v::Real: Velocity of the shuttling
source
SpinShuttling.TwoSpinModelFunction

General two spin shuttling model initialized at initial state |Ψ₀⟩, with arbitrary shuttling paths x₁(t), x₂(t).

Arguments

  • Ψ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n
  • T::Real: Maximum time
  • N::Int: Time discretization
  • B::GaussianRandomField: Noise field
  • x₁::Function: Shuttling path for the first spin
  • x₂::Function: Shuttling path for the second spin
source
SpinShuttling.TwoSpinSequentialModelFunction

Two spin shuttling model initialized at the singlet state |Ψ₀⟩=1/√2(|↑↓⟩-|↓↑⟩). The qubits are shuttled at constant velocity along the path x₁(t)=L/T₁*t and x₂(t)=L/T₁*(t-T₀). The delay between the them is T₀ and the total shuttling time is T₁+T₀. It should be noticed that due to the exclusion of fermions, x₁(t) and x₂(t) cannot overlap.

source
SpinShuttling.TwoSpinParallelModelFunction

Two spin shuttling model initialized at the singlet state |Ψ₀⟩=1/√2(|↑↓⟩-|↓↑⟩). The qubits are shuttled at constant velocity along the 2D path x₁(t)=L/T*t, y₁(t)=0 and x₂(t)=L/T*t, y₂(t)=D. The total shuttling time is T and the length of the path is L in μm.

source
SpinShuttling.dephasingmatrixFunction

Calculate the dephasing matrix of a given spin shuttling model.

source

Sample the dephasing matrix array for a given normal random vector.

Arguments

  • model::ShuttlingModel: The spin shuttling model
  • randseq::Vector{<:Real}: The random sequence
  • isarray::Bool: Return the dephasing matrix array for each time step
source
SpinShuttling.samplingFunction

Sampling an observable that defines on a specific spin shuttling model

Arguments

  • model::ShuttlingModel: The spin shuttling model
  • objective::Function: The objective function objective(mode::ShuttlingModel; randseq)`
  • M::Int: Monte-Carlo sampling size
source
SpinShuttling.statefidelityFunction

Calculate the state fidelity of a spin shuttling model using numerical integration of the covariance matrix.

Arguments

  • model::ShuttlingModel: The spin shuttling model
source

Sample the state fidelity of a spin shuttling model using Monte-Carlo sampling.

Arguments

  • model::ShuttlingModel: The spin shuttling model
  • randseq::Vector{<:Real}: The random sequence
  • isarray::Bool: Return the dephasing matrix array for each time step
source
SpinShuttling.WFunction

Analytical dephasing factor of a one-spin shuttling model.

Arguments

  • T::Real: Total time
  • L::Real: Length of the path
  • B<:GaussianRandomField: Noise field, Ornstein-Uhlenbeck or Pink-Lorentzian
  • path::Symbol: Path of the shuttling model, :straight or :forthback
source

Analytical dephasing factor of a sequenced two-spin EPR pair shuttling model.

source

Stochastics

SpinShuttling.PinkLorentzianFieldType

Pink-Lorentzian Field, the correlation function of which is σ^2 * (expinti(-γ[2]abs(t₁ - t₂)) - expinti(-γ[1]abs(t₁ - t₂)))/log(γ[2]/γ[1]) * exp(-|x₁-x₂|/θ) where expinti is the exponential integral function.

source
SpinShuttling.RandomFunctionType

Similar type of RandomFunction in Mathematica. Can be used to generate a time series on a given time array subject to a Gaussian random process traced from a Gaussian random field.

Arguments

  • μ::Vector{<:Real}: mean of the process
  • P::Vector{<:Point}: time-position array
  • Σ::Symmetric{<:Real}: covariance matrices
  • L::Matrix{<:Real}: lower triangle matrix of Cholesky decomposition
source
SpinShuttling.CompositeRandomFunctionFunction

Create a new random function composed by a linear combination of random processes. The input random function represents the direct sum of these processes. The output random function is a tensor contraction from the input.

Arguments

  • R::RandomFunction: a direct sum of random processes R₁⊕ R₂⊕ ... ⊕ Rₙ
  • c::Vector{Int}: a vector of coefficients

Returns

  • RandomFunction: a new random function composed by a linear combination of random processes
source
SpinShuttling.characteristicvalueFunction

Compute the final phase of the characteristic functional of the process from the numerical quadrature of the covariance matrix. Using Simpson's rule by default.

source
SpinShuttling.covariancematrixFunction

Covariance matrix of a Gaussian random field. When P₁=P₂, it is the auto-covariance matrix of a Gaussian random process. When P₁!=P₂, it is the cross-covariance matrix between two Gaussian random processes.

Arguments

  • P₁::Vector{<:Point}: time-position array
  • P₂::Vector{<:Point}: time-position array
  • process::GaussianRandomField: a Gaussian random field
source

Auto-Covariance matrix of a Gaussian random process.

Arguments

  • P::Vector{<:Point}: time-position array
  • process::GaussianRandomField: a Gaussian random field

Returns

  • Symmetric{Real}: auto-covariance matrix
source
SpinShuttling.covarianceFunction

Covariance function of Gaussian random field.

Arguments

  • p₁::Point: time-position array
  • p₂::Point: time-position array
  • process<:GaussianRandomField: a Gaussian random field, e.g. OrnsteinUhlenbeckField or PinkLorentzianField
source
+Manual · SpinShuttling.jl

APIs

Spin Shuttling Models

SpinShuttling.ShuttlingModelType

Spin shuttling model defined by a stochastic field, the realization of the stochastic field is specified by the paths of the shuttled spins.

Arguments

  • n::Int: Number of spins
  • Ψ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n
  • T::Real: Maximum time
  • N::Int: Time discretization
  • B::GaussianRandomField: Noise field
  • X::Vector{Function}: Shuttling paths, the length of the vector must be `n
  • R::RandomFunction: Random function of the sampled noises on paths
source
SpinShuttling.OneSpinModelFunction

General one spin shuttling model initialized at initial state |Ψ₀⟩, with arbitrary shuttling path x(t).

Arguments

  • Ψ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n
  • T::Real: Maximum time
  • N::Int: Time discretization
  • B::GaussianRandomField: Noise field
  • x::Function: Shuttling path
source

One spin shuttling model initialzied at |Ψ₀⟩=|+⟩. The qubit is shuttled at constant velocity along the path x(t)=L/T*t, with total time T in μs and length L in μm.

source
SpinShuttling.OneSpinForthBackModelFunction

One spin shuttling model initialzied at |Ψ₀⟩=|+⟩. The qubit is shuttled at constant velocity along a forth-back path x(t, T, L) = t<T/2 ? 2L/T*t : 2L/T*(T-t), with total time T in μs and length L in μm.

Arguments

  • T::Real: Maximum time
  • L::Real: Length of the path
  • N::Int: Time discretization
  • B::GaussianRandomField: Noise field
  • v::Real: Velocity of the shuttling
source
SpinShuttling.TwoSpinModelFunction

General two spin shuttling model initialized at initial state |Ψ₀⟩, with arbitrary shuttling paths x₁(t), x₂(t).

Arguments

  • Ψ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n
  • T::Real: Maximum time
  • N::Int: Time discretization
  • B::GaussianRandomField: Noise field
  • x₁::Function: Shuttling path for the first spin
  • x₂::Function: Shuttling path for the second spin
source
SpinShuttling.TwoSpinSequentialModelFunction

Two spin shuttling model initialized at the singlet state |Ψ₀⟩=1/√2(|↑↓⟩-|↓↑⟩). The qubits are shuttled at constant velocity along the path x₁(t)=L/T₁*t and x₂(t)=L/T₁*(t-T₀). The delay between the them is T₀ and the total shuttling time is T₁+T₀. It should be noticed that due to the exclusion of fermions, x₁(t) and x₂(t) cannot overlap.

source
SpinShuttling.TwoSpinParallelModelFunction

Two spin shuttling model initialized at the singlet state |Ψ₀⟩=1/√2(|↑↓⟩-|↓↑⟩). The qubits are shuttled at constant velocity along the 2D path x₁(t)=L/T*t, y₁(t)=0 and x₂(t)=L/T*t, y₂(t)=D. The total shuttling time is T and the length of the path is L in μm.

source
SpinShuttling.dephasingmatrixFunction

Calculate the dephasing matrix of a given spin shuttling model.

source

Sample the dephasing matrix array for a given normal random vector.

Arguments

  • model::ShuttlingModel: The spin shuttling model
  • randseq::Vector{<:Real}: The random sequence
  • isarray::Bool: Return the dephasing matrix array for each time step
source
SpinShuttling.samplingFunction

Sampling an observable that defines on a specific spin shuttling model

Arguments

  • model::ShuttlingModel: The spin shuttling model
  • objective::Function: The objective function objective(mode::ShuttlingModel; randseq)`
  • M::Int: Monte-Carlo sampling size
source
SpinShuttling.statefidelityFunction

Calculate the state fidelity of a spin shuttling model using numerical integration of the covariance matrix.

Arguments

  • model::ShuttlingModel: The spin shuttling model
source

Sample the state fidelity of a spin shuttling model using Monte-Carlo sampling.

Arguments

  • model::ShuttlingModel: The spin shuttling model
  • randseq::Vector{<:Real}: The random sequence
  • isarray::Bool: Return the dephasing matrix array for each time step
source
SpinShuttling.WFunction

Analytical dephasing factor of a one-spin shuttling model.

Arguments

  • T::Real: Total time
  • L::Real: Length of the path
  • B<:GaussianRandomField: Noise field, Ornstein-Uhlenbeck or Pink-Lorentzian
  • path::Symbol: Path of the shuttling model, :straight or :forthback
source

Analytical dephasing factor of a sequenced two-spin EPR pair shuttling model.

source

Stochastics

SpinShuttling.PinkLorentzianFieldType

Pink-Lorentzian Field, the correlation function of which is σ^2 * (expinti(-γ[2]abs(t₁ - t₂)) - expinti(-γ[1]abs(t₁ - t₂)))/log(γ[2]/γ[1]) * exp(-|x₁-x₂|/θ) where expinti is the exponential integral function.

source
SpinShuttling.RandomFunctionType

Generate a random time series from a Gaussian random field.

R() generates a random time series from a Gaussian random field R R(randseq) generates a random time series from a Gaussian random field R with a given random sequence randseq.

source
SpinShuttling.CompositeRandomFunctionFunction

Create a new random function composed by a linear combination of random processes. The input random function represents the direct sum of these processes. The output random function is a tensor contraction from the input.

Arguments

  • R::RandomFunction: a direct sum of random processes R₁⊕ R₂⊕ ... ⊕ Rₙ
  • c::Vector{Int}: a vector of coefficients

Returns

  • RandomFunction: a new random function composed by a linear combination of random processes
source
SpinShuttling.characteristicvalueFunction

Compute the final phase of the characteristic functional of the process from the numerical quadrature of the covariance matrix. Using Simpson's rule by default.

source
SpinShuttling.covariancematrixFunction

Covariance matrix of a Gaussian random field. When P₁=P₂, it is the auto-covariance matrix of a Gaussian random process. When P₁!=P₂, it is the cross-covariance matrix between two Gaussian random processes.

Arguments

  • P₁::Vector{<:Point}: time-position array
  • P₂::Vector{<:Point}: time-position array
  • process::GaussianRandomField: a Gaussian random field
source

Auto-Covariance matrix of a Gaussian random process.

Arguments

  • P::Vector{<:Point}: time-position array
  • process::GaussianRandomField: a Gaussian random field

Returns

  • Symmetric{Real}: auto-covariance matrix
source
SpinShuttling.covarianceFunction

Covariance function of Gaussian random field.

Arguments

  • p₁::Point: time-position array
  • p₂::Point: time-position array
  • process<:GaussianRandomField: a Gaussian random field, e.g. OrnsteinUhlenbeckField or PinkLorentzianField
source
diff --git a/dev/objects.inv b/dev/objects.inv index ab45a2dda7a1b4f894dafea229e37450dc0b083f..e8878190ac66082bce70e0d95c1ec96a81f77a7c 100644 GIT binary patch delta 542 zcmV+(0^$9J1(*epg@3_r+b|5h>nk{HJE}!@?5$mqw!n&I%Z8p6n~vGYk|)Vs+pixb zXG(&^nT?&2(C!=|8x*UKO581{!a02Fs93`yC>KPdOsDiN zsIQ#EL;4hpV2fJ$K!r~zt(K^FaPL2W6jw{z1?gKd($`%Gnt#k{AI-1?f(U{P63L59 zUiJySSElW{y}_2fFi+Y_q6x~ZG?sniR+00v>|A`D8=MWOW+ku{WToC+Qi5J-YxPVl z_~9b|e9{LKO7U2$AWMs0hMGKkD%NU+Tsgo-Bt#@cBy5me5w~d2sSw9d(pd5+Jvw5| z%Gri%KCeVpgnzmm7;&ou3X%@=IuLcZw$*{8Bl2)DUhYFN6xna=Xp2mUDY9T9q!7h5 zr(4LzmZ%5F2>}Tq?u`#hYj$hRkyvB$a_jCPat6;af_I$tU~x6SKXJhOtNm&)7G~Ck z`kEJ$B;ZM3R-Gx5#Zzp~)TttH)G^v;r8^wW{qftT0)PJM_$W!~|7o2mW9gf@r}cas zjr6K%(@I8#ju9?T7|EuQukRKSWaQ&V`Ix~^$~ZAf!o zmDV_M!(=F)1-;?B0nQNqO`t*3zBl__mAn|d($TOQ({L6?7Dyp0NuUdG?1 g<5vWd`4?GhG)pYj<9E9~qlrBaQ#sP>4@o?rU|8k~Pyhe` delta 524 zcmV+n0`vWt1%?HXg?~+R(=ZUd>sRayT-6TO-ddPIXXp?JOwSu@9jlQgBgv)Z*Rzs? zoJ>Bjhf|XEdvD*qT}N9*FA$=-QLX~{4&ak(No;zpXuq5b*YLI1)fQF}eH1O)9?d>z zs9eKC{uHa|ss=;URmdoVYchMdH*Z0T+qLVX44t+zG<}Rl+ked=nqe6P2?PZsvKN`X z91;evOxt(+fjaiWJn3plHlp1aQbXeowGUGDK0PiCuFj|yC2%zqrNLcRfr; za8-UjnWG7%cx*6Ak`C8K9mqPO442~NK01XWhmD|l<_tL_AS1-R4H1oDx6Yo3H6<@ccMpkk_8b#<&)EPLx6Atr2Yk5NFP2ha;e2fF zcrjT5p3F_%+bUbU#O6#rR*|Dl(LST;X)^cwFP97Svw!EK)M);vb)ih9@8+J@^KmjV zVB6)DOdiKQqt|Gw=>aaa-F|kS!~4y|MSeY)8(%xR>@8xXnlIDn_&Rr8^8(wEmb@xs zXy%6ByS8&dNBV|Vxppyk#pPRR`_E|9-@nQhqt`FfugUXEP1^ow4B0hR+v(dF7eBM- OaVjTz{RIKuoP-gh=>UfS diff --git a/dev/search_index.js b/dev/search_index.js index 190e03f..a284091 100644 --- a/dev/search_index.js +++ b/dev/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"guide/#Quick-Start","page":"Quick Start","title":"Quick Start","text":"","category":"section"},{"location":"guide/#Basic-model","page":"Quick Start","title":"Basic model","text":"","category":"section"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"H_noise(t)=g mu_B sum_j leftB_0(x^c_j)+tildeB(x^c_jt)right S_j^z","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We assume the electrons are adiabatically transported in moving-wave potential with their wave functions well localized at x_j^c. Then, the effective magnetic noise tildeB(x_j^c t) can be modeled by a Gaussian random field. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"In the case of pure dephasing, the system dynamics can be explicitly written out. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"U(t)=exp(-fracihbar int_0^t H_noise(tau)mathrmd tau)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"If we label a realization of the random process by k, then the pure dephasing channel can be expressed as a mixing unitary process.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"mathcalE(rho)=frac1M sum_k=1^M U_k rho U_k^dagger\n=sum_k E_k rho E_k^dagger quad E_k= U_k sqrtM","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The pure dephasing of such a system can be analytically solved and efficiently obtained via a matrix of dephasing factors, while more general system dynamics involving other interactions can be numerically solved by Monte-Carlo sampling.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"mathcalH(t)=H_noise(t)+H_int(t)","category":"page"},{"location":"guide/#Generating-a-noise-series-from-a-stochastic-field","page":"Quick Start","title":"Generating a noise series from a stochastic field","text":"","category":"section"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Import the package.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"using SpinShuttling\nusing Plots","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We first define a 2D Ornstein-Uhlenbeck field, specified by three parameters. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"κₜ=1/20; # inverse correlation time\nκₓ=1/0.1; # inverse correlation length\nσ = 1; # noise strength\nB=OrnsteinUhlenbeckField(0,[κₜ,κₓ],σ); # mean is zero\nnothing","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Specify a trajectory (t,x(t)) on the 2D plane; in this example case, it's just a line. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"t=range(1,20,200); # time step\nv=2; #velocity\nP=collect(zip(t, v.*t));","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"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.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"R=RandomFunction(P, B) \nplot(t, R(), xlabel=\"t\", ylabel=\"B(t)\", size=(400,300)) ","category":"page"},{"location":"guide/#Shuttling-of-a-single-spin","page":"Quick Start","title":"Shuttling of a single spin","text":"","category":"section"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can follow the above approach to define a single-spin shuttling model.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"σ = sqrt(2) / 20; # variance of the process\nκₜ=1/20; # temporal correlation\nκₓ=1/0.1; # spatial correlation\nB=OrnsteinUhlenbeckField(0,[κₜ,κₓ],σ);\n\nnothing","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Consider the shuttling of a single spin at constant velocity v. We need to specify the initial state, traveling time T, and length L=v*T, and the stochastic noise experienced by the spin qubit.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"T=400; # total time\nL=10; # shuttling length\nv=L/T;","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The package provided a simple encapsulation for the single spin shuttling, namely by OneSpinModel. We must specify the discretization and Monte-Carlo sizes to create a model.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"M = 10000; # monte carlo sampling size\nN=301; # discretization size\nmodel=OneSpinModel(T,L,N,B)\nprintln(model)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"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.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The effective noise of this spin qubit is completely characterized by its covariance matrix. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"heatmap(collect(sqrt.(model.R.Σ)), title=\"sqrt cov, 1-spin one-way shuttling\", \nsize=(400,300), \nxlabel=\"t1\", ylabel=\"t2\", dpi=300,\nright_margin=5Plots.mm)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The state fidelity after such a quantum process can be obtained using numerical integration of the covariance matrix. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f1=statefidelity(model); # direct integration\n\nf2, f2_err=sampling(model, statefidelity, M); # Monte-Carlo sampling","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"An analytical solution is also available for single-spin shuttling at a constant velocity. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f3=1/2*(1+W(T,L,B));","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can compare the results form the three methods and check their consistency.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"@assert isapprox(f1, f3,rtol=1e-2)\n@assert isapprox(f2, f3, rtol=1e-2) \nprintln(\"NI:\", f1)\nprintln(\"MC:\", f2)\nprintln(\"TH:\", f3)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"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 mathcalE(rho)=w odotrho. Here odot is an element-wise Hadmard product. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Ψ= model.Ψ\nρ=Ψ*Ψ'\nw=dephasingmatrix(model)\nρt=w.*ρ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can check that the fidelity between the initial and final state is consistent with the results above. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f=(Ψ'*ρt*Ψ)","category":"page"},{"location":"guide/#Dephasing-of-entangled-spin-pairs-during-shuttling.","page":"Quick Start","title":"Dephasing of entangled spin pairs during shuttling.","text":"","category":"section"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Following the approach above, we can further explore the multi-spin system. The general abstraction on such a problem is given by the data type ShuttlingModel. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"ShuttlingModel(n, Ψ, T, N, B, X, R)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Users can freely define an n-qubit system with an arbitrary initial state. Here, X=[x1,x2...] is an array of functions, containing spin trajectories x_i(t). R is a random function constructed from the specific noise process. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"One more example is the shuttling of two spin pairs. We can define such a two-spin system. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"L=10; σ =sqrt(2)/20; M=5000; N=501; T1=100; T0=25; κₜ=1/20; κₓ=1/0.1;\nB=OrnsteinUhlenbeckField(0,[κₜ,κₓ],σ)\nmodel=TwoSpinSequentialModel(T0, T1, L, N, B)\nprintln(model)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The system is initialized in the Bell state ketPsi^-. 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.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"plot(model.R.P[1:N,1], label=\"x1(t)\",\nxlabel=\"t\", ylabel=\"x\",size=(400,300), dpi=300\n)\nplot!(model.R.P[N+1:2N,1], label=\"x2(t)\")","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"heatmap(collect(model.R.Σ)*1e3, title=\"covariance, 2-spin sequential shuttling\", \nsize=(400,300), \nxlabel=\"t1\", ylabel=\"t2\", dpi=300,\nright_margin=5Plots.mm)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can check the dephasing of the system and calculate its fidelity as before. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f1=statefidelity(model)\nf2, f2_err=sampling(model, statefidelity, M)\nf3=1/2*(1+W(T0, T1, L,B))\n\nprintln(\"NI:\", f1)\nprintln(\"MC:\", f2)\nprintln(\"TH:\", f3)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The density matrix after the channel can be given by the dephasing matrix.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Ψ= model.Ψ\nρ=Ψ*Ψ'\nw=dephasingmatrix(model)\n\nρt=w.*ρ","category":"page"},{"location":"manual/#APIs","page":"Manual","title":"APIs","text":"","category":"section"},{"location":"manual/","page":"Manual","title":"Manual","text":"CurrentModule = SpinShuttling","category":"page"},{"location":"manual/#Spin-Shuttling-Models","page":"Manual","title":"Spin Shuttling Models","text":"","category":"section"},{"location":"manual/","page":"Manual","title":"Manual","text":"ShuttlingModel","category":"page"},{"location":"manual/#SpinShuttling.ShuttlingModel","page":"Manual","title":"SpinShuttling.ShuttlingModel","text":"Spin shuttling model defined by a stochastic field, the realization of the stochastic field is specified by the paths of the shuttled spins.\n\nArguments\n\nn::Int: Number of spins\nΨ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n\nT::Real: Maximum time \nN::Int: Time discretization \nB::GaussianRandomField: Noise field\nX::Vector{Function}: Shuttling paths, the length of the vector must be `n\nR::RandomFunction: Random function of the sampled noises on paths\n\n\n\n\n\n","category":"type"},{"location":"manual/","page":"Manual","title":"Manual","text":"OneSpinModel","category":"page"},{"location":"manual/#SpinShuttling.OneSpinModel","page":"Manual","title":"SpinShuttling.OneSpinModel","text":"General one spin shuttling model initialized at initial state |Ψ₀⟩, with arbitrary shuttling path x(t). \n\nArguments\n\nΨ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n\nT::Real: Maximum time\nN::Int: Time discretization\nB::GaussianRandomField: Noise field\nx::Function: Shuttling path\n\n\n\n\n\nOne spin shuttling model initialzied at |Ψ₀⟩=|+⟩. The qubit is shuttled at constant velocity along the path x(t)=L/T*t, with total time T in μs and length L in μm.\n\n\n\n\n\n","category":"function"},{"location":"manual/","page":"Manual","title":"Manual","text":"OneSpinForthBackModel","category":"page"},{"location":"manual/#SpinShuttling.OneSpinForthBackModel","page":"Manual","title":"SpinShuttling.OneSpinForthBackModel","text":"One spin shuttling model initialzied at |Ψ₀⟩=|+⟩. The qubit is shuttled at constant velocity along a forth-back path x(t, T, L) = t add .","category":"page"},{"location":"#What-does-this-package-do","page":"Home","title":"What does this package do","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"This package provides a set of abstractions and numerical tools to simulate the dynamics of multi-spin systems under correlated noises based on the Gaussian random field approach. ","category":"page"},{"location":"","page":"Home","title":"Home","text":"While we provided specially optimized models for spin shuttling problems, this package can also be used to simulate more general correlated open-quantum dynamics.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The following two approaches are supported.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Direct numerical integration for pure dephasing.\nMonte-Carlo sampling for open-system dynamics. ","category":"page"},{"location":"#About-spin-shuttling","page":"Home","title":"About spin shuttling","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Spin shuttling has recently emerged as a pivotal technology for large-scale semiconductor quantum computing. By transporting qubits between quantum dots, spin shuttling enables entanglement between non-neighboring qubits, which is essential for quantum error correction. However, the spin qubit becomes decohered by magnetic noise during the shuttling process. Since the noise varies in time and space in a correlated manner, the associated dephasing in a system of several entangled spins often cannot be treated using the standard theory of random processes and requires more advanced mathematical instruments. In our latest work, we employ the Gaussian random field (GRF) to model the magnetic noise varying in both space and time. By projecting trajectories of spin qubits onto the random field, the correlated noises experienced by multi-spin systems can be effectively captured, enabling further study on spin dynamics, dephasing, and quantum information applications. ","category":"page"}] +[{"location":"guide/#Quick-Start","page":"Quick Start","title":"Quick Start","text":"","category":"section"},{"location":"guide/#Basic-model","page":"Quick Start","title":"Basic model","text":"","category":"section"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"H_noise(t)=g mu_B sum_j leftB_0(x^c_j)+tildeB(x^c_jt)right S_j^z","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We assume the electrons are adiabatically transported in moving-wave potential with their wave functions well localized at x_j^c. Then, the effective magnetic noise tildeB(x_j^c t) can be modeled by a Gaussian random field. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"In the case of pure dephasing, the system dynamics can be explicitly written out. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"U(t)=exp(-fracihbar int_0^t H_noise(tau)mathrmd tau)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"If we label a realization of the random process by k, then the pure dephasing channel can be expressed as a mixing unitary process.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"mathcalE(rho)=frac1M sum_k=1^M U_k rho U_k^dagger\n=sum_k E_k rho E_k^dagger quad E_k= U_k sqrtM","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The pure dephasing of such a system can be analytically solved and efficiently obtained via a matrix of dephasing factors, while more general system dynamics involving other interactions can be numerically solved by Monte-Carlo sampling.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"mathcalH(t)=H_noise(t)+H_int(t)","category":"page"},{"location":"guide/#Generating-a-noise-series-from-a-stochastic-field","page":"Quick Start","title":"Generating a noise series from a stochastic field","text":"","category":"section"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Import the package.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"using SpinShuttling\nusing Plots","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We first define a 2D Ornstein-Uhlenbeck field, specified by three parameters. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"κₜ=1/20; # inverse correlation time\nκₓ=1/0.1; # inverse correlation length\nσ = 1; # noise strength\nB=OrnsteinUhlenbeckField(0,[κₜ,κₓ],σ); # mean is zero\nnothing","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Specify a trajectory (t,x(t)) on the 2D plane; in this example case, it's just a line. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"t=range(1,20,200); # time step\nv=2; #velocity\nP=collect(zip(t, v.*t));","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"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.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"R=RandomFunction(P, B) \nplot(t, R(), xlabel=\"t\", ylabel=\"B(t)\", size=(400,300)) ","category":"page"},{"location":"guide/#Shuttling-of-a-single-spin","page":"Quick Start","title":"Shuttling of a single spin","text":"","category":"section"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can follow the above approach to define a single-spin shuttling model.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"σ = sqrt(2) / 20; # variance of the process\nκₜ=1/20; # temporal correlation\nκₓ=1/0.1; # spatial correlation\nB=OrnsteinUhlenbeckField(0,[κₜ,κₓ],σ);\n\nnothing","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Consider the shuttling of a single spin at constant velocity v. We need to specify the initial state, traveling time T, and length L=v*T, and the stochastic noise experienced by the spin qubit.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"T=400; # total time\nL=10; # shuttling length\nv=L/T;","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The package provided a simple encapsulation for the single spin shuttling, namely by OneSpinModel. We must specify the discretization and Monte-Carlo sizes to create a model.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"M = 10000; # monte carlo sampling size\nN=301; # discretization size\nmodel=OneSpinModel(T,L,N,B)\nprintln(model)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"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.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The effective noise of this spin qubit is completely characterized by its covariance matrix. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"heatmap(collect(sqrt.(model.R.Σ)), title=\"sqrt cov, 1-spin one-way shuttling\", \nsize=(400,300), \nxlabel=\"t1\", ylabel=\"t2\", dpi=300,\nright_margin=5Plots.mm)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The state fidelity after such a quantum process can be obtained using numerical integration of the covariance matrix. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f1=statefidelity(model); # direct integration\n\nf2, f2_err=sampling(model, statefidelity, M); # Monte-Carlo sampling","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"An analytical solution is also available for single-spin shuttling at a constant velocity. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f3=1/2*(1+W(T,L,B));","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can compare the results form the three methods and check their consistency.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"@assert isapprox(f1, f3,rtol=1e-2)\n@assert isapprox(f2, f3, rtol=1e-2) \nprintln(\"NI:\", f1)\nprintln(\"MC:\", f2)\nprintln(\"TH:\", f3)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"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 mathcalE(rho)=w odotrho. Here odot is an element-wise Hadmard product. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Ψ= model.Ψ\nρ=Ψ*Ψ'\nw=dephasingmatrix(model)\nρt=w.*ρ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can check that the fidelity between the initial and final state is consistent with the results above. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f=(Ψ'*ρt*Ψ)","category":"page"},{"location":"guide/#Dephasing-of-entangled-spin-pairs-during-shuttling.","page":"Quick Start","title":"Dephasing of entangled spin pairs during shuttling.","text":"","category":"section"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Following the approach above, we can further explore the multi-spin system. The general abstraction on such a problem is given by the data type ShuttlingModel. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"ShuttlingModel(n, Ψ, T, N, B, X, R)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Users can freely define an n-qubit system with an arbitrary initial state. Here, X=[x1,x2...] is an array of functions, containing spin trajectories x_i(t). R is a random function constructed from the specific noise process. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"One more example is the shuttling of two spin pairs. We can define such a two-spin system. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"L=10; σ =sqrt(2)/20; M=5000; N=501; T1=100; T0=25; κₜ=1/20; κₓ=1/0.1;\nB=OrnsteinUhlenbeckField(0,[κₜ,κₓ],σ)\nmodel=TwoSpinSequentialModel(T0, T1, L, N, B)\nprintln(model)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The system is initialized in the Bell state ketPsi^-. 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.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"plot(model.R.P[1:N,1], label=\"x1(t)\",\nxlabel=\"t\", ylabel=\"x\",size=(400,300), dpi=300\n)\nplot!(model.R.P[N+1:2N,1], label=\"x2(t)\")","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"heatmap(collect(model.R.Σ)*1e3, title=\"covariance, 2-spin sequential shuttling\", \nsize=(400,300), \nxlabel=\"t1\", ylabel=\"t2\", dpi=300,\nright_margin=5Plots.mm)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can check the dephasing of the system and calculate its fidelity as before. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f1=statefidelity(model)\nf2, f2_err=sampling(model, statefidelity, M)\nf3=1/2*(1+W(T0, T1, L,B))\n\nprintln(\"NI:\", f1)\nprintln(\"MC:\", f2)\nprintln(\"TH:\", f3)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The density matrix after the channel can be given by the dephasing matrix.","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Ψ= model.Ψ\nρ=Ψ*Ψ'\nw=dephasingmatrix(model)\n\nρt=w.*ρ","category":"page"},{"location":"manual/#APIs","page":"Manual","title":"APIs","text":"","category":"section"},{"location":"manual/","page":"Manual","title":"Manual","text":"CurrentModule = SpinShuttling","category":"page"},{"location":"manual/#Spin-Shuttling-Models","page":"Manual","title":"Spin Shuttling Models","text":"","category":"section"},{"location":"manual/","page":"Manual","title":"Manual","text":"ShuttlingModel","category":"page"},{"location":"manual/#SpinShuttling.ShuttlingModel","page":"Manual","title":"SpinShuttling.ShuttlingModel","text":"Spin shuttling model defined by a stochastic field, the realization of the stochastic field is specified by the paths of the shuttled spins.\n\nArguments\n\nn::Int: Number of spins\nΨ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n\nT::Real: Maximum time \nN::Int: Time discretization \nB::GaussianRandomField: Noise field\nX::Vector{Function}: Shuttling paths, the length of the vector must be `n\nR::RandomFunction: Random function of the sampled noises on paths\n\n\n\n\n\n","category":"type"},{"location":"manual/","page":"Manual","title":"Manual","text":"OneSpinModel","category":"page"},{"location":"manual/#SpinShuttling.OneSpinModel","page":"Manual","title":"SpinShuttling.OneSpinModel","text":"General one spin shuttling model initialized at initial state |Ψ₀⟩, with arbitrary shuttling path x(t). \n\nArguments\n\nΨ::Vector{<:Complex}: Initial state of the spin system, the length of the vector must be `2^n\nT::Real: Maximum time\nN::Int: Time discretization\nB::GaussianRandomField: Noise field\nx::Function: Shuttling path\n\n\n\n\n\nOne spin shuttling model initialzied at |Ψ₀⟩=|+⟩. The qubit is shuttled at constant velocity along the path x(t)=L/T*t, with total time T in μs and length L in μm.\n\n\n\n\n\n","category":"function"},{"location":"manual/","page":"Manual","title":"Manual","text":"OneSpinForthBackModel","category":"page"},{"location":"manual/#SpinShuttling.OneSpinForthBackModel","page":"Manual","title":"SpinShuttling.OneSpinForthBackModel","text":"One spin shuttling model initialzied at |Ψ₀⟩=|+⟩. The qubit is shuttled at constant velocity along a forth-back path x(t, T, L) = t add .","category":"page"},{"location":"#What-does-this-package-do","page":"Home","title":"What does this package do","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"This package provides a set of abstractions and numerical tools to simulate the dynamics of multi-spin systems under correlated noises based on the Gaussian random field approach. ","category":"page"},{"location":"","page":"Home","title":"Home","text":"While we provided specially optimized models for spin shuttling problems, this package can also be used to simulate more general correlated open-quantum dynamics.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The following two approaches are supported.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Direct numerical integration for pure dephasing.\nMonte-Carlo sampling for open-system dynamics. ","category":"page"},{"location":"#About-spin-shuttling","page":"Home","title":"About spin shuttling","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Spin shuttling has recently emerged as a pivotal technology for large-scale semiconductor quantum computing. By transporting qubits between quantum dots, spin shuttling enables entanglement between non-neighboring qubits, which is essential for quantum error correction. However, the spin qubit becomes decohered by magnetic noise during the shuttling process. Since the noise varies in time and space in a correlated manner, the associated dephasing in a system of several entangled spins often cannot be treated using the standard theory of random processes and requires more advanced mathematical instruments. In our latest work, we employ the Gaussian random field (GRF) to model the magnetic noise varying in both space and time. By projecting trajectories of spin qubits onto the random field, the correlated noises experienced by multi-spin systems can be effectively captured, enabling further study on spin dynamics, dephasing, and quantum information applications. ","category":"page"}] }