diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index ba02086..9ce1003 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-07-02T18:55:55","documenter_version":"1.3.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-07-02T18:57:35","documenter_version":"1.3.0"}} \ No newline at end of file diff --git a/dev/guide/index.html b/dev/guide/index.html index 9790784..b9e9d8e 100644 --- a/dev/guide/index.html +++ b/dev/guide/index.html @@ -44,4 +44,4 @@ 0.0 0.0 -0.0 0.0 0.0 0.5 -0.470067 0.0 -0.0 -0.470067 0.5 -0.0 - 0.0 0.0 -0.0 0.0 + 0.0 0.0 -0.0 0.0 diff --git a/dev/index.html b/dev/index.html index a316909..a1359d3 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

<!– ### Github Repository –> 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 terminal.

cd ./SpinShuttling.jl

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

pkg> add .

<!– ### Julia Package Manager From the Julia REPL, type ] to enter the Pkg REPL mode and run

pkg> add SpinShuttling

–>

What does this package do

This package provides a set of abstractions and numericals tools to simulating dynamics of multi-spin system 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 system 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 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 numericals tools to simulating dynamics of multi-spin system 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 system 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 74ab66f..6a7b2e9 100644 --- a/dev/manual/index.html +++ b/dev/manual/index.html @@ -1,3 +1,3 @@ -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{<:Number}: 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{<:Number}: 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{<:Number}: 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

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.fidelityFunction

Sample a phase integral of the process. The integrate of a random function should be obtained from directly summation without using high-order interpolation (Simpson or trapezoid).

source
SpinShuttling.samplingFunction

Monte-Carlo sampling of any objective function. The function must return Tuple{Real,Real} or Tuple{Vector{<:Real},Vector{<:Real}}

Arguments

  • samplingfunction::Function: The function to be sampled
  • M::Int: Monte-Carlo sampling size

Returns

  • Tuple{Real,Real}: The mean and variance of the sampled function
  • Tuple{Vector{<:Real},Vector{<:Real}}: The mean and variance of the sampled function

Example

f(x) = x^2
-sampling(f, 1000)

Reference

https://en.wikipedia.org/wiki/Standarddeviation#Rapidcalculation_methods

source

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.averagefidelityFunction

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

Arguments

  • model::ShuttlingModel: The spin shuttling model
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-Brownian
  • 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.PinkBrownianFieldType

Pink-Brownian 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
  • C::Cholesky: Cholesky decomposition of the covariance matrices
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 PinkBrownianField
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{<:Number}: 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{<:Number}: 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{<:Number}: 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

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.fidelityFunction

Sample a phase integral of the process. The integrate of a random function should be obtained from directly summation without using high-order interpolation (Simpson or trapezoid).

source
SpinShuttling.samplingFunction

Monte-Carlo sampling of any objective function. The function must return Tuple{Real,Real} or Tuple{Vector{<:Real},Vector{<:Real}}

Arguments

  • samplingfunction::Function: The function to be sampled
  • M::Int: Monte-Carlo sampling size

Returns

  • Tuple{Real,Real}: The mean and variance of the sampled function
  • Tuple{Vector{<:Real},Vector{<:Real}}: The mean and variance of the sampled function

Example

f(x) = x^2
+sampling(f, 1000)

Reference

https://en.wikipedia.org/wiki/Standarddeviation#Rapidcalculation_methods

source

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.averagefidelityFunction

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

Arguments

  • model::ShuttlingModel: The spin shuttling model
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-Brownian
  • 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.PinkBrownianFieldType

Pink-Brownian 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
  • C::Cholesky: Cholesky decomposition of the covariance matrices
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 PinkBrownianField
source
diff --git a/dev/search_index.js b/dev/search_index.js index 10db8ee..664e3c2 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":"$","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"H{noise}(t)=g \\muB \\sumj \\left[B0(x^cj)+\\tilde{B}(x^c{j},t)\\right] Sj^z $ We assume the electrons are adiabatically transported in moving-wave potential with their wave-functions well localized at xj^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 cna be explicitly writen out. $ U(t)=\\exp(-\\frac{i}{\\hbar} \\int0^t H{noise}(\\tau)\\mathrm{d} \\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. $ \\mathcal{E}(\\rho)=\\frac{1}{M} \\sum{k=1}^M Uk \\rho Uk^\\dagger =\\sumk Ek \\rho Ek^\\dagger, \\quad Ek= Uk /\\sqrt{M} $ 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":"$","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"\\mathcal{H}(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 an 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","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 generating 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/","page":"Quick Start","title":"Quick Start","text":"(Image: Random Series)","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,[κₜ,κₓ],σ)","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, travelling time T and length L=v*T, and the stochastic noise expreienced 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 need to specify the discretization size and monte-carlo size 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)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The output will be
 Model for spin shuttling Spin Number: n=1 Initial State: |Ψ₀⟩=[0.707, 0.707] Noise Channel: OrnsteinUhlenbeckField(0, [0.05, 10.0], 0.07071067811865475) Time Discretization: N=301 Process Time: T=400 Shuttling Paths:       ┌──────────────────────────────┐          10 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠖⠋│ x1(t)       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡴⠚⠉⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠴⠚⠁⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠴⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⢀⣠⠖⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⣀⡤⠚⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│           0 │⣠⠴⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             └──────────────────────────────┘             ⠀0⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀400⠀       
