diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 8854ee5..5884cc4 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-08-27T20:24:44","documenter_version":"1.3.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-08-29T19:11:04","documenter_version":"1.3.0"}} \ No newline at end of file diff --git a/dev/assets/animation.gif b/dev/assets/animation.gif new file mode 100644 index 0000000..9ed06cb Binary files /dev/null and b/dev/assets/animation.gif differ diff --git a/dev/assets/animation2spins.gif b/dev/assets/animation2spins.gif new file mode 100644 index 0000000..4976fe2 Binary files /dev/null and b/dev/assets/animation2spins.gif differ diff --git a/dev/guide/35287576.svg b/dev/guide/35287576.svg new file mode 100644 index 0000000..daff82e --- /dev/null +++ b/dev/guide/35287576.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/guide/84bb832a.svg b/dev/guide/84bb832a.svg deleted file mode 100644 index b15f386..0000000 --- a/dev/guide/84bb832a.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/guide/b35f86eb.svg b/dev/guide/b169c014.svg similarity index 88% rename from dev/guide/b35f86eb.svg rename to dev/guide/b169c014.svg index 3df9f7f..3d7f9df 100644 --- a/dev/guide/b35f86eb.svg +++ b/dev/guide/b169c014.svg @@ -1,52 +1,52 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/guide/7e8e2595.svg b/dev/guide/c5f0ebe7.svg similarity index 93% rename from dev/guide/7e8e2595.svg rename to dev/guide/c5f0ebe7.svg index e10faef..a0ec76a 100644 --- a/dev/guide/7e8e2595.svg +++ b/dev/guide/c5f0ebe7.svg @@ -1,45 +1,45 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/dev/guide/27aa19f4.svg b/dev/guide/ecb46e47.svg similarity index 92% rename from dev/guide/27aa19f4.svg rename to dev/guide/ecb46e47.svg index 27d21be..43eb263 100644 --- a/dev/guide/27aa19f4.svg +++ b/dev/guide/ecb46e47.svg @@ -1,49 +1,49 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/dev/guide/index.html b/dev/guide/index.html index 9a10c7d..47c94b5 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,20 +47,20 @@
 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.5186034242790567, 0.12320406635014308)

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.5167902103616699, 0.12543367668916716)

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.5183393343112966
-MC:0.5186034242790567
+println("TH:", f3)
NI:0.5172897445804852
+MC:0.5167902103616699
 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)
 ρt=w.*ρ
2×2 Matrix{ComplexF64}:
-       0.5+0.0im  0.0183393+0.0im
- 0.0183393+0.0im        0.5+0.0im

We can check that the fidelity between the initial and final state is consistent with the results above.

f=(Ψ'*ρt*Ψ)
0.5183393343112966 + 0.0im

Dephasing of entangled spin pairs during shuttling.

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.

ShuttlingModel(n, Ψ, T, N, B, X, R)

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.

One more example is the shuttling of two spin pairs. We can define such a two-spin system.

L=10; σ =sqrt(2)/20; M=5000; N=501; T1=100; T0=25; κₜ=1/20; κₓ=1/0.1;
+       0.5+0.0im  0.0172897+0.0im
+ 0.0172897+0.0im        0.5+0.0im

We can check that the fidelity between the initial and final state is consistent with the results above.

f=(Ψ'*ρt*Ψ)
0.5172897445804852 + 0.0im

Dephasing of entangled spin pairs during shuttling.

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.

ShuttlingModel(n, Ψ, T, N, B, X, R)

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.

One more example is the shuttling of two spin pairs. We can define such a two-spin system.

L=10; σ =sqrt(2)/20; M=5000; N=501; T1=100; T0=25; κₜ=1/20; κₓ=1/0.1;
 B=OrnsteinUhlenbeckField(0,[κₜ,κₓ],σ)
 model=TwoSpinSequentialModel(T0, T1, L, N, B)
 println(model)
Model for spin shuttling
@@ -72,23 +72,23 @@
 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.6238115349420134
-MC:0.6203135439267262
+println("TH:", f3)
NI:0.6234798910481352
+MC:0.6242115680361914
 TH:0.6238118248013063

The density matrix after the channel can be given by the dephasing matrix.

Ψ= model.Ψ
 ρ=Ψ*Ψ'
 w=dephasingmatrix(model)
 
 ρt=w.*ρ
4×4 Matrix{ComplexF64}:
- 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.123812-0.0im  0.0+0.0im
- 0.0+0.0im  -0.123812+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 + 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 diff --git a/dev/index.html b/dev/index.html index e5cb2f2..d795026 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 3cfde22..eb0fb66 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

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