The fidelity of the spin state after shuttling can be calculated using numerical integration of the covariance matrix. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"This provides us an overview of the model. It's a single spin shuttling problem with 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 state fidelity after such a quantum process can be obtained by different numerical methods. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f1=averagefidelity(model); # direct integration\n\nf2, f2_err=sampling(model, fidelity, M); # Monte-Carlo sampling","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"For the single spin shuttling at constant velocity, analytical solution is also available. ","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":"NI:0.5172897445804854\nMC:0.5210640948921192\nTH:0.5183394145238882","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The pure dephasing channel is computationaly 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 a element-wise Hadmard product. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Ψ= model.Ψ\nρ=Ψ*Ψ'\nw=dephasingmatrix(model)\nw.*ρ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The final density matrix is shown in output. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"2×2 Matrix{Float64}:\n 0.5 0.0172897\n 0.0172897 0.5","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 results above. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f=(Ψ'*ρt*Ψ)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"0.5172897445804852","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":"User can freely define a n-qubit system with arbitrary initial state. Here, X=[x1,x2...] is an array of function, 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=TwoSpinModel(T0, T1, L, N, B)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"
 Model for spin shuttling Spin Number: n=2 Initial State: |Ψ₀⟩=[0.0, 0.707, -0.707, 0.0] Noise Channel: OrnsteinUhlenbeckField(0, [0.05, 10.0], 0.07071067811865475) Time Discretization: N=501 Process Time: T=125 Shuttling Paths:       ┌──────────────────────────────┐          10 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠉⠉⡹⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ x1(t)       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡜⠁⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ x2(t)       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡴⠋⠀⢀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠀⠀⡰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⢀⡼⠁⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⡴⠋⠀⢀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⣠⠞⠀⠀⡰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⢀⡜⠁⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│           0 │⣴⣋⣀⣀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             └──────────────────────────────┘             ⠀0⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀200⠀       
The system is initialized in the Bell state ketPsi^-. The model encapsulated a model of two spin 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 waiting time 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":"heatmap(collect(model.R.Σ), title=\"cross covariance matrix, two spin EPR\")","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"(Image: Covariance Matrix)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can check that the dephasing of the system and calculate its fidelity as before. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f1=averagefidelity(model)\nf2, f2_err=sampling(model, fidelity, 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":"NI:0.970066663028708\nMC:0.9699908129499957\nTH:0.9700818676163352","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":"guide/","page":"Quick Start","title":"Quick Start","text":"4×4 Matrix{Float64}:\n 0.0 0.0 -0.0 0.0\n 0.0 0.5 -0.470067 0.0\n -0.0 -0.470067 0.5 -0.0\n 0.0 0.0 -0.0 0.0","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{<:Number}: 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{<:Number}: 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 SpinShuttling.jl can be installed by cloning the repository from github.","category":"page"},{"location":"","page":"Home","title":"Home","text":"git clone https://github.com/EigenSolver/SpinShuttling.jl.git","category":"page"},{"location":"","page":"Home","title":"Home","text":"Go to the directory of the project in terminal. ","category":"page"},{"location":"","page":"Home","title":"Home","text":"cd ./SpinShuttling.jl","category":"page"},{"location":"","page":"Home","title":"Home","text":"From the Julia REPL, type ] to enter the Pkg REPL mode and run","category":"page"},{"location":"","page":"Home","title":"Home","text":"pkg> add .","category":"page"},{"location":"","page":"Home","title":"Home","text":" add SpinShuttling","category":"page"},{"location":"","page":"Home","title":"Home","text":"–>","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 numericals tools to simulating dynamics of multi-spin system 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 system 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":"$","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"H{noise}(t)=g \\muB \\sumj \\left[B0(x^cj)+\\tilde{B}(x^c{j},t)\\right] Sj^z $ We assume the electrons are adiabatically transported in moving-wave potential with their wave-functions well localized at xj^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 cna be explicitly writen out. $ U(t)=\\exp(-\\frac{i}{\\hbar} \\int0^t H{noise}(\\tau)\\mathrm{d} \\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. $ \\mathcal{E}(\\rho)=\\frac{1}{M} \\sum{k=1}^M Uk \\rho Uk^\\dagger =\\sumk Ek \\rho Ek^\\dagger, \\quad Ek= Uk /\\sqrt{M} $ 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":"$","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"\\mathcal{H}(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 an 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","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 generating 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/","page":"Quick Start","title":"Quick Start","text":"(Image: Random Series)","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,[κₜ,κₓ],σ)","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, travelling time T and length L=v*T, and the stochastic noise expreienced 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 need to specify the discretization size and monte-carlo size 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)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The output will be
 Model for spin shuttling Spin Number: n=1 Initial State: |Ψ₀⟩=[0.707, 0.707] Noise Channel: OrnsteinUhlenbeckField(0, [0.05, 10.0], 0.07071067811865475) Time Discretization: N=301 Process Time: T=400 Shuttling Paths:       ┌──────────────────────────────┐          10 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠖⠋│ x1(t)       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡴⠚⠉⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠴⠚⠁⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠴⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⢀⣠⠖⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⣀⡤⠚⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│           0 │⣠⠴⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             └──────────────────────────────┘             ⠀0⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀400⠀       
The fidelity of the spin state after shuttling can be calculated using numerical integration of the covariance matrix. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"This provides us an overview of the model. It's a single spin shuttling problem with 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 state fidelity after such a quantum process can be obtained by different numerical methods. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f1=averagefidelity(model); # direct integration\n\nf2, f2_err=sampling(model, fidelity, M); # Monte-Carlo sampling","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"For the single spin shuttling at constant velocity, analytical solution is also available. ","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":"NI:0.5172897445804854\nMC:0.5210640948921192\nTH:0.5183394145238882","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The pure dephasing channel is computationaly 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 a element-wise Hadmard product. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"Ψ= model.Ψ\nρ=Ψ*Ψ'\nw=dephasingmatrix(model)\nw.*ρ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"The final density matrix is shown in output. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"2×2 Matrix{Float64}:\n 0.5 0.0172897\n 0.0172897 0.5","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 results above. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f=(Ψ'*ρt*Ψ)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"0.5172897445804852","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":"User can freely define a n-qubit system with arbitrary initial state. Here, X=[x1,x2...] is an array of function, 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=TwoSpinModel(T0, T1, L, N, B)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"
 Model for spin shuttling Spin Number: n=2 Initial State: |Ψ₀⟩=[0.0, 0.707, -0.707, 0.0] Noise Channel: OrnsteinUhlenbeckField(0, [0.05, 10.0], 0.07071067811865475) Time Discretization: N=501 Process Time: T=125 Shuttling Paths:       ┌──────────────────────────────┐          10 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠉⠉⡹⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ x1(t)       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡜⠁⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ x2(t)       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡴⠋⠀⢀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠀⠀⡰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⠀⢀⡼⠁⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⠀⠀⡴⠋⠀⢀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⠀⠀⣠⠞⠀⠀⡰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             │⠀⢀⡜⠁⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│           0 │⣴⣋⣀⣀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│             └──────────────────────────────┘             ⠀0⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀200⠀       
The system is initialized in the Bell state ketPsi^-. The model encapsulated a model of two spin 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 waiting time 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":"heatmap(collect(model.R.Σ), title=\"cross covariance matrix, two spin EPR\")","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"(Image: Covariance Matrix)","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"We can check that the dephasing of the system and calculate its fidelity as before. ","category":"page"},{"location":"guide/","page":"Quick Start","title":"Quick Start","text":"f1=averagefidelity(model)\nf2, f2_err=sampling(model, fidelity, 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":"NI:0.970066663028708\nMC:0.9699908129499957\nTH:0.9700818676163352","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":"guide/","page":"Quick Start","title":"Quick Start","text":"4×4 Matrix{Float64}:\n 0.0 0.0 -0.0 0.0\n 0.0 0.5 -0.470067 0.0\n -0.0 -0.470067 0.5 -0.0\n 0.0 0.0 -0.0 0.0","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{<:Number}: 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{<:Number}: 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 numericals tools to simulating dynamics of multi-spin system 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 system can be effectively captured, enabling further study on spin dynamics, dephasing and quantum information applications. ","category":"page"}] }